/// <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;
        }
Example #2
0
        /// <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);
        }
Example #3
0
 /// <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)
 {
 }
Example #5
0
        /// <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)));
        }