/// <summary> /// Method called when new JSON message has incommed. /// </summary> /// <param name="sender">WAMP session for client sending a message</param> /// <param name="json">JSON string</param> protected void ReceiveJson(IWampSession sender, string json) { var message = MessageProvider.DeserializeMessage(json); if (message != null) { OnMessageReceived(sender, message); } }
/// <summary> /// Creates na new <see cref="ProcedureContext"/> object used to schedule remote procedure call. /// </summary> /// <param name="message">Call message used for RPC request</param> /// <param name="definition">Definition of procedure to be called</param> /// <param name="session">WAMP message sender session object</param> /// <returns></returns> public virtual ProcedureContext CreateProcedureContext(CallMessage message, ProcedureDefinition definition, IWampSession session) { var procedureContext = new ProcedureContext { Arguments = message.Arguments, CallId = message.CallId, ProcedureDefinition = definition, RequesterSession = session }; return procedureContext; }
/// <summary> /// Creates a new <see cref="MessageContext"/> for incoming WAMP message. /// </summary> /// <param name="message">Incoming WAMP message</param> /// <param name="sender">WAMP session for client sending a message</param> /// <returns>A new instance of message wrapper context</returns> protected virtual MessageContext CreateMessageContext(IMessage message, IWampSession sender) { return(new MessageContext { Message = message, HostAddress = AddressUri.ToString(), SenderSession = sender, Procedures = Procedures, Response = ResponseQueue, Topics = Topics, Scheduler = Scheduler }); }
/// <summary> /// Method handler for incoming WAMP messages. /// </summary> /// <param name="sender">WAMP session for client sending a message</param> /// <param name="message">Incoming WAMP message</param> protected virtual void OnMessageReceived(IWampSession sender, IMessage message) { var messageContext = CreateMessageContext(message, sender); IMessageHandler handler; OnMessageHandling(messageContext); if (!messageContext.Cancel && Handlers.TryGetValue(message.Type, out handler)) { handler.Handle(messageContext); OnMessageHandled(messageContext); } }
/// <summary> /// Stores new WAMP session. /// </summary> /// <param name="session"></param> public void AddSession(IWampSession session) { _sessions.Add(session.SessionId, session); }
/// <summary> /// Creates na new <see cref="ProcedureContext"/> object used to schedule remote procedure call. /// </summary> /// <param name="message">Call message used for RPC request</param> /// <param name="definition">Definition of procedure to be called</param> /// <param name="session">WAMP message sender session object</param> /// <returns></returns> public virtual ProcedureContext CreateProcedureContext(CallMessage message, ProcedureDefinition definition, IWampSession session) { var procedureContext = new ProcedureContext { Arguments = message.Arguments, CallId = message.CallId, ProcedureDefinition = definition, RequesterSession = session }; return(procedureContext); }
/// <summary> /// Method called when existing WAMP client has been disconnected. /// </summary> /// <param name="session">Existing WAMP session associated with connected WAMP client</param> protected virtual void OnDisconnected(IWampSession session) { Sessions.RemoveSession(session.SessionId); }
/// <summary> /// Creates a new <see cref="MessageContext"/> for incoming WAMP message. /// </summary> /// <param name="message">Incoming WAMP message</param> /// <param name="sender">WAMP session for client sending a message</param> /// <returns>A new instance of message wrapper context</returns> protected virtual MessageContext CreateMessageContext(IMessage message, IWampSession sender) { return new MessageContext { Message = message, HostAddress = AddressUri.ToString(), SenderSession = sender, Procedures = Procedures, Response = ResponseQueue, Topics = Topics, Scheduler = Scheduler }; }