/** * *************************************************************************** Begin: Methods to * handle children communication * *************************************************************************** */ public static void askChildren(BasicActor gridActor) throws Exception { // If there are children, then ... if (gridActor.getContext().getChildren().iterator().hasNext()) { BasicRequest request; RequestContent requestContent = gridActor.returnRequestContentToSend(); // check if it is a MultiRequestContainer if (requestContent instanceof MultiRequestContainer) { MultiRequestContainer mrequest = (MultiRequestContainer) requestContent; // send the current message to the children if (mrequest.getCurrentRequestContent() instanceof SingleReceiverRequestContainer) { executeAskSpecificChildrenLogic( gridActor, (SingleReceiverRequestContainer) mrequest.getCurrentRequestContent()); } else { request = new BasicRequest( gridActor.getCurrentTimeStep(), gridActor.downStreamTrace, mrequest.getCurrentRequestContent()); executeAskChildrenLogic(gridActor, request); } } else // normal execution without MultiRequestContainer { request = new BasicRequest( gridActor.getCurrentTimeStep(), gridActor.downStreamTrace, requestContent); executeAskChildrenLogic(gridActor, request); } } gridActor.upStreamTrace.add(gridActor.getSelf()); }