protected virtual IWritableQueue GetQueueEntryIntercept(IWritableQueue outQueue, Type t) { Type ofT = typeof(QueueEntryIntercept <>).MakeGenericType(new Type[] { t }); IWritableQueue finalWritableQueue = (IWritableQueue)Activator.CreateInstance(ofT, this, outQueue); return(finalWritableQueue); }
public QueueEntryIntercept(TaskNode sender, IWritableQueue queue) { _innerQueue = queue; _innerTask = sender; lock (_writersByQueue) { if (!_writersByQueue.ContainsKey(queue)) { _writersByQueue[queue] = new List <TaskNode>(); } _writersByQueue[queue].Add(sender); } }
public QueueEntryOrderKeeper(TaskNode owner, IWritableQueue queue) { _innerQueue = queue; _innerTask = owner; }
public void ConnectOutStream <T>(IWritableQueue outQueue, int position) { ConnectOutStream(outQueue, position, typeof(T)); }
internal void ConnectOutStream(IWritableQueue outQueue, int position, Type t) { IWritableQueue intercept = GetQueueEntryIntercept(outQueue, t); this.OutQueues[position] = intercept; }
public StartPoint(Action <IWritableQueue <Tout> > dlg) { Method = dlg; OutQueues = new IWritableQueue[1]; }
protected EndPoint() { OutQueues = new IWritableQueue[0]; }