Ejemplo n.º 1
0
        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();
            }
        }