public StartSendMessage ( SendCompletionHandler callback, byte payload, WriteFlags writeFlags, bool sendEmptyInitialMetadata ) : void | ||
callback | SendCompletionHandler | |
payload | byte | |
writeFlags | WriteFlags | |
sendEmptyInitialMetadata | bool | |
return | void |
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); } }
/// <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; } }
/// <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++; } }