StartSendMessage() публичный Метод

public StartSendMessage ( SendCompletionHandler callback, byte payload, WriteFlags writeFlags, bool sendEmptyInitialMetadata ) : void
callback SendCompletionHandler
payload byte
writeFlags WriteFlags
sendEmptyInitialMetadata bool
Результат void
Пример #1
0
        public Task SendMessageAsync(TWrite msg)
        {
            lock (myLock)
            {
                CheckNotDisposed();
                CheckStarted();
                CheckNoError();

                if (halfcloseRequested)
                {
                    throw new InvalidOperationException("Already halfclosed.");
                }

                if (writeTcs != null)
                {
                    throw new InvalidOperationException("Only one write can be pending at a time");
                }

                // TODO: wrap serialization...
                byte[] payload = serializer(msg);

                call.StartSendMessage(payload, writeFinishedHandler);
                writeTcs = new TaskCompletionSource <object>();
                return(writeTcs.Task);
            }
        }
Пример #2
0
        /// <summary>
        /// Initiates sending a message. Only one send operation can be active at a time.
        /// completionDelegate is invoked upon completion.
        /// </summary>
        protected void StartSendMessageInternal(TWrite msg, AsyncCompletionDelegate <object> completionDelegate)
        {
            byte[] payload = UnsafeSerialize(msg);

            lock (myLock)
            {
                Preconditions.CheckNotNull(completionDelegate, "Completion delegate cannot be null");
                CheckSendingAllowed();

                call.StartSendMessage(payload, HandleSendFinished);
                sendCompletionDelegate = completionDelegate;
            }
        }
Пример #3
0
        /// <summary>
        /// Initiates sending a message. Only one send operation can be active at a time.
        /// completionDelegate is invoked upon completion.
        /// </summary>
        protected void StartSendMessageInternal(TWrite msg, WriteFlags writeFlags, AsyncCompletionDelegate <object> completionDelegate)
        {
            byte[] payload = UnsafeSerialize(msg);

            lock (myLock)
            {
                Preconditions.CheckNotNull(completionDelegate, "Completion delegate cannot be null");
                CheckSendingAllowed();

                call.StartSendMessage(HandleSendFinished, payload, writeFlags, !initialMetadataSent);

                sendCompletionDelegate = completionDelegate;
                initialMetadataSent    = true;
                streamingWritesCounter++;
            }
        }