public void initializeChannels(GateDeploymentDescriptor inputGateDescriptor) { channels = new InputChannel[inputGateDescriptor.getNumberOfChannelDescriptors()]; setChannelType(inputGateDescriptor.getChannelType()); final int nicdd = inputGateDescriptor.getNumberOfChannelDescriptors(); for (int i = 0; i < nicdd; i++) { final ChannelDeploymentDescriptor cdd = inputGateDescriptor.getChannelDescriptor(i); channels[i] = new InputChannel<T>( this, i, cdd.getInputChannelID(), cdd.getOutputChannelID(), getChannelType()); } }
/** * Constructs a runtime environment from a task deployment description. * * @param tdd the task deployment description * @param memoryManager the task manager's memory manager component * @param ioManager the task manager's I/O manager component * @param inputSplitProvider the input split provider for this environment * @throws Exception thrown if an error occurs while instantiating the invokable class */ @SuppressWarnings({"unchecked", "rawtypes"}) public RuntimeEnvironment( final TaskDeploymentDescriptor tdd, final MemoryManager memoryManager, final IOManager ioManager, final InputSplitProvider inputSplitProvider, AccumulatorProtocol accumulatorProtocolProxy) throws Exception { this.jobID = tdd.getJobID(); this.taskName = tdd.getTaskName(); this.invokableClass = tdd.getInvokableClass(); this.jobConfiguration = tdd.getJobConfiguration(); this.taskConfiguration = tdd.getTaskConfiguration(); this.indexInSubtaskGroup = tdd.getIndexInSubtaskGroup(); this.currentNumberOfSubtasks = tdd.getCurrentNumberOfSubtasks(); this.memoryManager = memoryManager; this.ioManager = ioManager; this.inputSplitProvider = inputSplitProvider; this.accumulatorProtocolProxy = accumulatorProtocolProxy; this.invokable = this.invokableClass.newInstance(); this.invokable.setEnvironment(this); this.invokable.registerInputOutput(); if (!this.unboundOutputGateIDs.isEmpty() && LOG.isErrorEnabled()) { LOG.error( "Inconsistency: " + this.unboundOutputGateIDs.size() + " unbound output gate IDs left"); } if (!this.unboundInputGateIDs.isEmpty() && LOG.isErrorEnabled()) { LOG.error( "Inconsistency: " + this.unboundInputGateIDs.size() + " unbound output gate IDs left"); } final int noogdd = tdd.getNumberOfOutputGateDescriptors(); for (int i = 0; i < noogdd; ++i) { final GateDeploymentDescriptor gdd = tdd.getOutputGateDescriptor(i); final OutputGate og = this.outputGates.get(i); final ChannelType channelType = gdd.getChannelType(); og.setChannelType(channelType); final int nocdd = gdd.getNumberOfChannelDescriptors(); for (int j = 0; j < nocdd; ++j) { final ChannelDeploymentDescriptor cdd = gdd.getChannelDescriptor(j); switch (channelType) { case NETWORK: og.createNetworkOutputChannel(og, cdd.getOutputChannelID(), cdd.getInputChannelID()); break; case INMEMORY: og.createInMemoryOutputChannel(og, cdd.getOutputChannelID(), cdd.getInputChannelID()); break; default: throw new IllegalStateException("Unknown channel type"); } } } final int noigdd = tdd.getNumberOfInputGateDescriptors(); for (int i = 0; i < noigdd; ++i) { final GateDeploymentDescriptor gdd = tdd.getInputGateDescriptor(i); final InputGate ig = this.inputGates.get(i); final ChannelType channelType = gdd.getChannelType(); ig.setChannelType(channelType); final int nicdd = gdd.getNumberOfChannelDescriptors(); for (int j = 0; j < nicdd; ++j) { final ChannelDeploymentDescriptor cdd = gdd.getChannelDescriptor(j); switch (channelType) { case NETWORK: ig.createNetworkInputChannel(ig, cdd.getInputChannelID(), cdd.getOutputChannelID()); break; case INMEMORY: ig.createInMemoryInputChannel(ig, cdd.getInputChannelID(), cdd.getOutputChannelID()); break; default: throw new IllegalStateException("Unknown channel type"); } } } }