/// <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); } } }
/// <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(); }
/// <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."); } } } } }
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)); }