Skip to content

Commit

Permalink
incorporate latest changes
Browse files Browse the repository at this point in the history
  • Loading branch information
nkuehnel committed Nov 21, 2023
1 parent 3f7b8b8 commit 8ae0000
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -137,19 +137,19 @@ public void handleEvent(PersonStuckEvent event) {

// Event handling: We don't want to process events in notifyMobsimAfterSimStep,
// so we do it at the next time step
private record RejectionItem(Id<Request> requestId, Id<Person> personId, String cause) {
private record RejectionItem(Id<Request> requestId, List<Id<Person>> personIds, String cause) {
}

private final ConcurrentLinkedQueue<RejectionItem> rejections = new ConcurrentLinkedQueue<>();

private void processRejection(PassengerRequest request, String cause) {
rejections.add(new RejectionItem(request.getId(), request.getPassengerId(), cause));
rejections.add(new RejectionItem(request.getId(), request.getPassengerIds(), cause));
}

private void flushRejections(double now) {
for (RejectionItem item : rejections) {
eventsManager.processEvent(
new PassengerRequestRejectedEvent(now, mode, item.requestId, item.personId, item.cause));
new PassengerRequestRejectedEvent(now, mode, item.requestId, item.personIds, item.cause));
}

rejections.clear();
Expand Down Expand Up @@ -394,10 +394,10 @@ private void processRejections(double now) {
// Stuck

private void processStuckAgents(double now) {
bookingQueue.removeIf(request -> stuckPersonsIds.contains(request.getPassengerId()));
bookingQueue.removeIf(request -> stuckPersonsIds.containsAll(request.getPassengerIds()));

for (RequestItem item : requests.values()) {
if (stuckPersonsIds.contains(item.request.getPassengerId())) {
if (stuckPersonsIds.containsAll(item.request.getPassengerIds())) {
cancel(item.request.getId());
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public void cancelTest() {
/*
* Agent personA is performing three drt legs during the day. Agent personB does
* exactly the same in parallel, both prebook there requests.
*
*
* We cancel the first request of personA. We check that the other reservations
* are automatically rejected as soon as the person is stuck.
*/
Expand Down Expand Up @@ -198,14 +198,14 @@ public void handleEvent(PassengerDroppedOffEvent event) {

@Override
public void handleEvent(PassengerRequestSubmittedEvent event) {
if (event.getPersonId().equals(personId)) {
if (event.getPersonIds().contains(personId)) {
submittedCount++;
}
}

@Override
public void handleEvent(PassengerRequestRejectedEvent event) {
if (event.getPersonId().equals(personId)) {
if (event.getPersonIds().contains(personId)) {
rejectedCount++;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -382,9 +382,10 @@ private class RequestListener implements DrtRequestSubmittedEventHandler, Passen
PassengerDroppedOffEventHandler, PassengerRequestRejectedEventHandler {
@Override
public void handleEvent(DrtRequestSubmittedEvent event) {
requestInfo.computeIfAbsent(event.getPersonIds().stream().map(Object::toString).collect(Collectors.joining("-")), id -> new RequestInfo()).submissionTime = event
String ids = event.getPersonIds().stream().map(Object::toString).collect(Collectors.joining("-"));
requestInfo.computeIfAbsent(ids, id -> new RequestInfo()).submissionTime = event
.getTime();
requestInfo.computeIfAbsent(event.getPersonId().toString(), id -> new RequestInfo()).submissionTimes
requestInfo.computeIfAbsent(ids, id -> new RequestInfo()).submissionTimes
.add(event.getTime());

}
Expand Down

0 comments on commit 8ae0000

Please sign in to comment.