private void ProcessMessage(IServer server, ISession session, object message) { if (message is Ping) { server.Send(new Pong(), session); } else if (message is BroadSubscriber) { BroadSubscriber bs = (BroadSubscriber)message; RegisterRemoteSubscribers(bs.NodeID, bs.Name); Loger.Process(LogType.DEBUG, "registered remote subscriber [{0}]", bs.Name); } else if (message is GetSubscribers) { GetSubscribersResponse response = new GetSubscribersResponse(); response.NodeID = ID; response.Subscribers = mLocalSubscriberCenter.GetAll(); server.Send(response, session); } else if (message is BroadRemoveSubscriber) { BroadRemoveSubscriber remove = (BroadRemoveSubscriber)message; UnRegisterRemoteSubscribers(remove.Name); } else if (message is Message) { ((Message)message).Track("node receive message"); Publish((Message)message); ((Message)message).EndTrack("node receive message completed!", this); } else { } }
private void OnRemoteNodeReceive(INodeConnection connecter, object message) { if (message is GetSubscribersResponse) { GetSubscribersResponse response = (GetSubscribersResponse)message; RegisterRemoteSubscribers(response.NodeID, response.Subscribers); Loger.Process(LogType.INFO, "sync remote subscribers from [{0}]", response.NodeID); } else if (message is Message) { Publish((Message)message); } }
public GetSubscribersResponse GetSubscriber(GetSubscribersRequest request) { var response = new GetSubscribersResponse() { Request = request, ResponseToken = Guid.NewGuid() }; try { response.Subscribers = _repository.FindAll().MapToViews(); response.Success = true; } catch (Exception ex) { response.Message = ex.Message; response.Success = false; } return(response); }