public bool RegisterStream(int associationId, Messages.StartStream message) { var protoStream = new ProtoStream(message.Length, message.StreamName, message.ContentType, null); var stream = _streamManager.GetStream(protoStream); if (stream == null) return false; var pendingStream = new PendingReceiveStream( message.Length, message.StreamName, message.ContentType, associationId, stream ); _streams.Add(pendingStream.AssociationId, pendingStream); return true; }
public bool RegisterStream(int associationId, Messages.StartStream message) { var stream = _streamManager.GetStream(message.Length); if (stream == null) return false; var pendingStream = new PendingReceiveStream( message.Length, message.StreamName, message.ContentType, message.Attachment ? StreamDisposition.Attachment : StreamDisposition.Inline, associationId, stream ); _streams.Add(pendingStream.AssociationId, pendingStream); RaiseEvent(pendingStream, StreamTransferEventType.Start); return true; }
public ProtocolError? TryGetStream(int associationId, out PendingReceiveStream stream) { if (!_streams.TryGetValue(associationId, out stream)) return ProtocolError.InvalidStreamAssociationId; if (stream.IsDisposed) { RemoveStream(stream); stream = null; return ProtocolError.InvalidStreamPackageType; } return null; }
private void RemoveStream(PendingReceiveStream stream) { if (stream.IsRequested && stream.IsCompleted) { _streams.Remove(stream.AssociationId); stream.Dispose(); } }