private Task ProcessMessages(ITransportConnection connection, Func <Task> initialize) { var disposer = new Disposer(); var cancelContext = new LongPollingTransportContext(this, disposer); // Ensure delegate continues to use the C# Compiler static delegate caching optimization. IDisposable registration = ConnectionEndToken.SafeRegister(state => Cancel(state), cancelContext); var lifeTime = new RequestLifetime(this, _requestLifeTime, registration); var messageContext = new MessageContext(this, lifeTime); try { // Ensure delegate continues to use the C# Compiler static delegate caching optimization. IDisposable subscription = connection.Receive(MessageId, (response, state) => OnMessageReceived(response, state), MaxMessages, messageContext); // Set the disposable disposer.Set(subscription); // Ensure delegate continues to use the C# Compiler static delegate caching optimization. initialize().Catch((ex, state) => OnError(ex, state), messageContext); } catch (Exception ex) { lifeTime.Complete(ex); } return(_requestLifeTime.Task); }
public override Task Send(object value) { var context = new LongPollingTransportContext(this, value); // This overload is only used in response to /send requests, // so the response will be uninitialized. return(EnqueueOperation(state => PerformCompleteSend(state), context)); }
public override Task Send(PersistentResponse response) { Heartbeat.MarkConnection(this); AddTransportData(response); // This overload is only used in response to /connect, /poll and /reconnect requests, // so the response will have already been initialized by ProcessMessages. var context = new LongPollingTransportContext(this, response); return(EnqueueOperation(state => PerformPartialSend(state), context)); }
public override Task Send(object value) { var context = new LongPollingTransportContext(this, value); // This overload is only used in response to /send requests, // so the response will be uninitialized. return EnqueueOperation(state => PerformCompleteSend(state), context); }
public override Task Send(PersistentResponse response) { Heartbeat.MarkConnection(this); AddTransportData(response); // This overload is only used in response to /connect, /poll and /reconnect requests, // so the response will have already been initialized by ProcessMessages. var context = new LongPollingTransportContext(this, response); return EnqueueOperation(state => PerformPartialSend(state), context); }
public Task Send(object value) { var context = new LongPollingTransportContext(this, value); return(EnqueueOperation(state => PerformSend(state), context)); }
private Task ProcessMessages(ITransportConnection connection, Func<Task> initialize) { var disposer = new Disposer(); var cancelContext = new LongPollingTransportContext(this, disposer); // Ensure delegate continues to use the C# Compiler static delegate caching optimization. IDisposable registration = ConnectionEndToken.SafeRegister(state => Cancel(state), cancelContext); var lifeTime = new RequestLifetime(this, _requestLifeTime, registration); var messageContext = new MessageContext(this, lifeTime); try { // Ensure delegate continues to use the C# Compiler static delegate caching optimization. IDisposable subscription = connection.Receive(MessageId, (response, state) => OnMessageReceived(response, state), MaxMessages, messageContext); // Set the disposable disposer.Set(subscription); // Ensure delegate continues to use the C# Compiler static delegate caching optimization. initialize().Catch((ex, state) => OnError(ex, state), messageContext); } catch (Exception ex) { lifeTime.Complete(ex); } return _requestLifeTime.Task; }
public Task Send(object value) { var context = new LongPollingTransportContext(this, value); return EnqueueOperation(state => PerformSend(state), context); }