Пример #1
0
        private void SendAddSubscribePackage()
        {
            try
            {
                if (mMaskMsg == null || mMessageMsg == null)
                {
                    OnDebug(string.Format("MaskMsg or MessageMsg is null"));
                    return;
                }

                _TAG_NETPACK_MESSAGE mask    = mMaskMsg.GetMessage();
                _TAG_NETPACK_MESSAGE message = mMessageMsg.GetMessage();

                _TAG_NETPACK_BASEHEAD_REQ_ADD_SUBSCRIBE addSubscribe = new _TAG_NETPACK_BASEHEAD_REQ_ADD_SUBSCRIBE();
                addSubscribe._requestid = GetRequestID();
                addSubscribe._mask      = mask;
                addSubscribe._message   = message;

                _TAG_NETPACK_DISTINGUISHHEAD_VER1 ver1Head = CreateVer1Head(
                    DecDefines.NETPACK_PACKTYPE_REQUEST,
                    DecDefines.NETPACK_BASETYPE_REQ_ADDSUBSCRIBE,
                    DecDefines.NETPACK_EXTTYPE_NOTHING,
                    0);
                byte[] messageHead = Converter.Struct2Bytes(addSubscribe);
                SendMessage(ver1Head, messageHead);
            }
            catch (Exception ex)
            {
                OnDebug(string.Format("SendMessage fail.\t{0}", ex.Message));
            }
        }
Пример #2
0
        private void SendHelloPackage()
        {
            try
            {
                _TAG_NETPACK_BASEHEAD_CONNECT_HELLO helloPackage = new _TAG_NETPACK_BASEHEAD_CONNECT_HELLO();
                helloPackage._client_appname     = Helpers.ConvertStringToByteArray(mAppName, DecDefines.LEN_APPNAME);
                helloPackage._client_moduleid    = mModuleType;
                helloPackage._client_number      = mModuleNumber;
                helloPackage._client_version     = Helpers.ConvertStringToByteArray(mAppVersion, DecDefines.LEN_VERSION);
                helloPackage._client_starttime   = Helpers.CreateTimestamp(DateTime.Now.ToUniversalTime());
                helloPackage._client_connecttime = Helpers.CreateTimestamp(DateTime.Now.ToUniversalTime());
                helloPackage._client_protocol    = new ulong[4];
                helloPackage._client_protocol[0] = Helpers.MakeNetPackProtocol(1, 0);

                _TAG_NETPACK_DISTINGUISHHEAD_VER1 ver1Head = CreateVer1Head(
                    DecDefines.NETPACK_PACKTYPE_CONNECT,
                    DecDefines.NETPACK_BASETYPE_CONNECT_HELLO,
                    DecDefines.NETPACK_EXTTYPE_NOTHING,
                    0);
                byte[] messageHead = Converter.Struct2Bytes(helloPackage);
                SendMessage(ver1Head, messageHead);
            }
            catch (Exception ex)
            {
                OnDebug(string.Format("SendMessage fail.\t{0}", ex.Message));
            }
        }
Пример #3
0
 internal void SendMessage(_TAG_NETPACK_DISTINGUISHHEAD_VER1 ver1Head)
 {
     byte[] byteHead = Converter.Struct2Bytes(ver1Head);
     byte[] byteSend = new byte[byteHead.Length];
     Array.Copy(byteHead, 0, byteSend, 0, byteHead.Length);
     SendMessage(byteSend);
 }
Пример #4
0
 private void SendHeartbeatPackage()
 {
     try
     {
         _TAG_NETPACK_DISTINGUISHHEAD_VER1 ver1Head = CreateVer1Head(
             DecDefines.NETPACK_PACKTYPE_HEARTBEAT,
             DecDefines.NETPACK_BASETYPE_NOTHING,
             DecDefines.NETPACK_EXTTYPE_NOTHING,
             0);
         SendMessage(ver1Head);
     }
     catch (Exception ex)
     {
         OnDebug(string.Format("SendMessage fail.\t{0}", ex.Message));
     }
 }
Пример #5
0
        internal static DistHead FromHead(_TAG_NETPACK_DISTINGUISHHEAD_VER1 ver1Head)
        {
            DistHead info = new DistHead();

            info.PackType   = ver1Head._packtype;
            info.FollowSize = ver1Head._followsize;
            info.SourceID   = ver1Head._source;
            info.TargetID   = ver1Head._target;
            info.Time       = Helpers.GetTimeFromTimestamp((long)ver1Head._timestamp);
            info.BaseType   = ver1Head._basehead;
            info.BaseSize   = ver1Head._basesize;
            info.ExtType    = ver1Head._exthead;
            info.ExtSize    = ver1Head._extsize;
            info.DataSize   = ver1Head._datasize;
            info.ModuleID   = ver1Head._moduleid;
            info.Number     = ver1Head._number;
            info.Message    = MessageString.FromMessage(ver1Head._message);
            return(info);
        }
Пример #6
0
        private void SendClearSubscribePackage()
        {
            try
            {
                _TAG_NETPACK_BASEHEAD_REQ_CLEAR_SUBSCRIBE clearSubscribe = new _TAG_NETPACK_BASEHEAD_REQ_CLEAR_SUBSCRIBE();
                clearSubscribe._requestid = mRequestID++;

                _TAG_NETPACK_DISTINGUISHHEAD_VER1 ver1Head = CreateVer1Head(
                    DecDefines.NETPACK_PACKTYPE_REQUEST,
                    DecDefines.NETPACK_BASETYPE_REQ_CLEARSUBSCRIBE,
                    DecDefines.NETPACK_EXTTYPE_NOTHING,
                    0);
                byte[] messageHead = Converter.Struct2Bytes(clearSubscribe);
                SendMessage(ver1Head, messageHead);
            }
            catch (Exception ex)
            {
                OnDebug(string.Format("SendMessage fail.\t{0}", ex.Message));
            }
        }
Пример #7
0
        private void SendPublishMessage(string msg, MessageString message)
        {
            try
            {
                byte[] byteMsg = Encoding.UTF8.GetBytes(msg);

                NETPACK_BASEHEAD_APPLICATION_VER1 appVer1 = new NETPACK_BASEHEAD_APPLICATION_VER1();
                appVer1._channel  = 0;
                appVer1._encrypt  = (byte)mDataEncrypt;
                appVer1._compress = 0;
                appVer1._format   = (byte)mDataFormat;

                appVer1._datasize  = (ushort)byteMsg.Length;
                appVer1._validsize = Helpers.GetEncryptStoreSize((byte)mDataEncrypt, (ushort)byteMsg.Length);

                _TAG_NETPACK_DISTINGUISHHEAD_VER1 ver1Head = CreateVer1Head(
                    DecDefines.NETPACK_PACKTYPE_APPLICATION,
                    DecDefines.NETPACK_BASETYPE_APPLICATION_VER1,
                    DecDefines.NETPACK_EXTTYPE_NOTHING,
                    appVer1._validsize);

                _TAG_NETPACK_MESSAGE messageMessage = Helpers.CreateMessage(message.SourceModule, message.SourceNumber,
                                                                            message.TargetModule, message.TargetNumber, message.Number, message.SmallType, message.MiddleType,
                                                                            message.LargeType);
                ver1Head._message = messageMessage;

                byte[] byteBaseHead = Converter.Struct2Bytes(appVer1);
                byte[] byteSend     = new byte[byteBaseHead.Length + byteMsg.Length];
                Array.Copy(byteBaseHead, 0, byteSend, 0, byteBaseHead.Length);
                Array.Copy(byteMsg, 0, byteSend, byteBaseHead.Length, byteMsg.Length);
                SendMessage(ver1Head, byteSend);
            }
            catch (Exception ex)
            {
                OnDebug(string.Format("SendMessage fail.\t{0}", ex.Message));
            }
        }
Пример #8
0
        private void SendLogonPackage(_TAG_NETPACK_BASEHEAD_CONNECT_WELCOME welcome)
        {
            try
            {
                byte[] session = welcome._authenticatecode;
                byte[] code    = Helpers.GetValidicationCode(session); //计算认证码
                _TAG_NETPACK_BASEHEAD_CONNECT_LOGON logon = new _TAG_NETPACK_BASEHEAD_CONNECT_LOGON();
                logon._heartbeat        = mHearbeatDuration;
                logon._authenticatecode = code;

                _TAG_NETPACK_DISTINGUISHHEAD_VER1 ver1Head = CreateVer1Head(
                    DecDefines.NETPACK_PACKTYPE_CONNECT,
                    DecDefines.NETPACK_BASETYPE_CONNECT_LOGON,
                    DecDefines.NETPACK_EXTTYPE_NOTHING,
                    0);

                byte[] messageHead = Converter.Struct2Bytes(logon);
                SendMessage(ver1Head, messageHead);
            }
            catch (Exception ex)
            {
                OnDebug(string.Format("SendMessage fail.\t{0}", ex.Message));
            }
        }
Пример #9
0
        private _TAG_NETPACK_DISTINGUISHHEAD_VER1 CreateVer1Head(byte packType,
                                                                 ushort baseHeadType,
                                                                 ushort extHeadType,
                                                                 ushort validSize)
        {
            _TAG_NETPACK_DISTINGUISHHEAD distHead = Helpers.CreateDistinguishHead();
            ushort distHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_DISTINGUISHHEAD));

            ushort baseHeadSize = 0;

            switch (baseHeadType)
            {
            case DecDefines.NETPACK_BASETYPE_NOTHING:
                baseHeadSize = 0;
                break;

            case DecDefines.NETPACK_BASETYPE_APPLICATION_VER1:
                baseHeadSize = (ushort)Marshal.SizeOf(typeof(NETPACK_BASEHEAD_APPLICATION_VER1));
                break;

            case DecDefines.NETPACK_BASETYPE_CONNECT_ERROR:
                baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_ERROR));
                break;

            case DecDefines.NETPACK_BASETYPE_CONNECT_HELLO:
                baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_CONNECT_HELLO));
                break;

            case DecDefines.NETPACK_BASETYPE_CONNECT_WELCOME:
                baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_CONNECT_WELCOME));
                break;

            case DecDefines.NETPACK_BASETYPE_CONNECT_LOGON:
                baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_CONNECT_LOGON));
                break;

            case DecDefines.NETPACK_BASETYPE_CONNECT_AUTHEN:
                baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_CONNECT_AUTHEN));
                break;

            case DecDefines.NETPACK_BASETYPE_REQ_ADDSUBSCRIBE:
                baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_REQ_ADD_SUBSCRIBE));
                break;

            case DecDefines.NETPACK_BASETYPE_RES_ADDSUBSCRIBE:
                baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_RES_ADD_SUBSCRIBE));
                break;

            case DecDefines.NETPACK_BASETYPE_REQ_DELSUBSCRIBE:
                baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_REQ_DEL_SUBSCRIBE));
                break;

            case DecDefines.NETPACK_BASETYPE_RES_DELSUBSCRIBE:
                baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_RES_DEL_SUBSCRIBE));
                break;

            case DecDefines.NETPACK_BASETYPE_REQ_CLEARSUBSCRIBE:
                baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_REQ_CLEAR_SUBSCRIBE));
                break;

            case DecDefines.NETPACK_BASETYPE_RES_CLEARSUBSCRIBE:
                baseHeadSize = (ushort)Marshal.SizeOf(typeof(_TAG_NETPACK_BASEHEAD_RES_CLEAR_SUBSCRIBE));
                break;
            }
            ushort extHeadSize = 0;

            //扩展包头类型
            switch (extHeadType)
            {
            case DecDefines.NETPACK_EXTTYPE_NOTHING:
                extHeadSize = 0;
                break;
            }
            int headSize = distHeadSize + baseHeadSize + extHeadSize;
            _TAG_NETPACK_ENCRYPT_CONTEXT encryptContext = new _TAG_NETPACK_ENCRYPT_CONTEXT();

            encryptContext._encrypt = DecDefines.NETPACK_ENCRYPT_NOTHING;
            ushort dataSize = Helpers.GetEncryptStoreSize(encryptContext._encrypt, validSize);
            short  packSize = (short)(headSize + dataSize);

            _TAG_NETPACK_DISTINGUISHHEAD_VER1 ver1head = new _TAG_NETPACK_DISTINGUISHHEAD_VER1();

            ver1head._dist       = distHead;
            ver1head._packtype   = packType;
            ver1head._followsize = (ushort)(packSize - distHeadSize);
            ver1head._source     = mEndpointID;
            ver1head._target     = 0xffffffffffffffff;
            ver1head._timestamp  = (ulong)DateTime.Now.Ticks;
            ver1head._basehead   = baseHeadType;
            ver1head._basesize   = baseHeadSize;
            ver1head._exthead    = extHeadType;
            ver1head._extsize    = extHeadSize;
            ver1head._datasize   = dataSize;
            ver1head._state      = 0;
            ver1head._moduleid   = mModuleType;
            ver1head._number     = mModuleNumber;
            ver1head._timestamp  = (ulong)DateTime.Now.Ticks;
            return(ver1head);
        }