private void AddTransportData(PersistentResponse response) { if (_pollDelay != TimeSpan.Zero) { response.LongPollDelay = (long)_pollDelay.TotalMilliseconds; } }
protected virtual Task <bool> OnMessageReceived(PersistentResponse response) { if (response == null) { throw new ArgumentNullException("response"); } response.Reconnect = HostShutdownToken.IsCancellationRequested; if (IsTimedOut || response.Aborted) { _busRegistration.Dispose(); if (response.Aborted) { // If this was a clean disconnect raise the event. return(Abort().Then(() => TaskAsyncHelper.False)); } } if (response.Terminal) { // End the request on the terminal response _transportLifetime.Complete(); return(TaskAsyncHelper.False); } // Ensure delegate continues to use the C# Compiler static delegate caching optimization. return(Send(response).Then(() => TaskAsyncHelper.True)); }
public override Task Send(PersistentResponse response) { OnSendingResponse(response); var context = new SendContext(this, response); // Ensure delegate continues to use the C# Compiler static delegate caching optimization. return(EnqueueOperation(state => PerformSend(state), context)); }
public override Task Send(PersistentResponse response) { OnSendingResponse(response); var context = new SendContext(this, response); // Ensure delegate continues to use the C# Compiler static delegate caching optimization. return EnqueueOperation(state => PerformSend(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)); }
protected override Task <bool> OnMessageReceived(PersistentResponse response) { if (response == null) { throw new ArgumentNullException("response"); } response.Reconnect = HostShutdownToken.IsCancellationRequested; Task task = TaskAsyncHelper.Empty; if (response.Aborted) { // If this was a clean disconnect then raise the event task = Abort(); } if (response.Terminal) { // If the response wasn't sent, send it before ending the request if (!_responseSent) { // Ensure delegate continues to use the C# Compiler static delegate caching optimization. return(task.Then((transport, resp) => transport.Send(resp), this, response) .Then(() => { _transportLifetime.Complete(); return TaskAsyncHelper.False; })); } // Ensure delegate continues to use the C# Compiler static delegate caching optimization. return(task.Then(() => { _transportLifetime.Complete(); return TaskAsyncHelper.False; })); } // Mark the response as sent _responseSent = true; // Send the response and return false // Ensure delegate continues to use the C# Compiler static delegate caching optimization. return(task.Then((transport, resp) => transport.Send(resp), this, response) .Then(() => TaskAsyncHelper.False)); }
protected virtual void OnSendingResponse(PersistentResponse response) { Heartbeat.MarkConnection(this); }
protected virtual Task<bool> OnMessageReceived(PersistentResponse response) { if (response == null) { throw new ArgumentNullException("response"); } response.Reconnect = HostShutdownToken.IsCancellationRequested; if (IsTimedOut || response.Aborted) { _busRegistration.Dispose(); if (response.Aborted) { // If this was a clean disconnect raise the event. return Abort().Then(() => TaskAsyncHelper.False); } } if (response.Terminal) { // End the request on the terminal response _transportLifetime.Complete(); return TaskAsyncHelper.False; } // Ensure delegate continues to use the C# Compiler static delegate caching optimization. return Send(response).Then(() => TaskAsyncHelper.True); }
protected override Task<bool> OnMessageReceived(PersistentResponse response) { if (response == null) { throw new ArgumentNullException("response"); } response.Reconnect = HostShutdownToken.IsCancellationRequested; Task task = TaskAsyncHelper.Empty; if (response.Aborted) { // If this was a clean disconnect then raise the event task = Abort(); } if (response.Terminal) { // If the response wasn't sent, send it before ending the request if (!_responseSent) { // Ensure delegate continues to use the C# Compiler static delegate caching optimization. return task.Then((transport, resp) => transport.Send(resp), this, response) .Then(() => { _transportLifetime.Complete(); return TaskAsyncHelper.False; }); } // Ensure delegate continues to use the C# Compiler static delegate caching optimization. return task.Then(() => { _transportLifetime.Complete(); return TaskAsyncHelper.False; }); } // Mark the response as sent _responseSent = true; // Send the response and return false // Ensure delegate continues to use the C# Compiler static delegate caching optimization. return task.Then((transport, resp) => transport.Send(resp), this, response) .Then(() => TaskAsyncHelper.False); }
internal static void PopulateResponseState(PersistentResponse response, DiffSet<string> groupSet, JsonSerializer serializer, IProtectedData protectedData, string connectionId) { bool anyChanges = groupSet.DetectChanges(); if (anyChanges) { // Create a protected payload of the sorted list IEnumerable<string> groups = groupSet.GetSnapshot(); // Remove group prefixes before any thing goes over the wire string groupsString = connectionId + ':' + serializer.Stringify(PrefixHelper.RemoveGroupPrefixes(groups)); ; // The groups token response.GroupsToken = protectedData.Protect(groupsString, Purposes.Groups); } }
private void PopulateResponseState(PersistentResponse response) { PopulateResponseState(response, _groups, _serializer, _protectedData, _connectionId); }
private PersistentResponse GetResponse(MessageResult result) { // Do a single sweep through the results to process commands and extract values ProcessResults(result); Debug.Assert(WriteCursor != null, "Unable to resolve the cursor since the method is null"); var response = new PersistentResponse(_excludeMessage, WriteCursor); response.Terminal = result.Terminal; if (!result.Terminal) { // Only set these properties if the message isn't terminal response.Messages = result.Messages; response.Aborted = _aborted; response.TotalCount = result.TotalCount; response.Initializing = _initializing; _initializing = false; } PopulateResponseState(response); _counters.ConnectionMessagesReceivedTotal.IncrementBy(result.TotalCount); _counters.ConnectionMessagesReceivedPerSec.IncrementBy(result.TotalCount); return response; }
public override Task Send(PersistentResponse response) { OnSendingResponse(response); return Send((object)response); }
protected virtual void OnSendingResponse(PersistentResponse response) { Heartbeat.MarkConnection(this); }
public override Task Send(PersistentResponse response) { OnSendingResponse(response); return(Send((object)response)); }
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 abstract Task Send(PersistentResponse response);
private void AddTransportData(PersistentResponse response) { if (_pollDelay != TimeSpan.Zero) { response.LongPollDelay = (long)_pollDelay.TotalMilliseconds; } }
public abstract Task Send(PersistentResponse response);