/// <summary> /// <para>Constructor</para> /// <para>Initialize requirement for packet management</para> /// <para>The package is made of the following items:</para> /// <para> /// PacketTypeSize(Const 1 byte) + (CommandSize * 16) + PacketSpecifyBodySize((BodySize * 16).ToString().Length) + /// (BodySize * 16) + PacketRequestIdSize(Const 16 byte => Guid.NewGuid().ToByteArray().Length) /// </para> /// </summary> /// <param name="oPacketCommandSize">Specify packet command size</param> /// <param name="oPacketBodySize">Specify packet body size</param> /// <param name="oEncoding">Specify encoding and decoding type</param> /// <param name="logging">Specified custom logging system</param> #region G9PacketManagement public G9PacketManagement(byte oPacketCommandSize, byte oPacketBodySize, G9Encoding oEncoding, IG9Logging logging) { _logging = logging; CommandSize = oPacketCommandSize; BodySize = oPacketBodySize; CalculateBodySize = (ushort)(BodySize * 16); CalculateCommandSize = CommandSize * 16; EncodingHandler = oEncoding; }
/// <summary> /// Constructor /// </summary> /// <param name="oIpAddress">Specify ip address</param> /// <param name="oPortNumber">Specify port number</param> /// <param name="oMode">Specify mode TCP or UDP</param> /// <param name="oCommandSize"> /// Specify command size /// Example: if set "n" length is "n*16" => if set 1 length is 16 then maximum command name length is 16 byte or /// character /// </param> /// <param name="oBodySize"> /// Specify body size /// Example: if set "n" length is "n*16" => if set 1 length is 16 then maximum command name length is 16 byte or character /// Minimum is 1 maximum is 255 /// </param> /// <param name="oEncodingAndDecoding"> /// Specify type of encoding and decoding /// If set null adjusted default value => UTF-8 /// </param> #region G9SuperSocketConfig public AG9BaseConfig(IPAddress oIpAddress, ushort oPortNumber, SocketMode oMode, byte oCommandSize = 1, byte oBodySize = 8, G9Encoding oEncodingAndDecoding = null) { // Set ip address IpAddress = oIpAddress is null || Equals(oIpAddress, IPAddress.None) ? throw new ArgumentException(string.Format(LogMessage.ArgumentXNotCorrect, nameof(oIpAddress)), nameof(oIpAddress)) : oIpAddress; // Set port number PortNumber = oPortNumber < 1 ? throw new ArgumentException(string.Format(LogMessage.ArgumentXNotCorrect, nameof(oPortNumber)), nameof(oPortNumber)) : oPortNumber; // Set socket mode Mode = oMode; // Set command size CommandSize = oCommandSize < 1 ? throw new ArgumentException(string.Format(LogMessage.ArgumentXNotCorrect, nameof(oCommandSize)), nameof(oCommandSize)) : oCommandSize; // Set body size BodySize = oBodySize < 1 && oBodySize > 255 ? throw new ArgumentException(string.Format(LogMessage.ArgumentXNotCorrect, nameof(oBodySize)), nameof(oBodySize)) : oBodySize; // Set encoding EncodingAndDecoding = oEncodingAndDecoding ?? new G9Encoding(EncodingTypes.UTF_8); }
/// <summary> /// Convert ReadOnlyMemory byte to type /// </summary> /// <typeparam name="TResult">Specify type for convert</typeparam> /// <param name="byteData">ReadOnlyMemory byte data</param> /// <param name="encoding">Specify encoding</param> /// <returns>Converted type from byte[]</returns> #region FromJson public static TResult FromJson <TResult>(this ReadOnlyMemory <byte> byteData, G9Encoding encoding) { return(typeof(TResult) == typeof(byte[]) ? (TResult)(object)byteData.ToArray() : JsonConvert.DeserializeObject <TResult>(encoding.GetString(byteData))); }
/// <summary> /// Constructor /// </summary> /// <param name="oIpAddress">Specify ip address</param> /// <param name="oPortNumber">Specify port number</param> /// <param name="oMode">Specify mode TCP or UDP</param> /// <param name="oCommandSize"> /// Specify command size /// Example: if set "n" length is "n*16" => if set 1 length is 16 then maximum command name length is 16 byte or /// character /// </param> /// <param name="oBodySize"> /// Specify body size /// Example: if set "n" length is "n*16" => if set 1 length is 16 then maximum command name length is 16 byte or /// character /// </param> /// <param name="oEncodingAndDecoding"> /// Specify type of encoding and decoding /// If set null adjusted default value => UTF-8 /// </param> public G9ClientConfig(IPAddress oIpAddress, ushort oPortNumber, SocketMode oMode, byte oCommandSize = 1, byte oBodySize = 8, G9Encoding oEncodingAndDecoding = null) : base(oIpAddress, oPortNumber, oMode, oCommandSize, oBodySize, oEncodingAndDecoding) { }
/// <summary> /// Convert byte to type /// </summary> /// <typeparam name="TResult">Specify type for convert</typeparam> /// <param name="byteData">byte[] data</param> /// <param name="encoding">Specify encoding</param> /// <returns>Converted type from byte[]</returns> #region FromJson public static TResult FromJson <TResult>(this byte[] byteData, G9Encoding encoding) { return(typeof(TResult) == typeof(byte[]) ? (TResult)(object)byteData : JsonConvert.DeserializeObject <TResult>(encoding.GetString(byteData))); }