/// <summary>
 ///
 /// </summary>
 /// <param name="message"></param>
 protected void SendToSubscribers(TransportMessage message)
 {
     TracerHelper.TraceEntry(message.GetType().Name + " to " + _subscribers.Count + " subscribers");
     lock (this)
     {
         foreach (KeyValuePair <ArbiterClientId, TransportInfo> pair in _subscribers)
         {
             SendResponding(pair.Value, message);
         }
     }
 }
Пример #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="message"></param>
        void SendToSubscriber(TransportMessage message)
        {
            TracerHelper.TraceEntry(message.GetType().Name);

            lock (this)
            {
                if (_subscriberTransportMessageInfo != null)
                {
                    this.SendResponding(_subscriberTransportMessageInfo, message);
                }
            }

            TracerHelper.TraceExit();
        }
Пример #3
0
        /// <summary>
        ///
        /// </summary>
        public void ReceiveResponce(TransportMessage message)
        {
            if (message != null &&
                message.GetType() != _responceTypeRequired &&
                message.GetType().IsSubclassOf(_responceTypeRequired) == false)
            {
                SystemMonitor.Error("Session received invalid responce message type [expected (" + _responceTypeRequired.Name + "), received(" + message.GetType().Name + ")]. Message ignored.");
            }
            else
            {
                if (message == null)
                {// We received a NULL signalling to stop wait and abort session.
                    _sessionEndEvent.Set();
                    return;
                }
                else
                {
                    lock (_responcesReceived)
                    {
                        if (_responcesReceived.Count < _responcesRequired)
                        {
                            _responcesReceived.Add(message);

                            if (_responcesReceived.Count == _responcesRequired)
                            {
                                _sessionEndEvent.Set();
                            }
                        }
                        else
                        {// One more requestMessage responce received.
                            TracerHelper.TraceError("Session received too many responce messages. Message ignored.");
                        }
                    }
                }
            }
        }
        /// <summary>
        /// 
        /// </summary>
        public void ReceiveResponce(TransportMessage message)
        {
            if (message != null
                && message.GetType() != _responceTypeRequired
                && message.GetType().IsSubclassOf(_responceTypeRequired) == false)
            {
                SystemMonitor.Error("Session received invalid responce message type [expected (" + _responceTypeRequired.Name + "), received(" + message.GetType().Name + ")]. Message ignored.");
            }
            else
            {
                if (message == null)
                {// We received a NULL signalling to stop wait and abort session.
                    _sessionEndEvent.Set();
                    return;
                }
                else
                {
                    lock (_responcesReceived)
                    {
                        if (_responcesReceived.Count < _responcesRequired)
                        {
                            _responcesReceived.Add(message);

                            if (_responcesReceived.Count == _responcesRequired)
                            {
                                _sessionEndEvent.Set();
                            }
                        }
                        else
                        {// One more requestMessage responce received.
                            TracerHelper.TraceError("Session received too many responce messages. Message ignored.");
                        }
                    }
                }
            }
        }
Пример #5
0
        public Task OnReceive(ProtocolType protocol, EndPoint endPoint, TransportMessage message)
        {
            var payload = message.DeserializeMessage();

            _logger.Verbose("OnReceive({Protocol}://{EndPoint} -> {Message})", protocol, endPoint, message.GetType());
            return(OnMessage?.Invoke(endPoint.ToUri(protocol), payload));
        }