123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using SuperSocket.SocketBase.Protocol;
- using SuperSocket.SocketBase;
- namespace SuperWebSocket.Protocol
- {
- /// <summary>
- /// Protocol processor interface
- /// </summary>
- public interface IProtocolProcessor
- {
- /// <summary>
- /// Gets a value indicating whether this instance can send binary data.
- /// </summary>
- /// <value>
- /// <c>true</c> if this instance can send binary data; otherwise, <c>false</c>.
- /// </value>
- bool CanSendBinaryData { get; }
- /// <summary>
- /// Gets the close status clode.
- /// </summary>
- ICloseStatusCode CloseStatusClode { get; }
- /// <summary>
- /// Gets or sets the next processor.
- /// </summary>
- /// <value>
- /// The next processor.
- /// </value>
- IProtocolProcessor NextProcessor { get; set; }
- /// <summary>
- /// Handshakes the specified session.
- /// </summary>
- /// <param name="session">The session.</param>
- /// <param name="previousFilter">The previous filter.</param>
- /// <param name="dataFrameReader">The data frame reader.</param>
- /// <returns></returns>
- bool Handshake(IWebSocketSession session, WebSocketReceiveFilterBase previousFilter, out IReceiveFilter<IWebSocketFragment> dataFrameReader);
- /// <summary>
- /// Gets the encoded package.
- /// </summary>
- /// <param name="opCode">The op code.</param>
- /// <param name="data">The data.</param>
- /// <param name="offset">The offset.</param>
- /// <param name="length">The length.</param>
- /// <returns></returns>
- IList<ArraySegment<byte>> GetEncodedPackage(int opCode, byte[] data, int offset, int length);
- /// <summary>
- /// Gets the encoded package.
- /// </summary>
- /// <param name="opCode">The op code.</param>
- /// <param name="message">The message.</param>
- /// <returns></returns>
- IList<ArraySegment<byte>> GetEncodedPackage(int opCode, string message);
- /// <summary>
- /// Sends the message.
- /// </summary>
- /// <param name="session">The session.</param>
- /// <param name="message">The message.</param>
- void SendMessage(IWebSocketSession session, string message);
- /// <summary>
- /// Try to send the message.
- /// </summary>
- /// <param name="session">The session.</param>
- /// <param name="message">The message.</param>
- /// <returns>if the messaged has been enqueued into the sending queue, return true; else if the message failed to be enqueued becuase the sending is full, then return false</returns>
- bool TrySendMessage(IWebSocketSession session, string message);
- /// <summary>
- /// Sends the data.
- /// </summary>
- /// <param name="session">The session.</param>
- /// <param name="data">The data.</param>
- /// <param name="offset">The offset.</param>
- /// <param name="length">The length.</param>
- void SendData(IWebSocketSession session, byte[] data, int offset, int length);
- /// <summary>
- /// Try to send the data.
- /// </summary>
- /// <param name="session">The session.</param>
- /// <param name="data">The data.</param>
- /// <param name="offset">The offset.</param>
- /// <param name="length">The length.</param>
- /// <returns>if the data has been enqueued into the sending queue, return true; else if the data failed to be enqueued becuase the sending is full, then return false</returns>
- bool TrySendData(IWebSocketSession session, byte[] data, int offset, int length);
- /// <summary>
- /// Sends the close handshake.
- /// </summary>
- /// <param name="session">The session.</param>
- /// <param name="statusCode">The status code.</param>
- /// <param name="closeReason">The close reason.</param>
- void SendCloseHandshake(IWebSocketSession session, int statusCode, string closeReason);
- /// <summary>
- /// Sends the pong.
- /// </summary>
- /// <param name="session">The session.</param>
- /// <param name="pong">The pong.</param>
- void SendPong(IWebSocketSession session, byte[] pong);
- /// <summary>
- /// Sends the ping.
- /// </summary>
- /// <param name="session">The session.</param>
- /// <param name="ping">The ping.</param>
- void SendPing(IWebSocketSession session, byte[] ping);
- /// <summary>
- /// Gets the version of current protocol.
- /// </summary>
- int Version { get; }
- /// <summary>
- /// Determines whether [is valid close code] [the specified code].
- /// </summary>
- /// <param name="code">The code.</param>
- /// <returns>
- /// <c>true</c> if [is valid close code] [the specified code]; otherwise, <c>false</c>.
- /// </returns>
- bool IsValidCloseCode(int code);
- }
- }
|