123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace SuperWebSocket.SubProtocol
- {
- /// <summary>
- /// Async json sub command
- /// </summary>
- /// <typeparam name="TJsonCommandInfo">The type of the json command info.</typeparam>
- public abstract class AsyncJsonSubCommand<TJsonCommandInfo> : AsyncJsonSubCommand<WebSocketSession, TJsonCommandInfo>
- {
- }
- /// <summary>
- /// Async json sub command
- /// </summary>
- /// <typeparam name="TWebSocketSession">The type of the web socket session.</typeparam>
- /// <typeparam name="TJsonCommandInfo">The type of the json command info.</typeparam>
- public abstract class AsyncJsonSubCommand<TWebSocketSession, TJsonCommandInfo> : JsonSubCommandBase<TWebSocketSession, TJsonCommandInfo>
- where TWebSocketSession : WebSocketSession<TWebSocketSession>, new()
- {
- private Action<TWebSocketSession, string, TJsonCommandInfo> m_AsyncJsonCommandAction;
- /// <summary>
- /// Initializes a new instance of the <see cref="AsyncJsonSubCommand<TWebSocketSession, TJsonCommandInfo>"/> class.
- /// </summary>
- public AsyncJsonSubCommand()
- {
- m_AsyncJsonCommandAction = ExecuteAsyncJsonCommand;
- }
- /// <summary>
- /// Executes the json command.
- /// </summary>
- /// <param name="session">The session.</param>
- /// <param name="commandInfo">The command info.</param>
- protected override void ExecuteJsonCommand(TWebSocketSession session, TJsonCommandInfo commandInfo)
- {
- m_AsyncJsonCommandAction.BeginInvoke(session, session.CurrentToken, commandInfo, null, session);
- }
- /// <summary>
- /// Executes the async json command.
- /// </summary>
- /// <param name="session">The session.</param>
- /// <param name="token">The token.</param>
- /// <param name="commandInfo">The command info.</param>
- protected abstract void ExecuteAsyncJsonCommand(TWebSocketSession session, string token, TJsonCommandInfo commandInfo);
- private void OnAsyncJsonCommandExecuted(IAsyncResult result)
- {
- var session = (TWebSocketSession)result.AsyncState;
- try
- {
- m_AsyncJsonCommandAction.EndInvoke(result);
- }
- catch (Exception e)
- {
- session.Logger.Error(e);
- }
- }
- /// <summary>
- /// Sends the json message.
- /// </summary>
- /// <param name="session">The session.</param>
- /// <param name="token">The token.</param>
- /// <param name="content">The content.</param>
- protected void SendJsonMessage(TWebSocketSession session, string token, object content)
- {
- session.Send(GetJsonMessage(session, this.Name, token, content));
- }
- /// <summary>
- /// Sends the json message.
- /// </summary>
- /// <param name="session">The session.</param>
- /// <param name="name">The name.</param>
- /// <param name="token">The token.</param>
- /// <param name="content">The content.</param>
- protected void SendJsonMessage(TWebSocketSession session, string name, string token, object content)
- {
- session.Send(GetJsonMessage(session, name, token, content));
- }
- }
- }
|