internal Task SetReponseAsync(OicMessage message) { lock (_reponseLock) _response = message; _responseTcs.TrySetResult(true); return(Task.Run(() => OnResponse?.Invoke(this, new OicRequestResponseEventArgs { Message = message }))); }
public async Task <OicRequestHandle> BroadcastAsync(OicMessage message) { var handle = GetHandle(message); await Task.WhenAll(_transports.Select(t => { _logger?.LogDebug($"Broadcasting to {t}"); return(t.BroadcastMessageAsync(message)); })); return(handle); }
public async Task <OicRequestHandle> SendAsync(OicMessage message, IOicEndpoint endpoint = null) { var handle = GetHandle(message); if (endpoint != null) { await endpoint.Transport.SendMessageAsync(message, endpoint); } else { await Task.WhenAny(_transports.Select(t => { _logger?.LogDebug($"Sending message (requestId: {handle.RequestId}) to {t}"); return(t.SendMessageAsync(message)); })); } return(handle); }
public OicRequestHandle GetHandle(OicMessage message) { if (message.RequestId == 0) { message.RequestId = GetNextRequestId(); } lock (_requestHandlers) { if (_requestHandlers.TryGetValue(message.RequestId, out var existingHandle)) { return(existingHandle); } var handle = new OicRequestHandle(this, message.RequestId); _requestHandlers.Add(handle.RequestId, handle); return(handle); } }