/// <summary> /// Handles a given message /// </summary> /// <param name="client"> /// The client. /// </param> /// <param name="collectionManager"> /// The collection manager. /// </param> /// <param name="resultHandler"> /// The result handler. /// </param> /// <param name="messageText"> /// The message text. /// </param> /// <returns> /// The <see cref="Task"/>. /// </returns> public async Task HandleMessage( IDdpConnectionSender client, ICollectionManager collectionManager, IResultHandler resultHandler, string messageText) { JObject message = JObject.Parse(messageText); if (message["msg"] != null) { var msg = message["msg"]; if (msg != null) { var messageType = (string)msg; foreach (var handler in this.handlers) { if (handler.CanHandle(messageType)) { await handler.HandleMessage(client, collectionManager, resultHandler, messageText); } } } } }
/// <summary> /// Processes the changed message /// </summary> /// <param name="client"> /// The connection to send replies to the server /// </param> /// <param name="collectionManager"> /// The CollectionManager /// </param> /// <param name="resultHandler"> /// The ResultHandler /// </param> /// <param name="message"> /// The message to process /// </param> /// <returns> /// Task to process the message /// </returns> public override Task HandleMessage( IDdpConnectionSender client, ICollectionManager collectionManager, IResultHandler resultHandler, string message) { var changedMessage = JsonConvert.DeserializeObject<Changed>(message); collectionManager.Changed(changedMessage); return Task.FromResult(true); }
/// <summary> /// Processes the ping message /// </summary> /// <param name="client"> /// The connection to send replies to the server /// </param> /// <param name="collectionManager"> /// The CollectionManager /// </param> /// <param name="resultHandler"> /// The ResultHandler /// </param> /// <param name="message"> /// The message to process /// </param> /// <returns> /// Task to process the message /// </returns> public override Task HandleMessage( IDdpConnectionSender client, ICollectionManager collectionManager, IResultHandler resultHandler, string message) { var pingMessage = JsonConvert.DeserializeObject<Ping>(message); var pongReply = new Pong() { Id = pingMessage.Id }; return client.SendObject(pongReply); }
/// <summary> /// Processes the reply message /// </summary> /// <param name="client"> /// The connection to send replies to the server /// </param> /// <param name="collectionManager"> /// The CollectionManager /// </param> /// <param name="resultHandler"> /// The ResultHandler /// </param> /// <param name="message"> /// The message to process /// </param> /// <returns> /// Task to process the message /// </returns> public Task HandleMessage( IDdpConnectionSender client, ICollectionManager collectionManager, IResultHandler resultHandler, string message) { JObject parsedObject = JObject.Parse(message); var result = new ReturnedObject((string)parsedObject["msg"], parsedObject, message); resultHandler.AddResult(result); return Task.FromResult(true); }
/// <summary> /// Handles a given message /// </summary> /// <param name="client"> /// The client. /// </param> /// <param name="collectionManager"> /// The collection manager. /// </param> /// <param name="resultHandler"> /// The result handler. /// </param> /// <param name="message"> /// The message. /// </param> /// <returns> /// The <see cref="Task"/>. The task should be used to execute any long running operation (for instance, needing to send a message to the server as part of handling the message). /// </returns> public abstract Task HandleMessage( IDdpConnectionSender client, ICollectionManager collectionManager, IResultHandler resultHandler, string message);