Exemplo n.º 1
0
        internal Task SetReponseAsync(OicMessage message)
        {
            lock (_reponseLock)
                _response = message;

            _responseTcs.TrySetResult(true);
            return(Task.Run(() => OnResponse?.Invoke(this, new OicRequestResponseEventArgs {
                Message = message
            })));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
            }
        }