public override void MultiSubscribe <TDatasetObserver>(Expression <Func <TDatasetObserver> > observer, int runsCount) { var inputConnections = _clientTerminal.ConnectionData.InputConnections; for (int i = 0; i < runsCount; i++) { IShardedDataset <TKeyO, TPayloadO, TDataSetO> deployedDataset = null; if (!_isDeployed) { deployedDataset = Deploy(); } if (!_isDeployed && deployedDataset == null) { throw new InvalidOperationException(); } else { foreach (var key in inputConnections.Keys) { inputConnections[key].WriteInt32((int)CRATaskMessageType.READY); inputConnections[key].WriteByteArray(Encoding.UTF8.GetBytes(SerializationHelper.Serialize(observer))); } } } foreach (var key in inputConnections.Keys) { inputConnections[key].WriteInt32((int)CRATaskMessageType.RELEASE); } }
public IShardedDataset <TKeyO, TPayloadO, TDatasetO> Transform <TKey2, TPayload2, TDataset2, TKeyO, TPayloadO, TDatasetO>( IShardedDataset <TKey2, TPayload2, TDataset2> input2, Expression <Func <TDataset, TDataset2, TDatasetO> > transformer) where TDataset2 : IDataset <TKey2, TPayload2> where TDatasetO : IDataset <TKeyO, TPayloadO> { transformer = new ClosureEliminator().Visit(transformer) as Expression <Func <TDataset, TDataset2, TDatasetO> >; return(new DeployableShardedDataset <TKey, TPayload, TDataset, TKey2, TPayload2, TDataset2, TKeyO, TPayloadO, TDatasetO>(this, input2, transformer)); }
internal DeployableShardedDataset(IShardedDataset <TKeyI1, TPayloadI1, TDataSetI1> input, Expression <Func <TDataSetI1, TDataSetO> > transform) { _input1 = input; _input2 = null; _operationType = OperatorType.UnaryTransform; var closureEliminator = new ClosureEliminator(); _unaryTransformer = closureEliminator.Visit(transform) as Expression <Func <TDataSetI1, TDataSetO> >; _binaryTransformer = null; _splitter = null; _merger = null; _moveDescriptor = null; }
internal DeployableShardedDataset( IDataProvider dataProvider, IShardedDataset <TKeyI1, TPayloadI1, TDataSetI1> input, Expression <Func <TDataSetI1, IMoveDescriptor, TDataSetI2[]> > splitter, Expression <Func <TDataSetI2[], IMoveDescriptor, TDataSetO> > merger, IMoveDescriptor moveDescriptor) : base(dataProvider) { _input1 = input; _input2 = null; _operationType = OperatorType.Move; var closureEliminator = new ClosureEliminator(); _splitter = closureEliminator.Visit(splitter) as Expression <Func <TDataSetI1, IMoveDescriptor, TDataSetI2[]> >; _merger = closureEliminator.Visit(merger) as Expression <Func <TDataSetI2[], IMoveDescriptor, TDataSetO> >; _moveDescriptor = moveDescriptor; _unaryTransformer = null; _binaryTransformer = null; _dataProvider = dataProvider; }
internal DeployableShardedDataset( IDataProvider dataProvider, IShardedDataset <TKeyI1, TPayloadI1, TDataSetI1> input1, IShardedDataset <TKeyI2, TPayloadI2, TDataSetI2> input2, Expression <Func <TDataSetI1, TDataSetI2, TDataSetO> > transform) : base(dataProvider) { _input1 = input1; _input2 = input2; _operationType = OperatorType.BinaryTransform; var closureEliminator = new ClosureEliminator(); _binaryTransformer = closureEliminator.Visit(transform) as Expression <Func <TDataSetI1, TDataSetI2, TDataSetO> >; _unaryTransformer = null; _splitter = null; _merger = null; _moveDescriptor = null; _dataProvider = dataProvider; }