public void KeepStream(IStreamProxy streamProxy, int iIndex) { DateTime timeNow = DateTime.UtcNow; IStreamProxy prevPostedStream = null; lock (_proxy.SyncRoot) { if (!(_iPostedStreamID < 0) && _timePostedStream > timeNow) { prevPostedStream = _proxy[_iPostedStreamID]; } if (null != _proxy[iIndex]) { _iPostedStreamID = iIndex; _timePostedStream = timeNow.AddMinutes(2); } } if (null != prevPostedStream) { prevPostedStream.Shutdown(); } }
public int AddNewStream(IStreamProxy streamProxy) { int ndx = 0; lock (_proxy.SyncRoot) { while (ndx < _proxy.Length && null != _proxy[ndx]) { ndx++; } if (ndx < _proxy.Length) { _proxy[ndx] = streamProxy; } else { ndx = -1; } } if (ndx < 0) { throw new Exception("Maximum stream count exceeded."); } return ndx; }
public void DeleteStream(IStreamProxy streamProxy, int iIndex) { lock (_proxy.SyncRoot) { if (_iPostedStreamID == iIndex) { _iPostedStreamID = -1; } _proxy[iIndex] = null; } }
public MultiNodeStreamBridge(INodeMapping serverMapping, INodeUriProvider nodeUriProvider, IStreamProxy streamProxy) { _serverMapping = serverMapping; _nodeUriProvider = nodeUriProvider; _streamProxy = streamProxy; }