예제 #1
0
 public Protocol(ProtoID id, ProtoBody body)
 {
     protoHead       = new ProtoHead();
     protoHead.CmdID = id;
     serverHead      = new ServerHead();
     protoBody       = body;
 }
예제 #2
0
        /// <summary>
        /// 生成ProtoHead,ServerHead,ProtoID,并使用传入的ProtoBody赋值
        /// </summary>
        /// <param name="bodyIn"></param>
        public Protocol(ProtoBody bodyIn)
        {
            protoHead  = new ProtoHead();
            serverHead = new ServerHead();
            protoBody  = bodyIn;

            protoHead.CmdID = ProtoID.GetProtoIDByBody(bodyIn);
        }
 static int GetModuleID(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         Protocols.ProtoID obj = (Protocols.ProtoID)ToLua.CheckObject <Protocols.ProtoID>(L, 1);
         byte o = obj.GetModuleID();
         LuaDLL.lua_pushnumber(L, o);
         return(1);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
 static int GetProtoIDByBody(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         Protocols.ProtoBody arg0 = (Protocols.ProtoBody)ToLua.CheckObject <Protocols.ProtoBody>(L, 1);
         Protocols.ProtoID   o    = Protocols.ProtoID.GetProtoIDByBody(arg0);
         ToLua.PushObject(L, o);
         return(1);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
 static int ToString(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         Protocols.ProtoID obj = (Protocols.ProtoID)ToLua.CheckObject <Protocols.ProtoID>(L, 1);
         string            o   = obj.ToString();
         LuaDLL.lua_pushstring(L, o);
         return(1);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
 static int ToUInt16(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         Protocols.ProtoID obj = (Protocols.ProtoID)ToLua.CheckObject <Protocols.ProtoID>(L, 1);
         ushort            o   = obj.ToUInt16();
         LuaDLL.lua_pushnumber(L, o);
         return(1);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
예제 #7
0
 static int GetID(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         Protocols.Protocol obj = (Protocols.Protocol)ToLua.CheckObject <Protocols.Protocol>(L, 1);
         Protocols.ProtoID  o   = obj.GetID();
         ToLua.PushObject(L, o);
         return(1);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
 static int GetHashCode(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         Protocols.ProtoID obj = (Protocols.ProtoID)ToLua.CheckObject <Protocols.ProtoID>(L, 1);
         int o = obj.GetHashCode();
         LuaDLL.lua_pushinteger(L, o);
         return(1);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
예제 #9
0
 static int RegisterCallBack(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 3);
         LuaFramework.NetworkManager obj  = (LuaFramework.NetworkManager)ToLua.CheckObject <LuaFramework.NetworkManager>(L, 1);
         Protocols.ProtoID           arg0 = (Protocols.ProtoID)ToLua.CheckObject <Protocols.ProtoID>(L, 2);
         NetworkEventHandler         arg1 = (NetworkEventHandler)ToLua.CheckDelegate <NetworkEventHandler>(L, 3);
         obj.RegisterCallBack(arg0, arg1);
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
    static int get_Name(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Protocols.ProtoID obj = (Protocols.ProtoID)o;
            string            ret = obj.Name;
            LuaDLL.lua_pushstring(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index Name on a nil value"));
        }
    }
    static int get_BodyType(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Protocols.ProtoID obj = (Protocols.ProtoID)o;
            System.Type       ret = obj.BodyType;
            ToLua.Push(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index BodyType on a nil value"));
        }
    }
    static int get_ID(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            Protocols.ProtoID obj = (Protocols.ProtoID)o;
            ushort            ret = obj.ID;
            LuaDLL.lua_pushnumber(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o, "attempt to index ID on a nil value"));
        }
    }
    static int Equals(IntPtr L)
    {
        try
        {
            ToLua.CheckArgsCount(L, 2);
            Protocols.ProtoID obj  = (Protocols.ProtoID)ToLua.CheckObject <Protocols.ProtoID>(L, 1);
            object            arg0 = ToLua.ToVarObject(L, 2);
            bool o = obj != null?obj.Equals(arg0) : arg0 == null;

            LuaDLL.lua_pushboolean(L, o);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
예제 #14
0
        internal int Deserialize(System.IO.Stream stream)
        {
            if ((stream.Length - stream.Position) < GetSize())
            {
                return(-1);
            }

            byte[] buffer1 = new byte[2];

            //cmdId
            stream.Read(buffer1, 0, sizeof(UInt16));
            cmdID = BitConverter.ToUInt16(buffer1, 0);

            byte[] buffer2 = new byte[4];

            //bodyLen
            stream.Read(buffer2, 0, sizeof(UInt32));
            bodyLen = BitConverter.ToUInt32(buffer2, 0);

            return(0);
        }
예제 #15
0
#pragma warning restore 0414

        //////////////////////////////////////////////////////////////////////////
        // ProtoID static methods

        /// <summary>
        /// 为获得更好的运行时效率,此处对所有协议进行预处理
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        protected static int RegisterToBase(ProtoID id)
        {
            _DelayMemberInit();

            if (null != id && !idMap.ContainsKey(id))
            {
                idMap.Add(id, id);
            }
            else if (null != id)
            {
            }

            if (null != id && !typeMap.ContainsKey(id.BodyType))
            {
                typeMap.Add(id.BodyType, id);
                //LogSys.Debug(string.Format("[PROTO] Build  Mapping for {0} - {1}", id.ToUInt16(), id));
            }
            else if (null != id)
            {
            }

            return(0);
        }
예제 #16
0
    static int _CreateProtocols_Protocol(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 0)
            {
                Protocols.Protocol obj = new Protocols.Protocol();
                ToLua.PushObject(L, obj);
                return(1);
            }
            else if (count == 1)
            {
                Protocols.ProtoBody arg0 = (Protocols.ProtoBody)ToLua.CheckObject <Protocols.ProtoBody>(L, 1);
                Protocols.Protocol  obj  = new Protocols.Protocol(arg0);
                ToLua.PushObject(L, obj);
                return(1);
            }
            else if (count == 2)
            {
                Protocols.ProtoID   arg0 = (Protocols.ProtoID)ToLua.CheckObject <Protocols.ProtoID>(L, 1);
                Protocols.ProtoBody arg1 = (Protocols.ProtoBody)ToLua.CheckObject <Protocols.ProtoBody>(L, 2);
                Protocols.Protocol  obj  = new Protocols.Protocol(arg0, arg1);
                ToLua.PushObject(L, obj);
                return(1);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to ctor method: Protocols.Protocol.New"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
예제 #17
0
 public void SetBody(ProtoBody body)
 {
     protoBody       = body;
     protoHead.CmdID = ProtoID.GetProtoIDByBody(body);
 }
예제 #18
0
    static int SendTcpClientMessage(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 2)
            {
                LuaFramework.NetworkManager obj  = (LuaFramework.NetworkManager)ToLua.CheckObject <LuaFramework.NetworkManager>(L, 1);
                Protocols.ProtoBody         arg0 = (Protocols.ProtoBody)ToLua.CheckObject <Protocols.ProtoBody>(L, 2);
                obj.SendTcpClientMessage(arg0);
                return(0);
            }
            else if (count == 3 && TypeChecker.CheckTypes <Protocols.ProtoID, Protocols.ProtoBody>(L, 2))
            {
                LuaFramework.NetworkManager obj  = (LuaFramework.NetworkManager)ToLua.CheckObject <LuaFramework.NetworkManager>(L, 1);
                Protocols.ProtoID           arg0 = (Protocols.ProtoID)ToLua.ToObject(L, 2);
                Protocols.ProtoBody         arg1 = (Protocols.ProtoBody)ToLua.ToObject(L, 3);
                obj.SendTcpClientMessage(arg0, arg1);
                return(0);
            }
            else if (count == 3 && TypeChecker.CheckTypes <ushort, byte[]>(L, 2))
            {
                LuaFramework.NetworkManager obj = (LuaFramework.NetworkManager)ToLua.CheckObject <LuaFramework.NetworkManager>(L, 1);
                ushort arg0 = (ushort)LuaDLL.lua_tonumber(L, 2);
                byte[] arg1 = ToLua.CheckByteBuffer(L, 3);
                obj.SendTcpClientMessage(arg0, arg1);
                return(0);
            }
            else if (count == 3 && TypeChecker.CheckTypes <ushort, LuaFramework.ByteBuffer>(L, 2))
            {
                LuaFramework.NetworkManager obj = (LuaFramework.NetworkManager)ToLua.CheckObject <LuaFramework.NetworkManager>(L, 1);
                ushort arg0 = (ushort)LuaDLL.lua_tonumber(L, 2);
                LuaFramework.ByteBuffer arg1 = (LuaFramework.ByteBuffer)ToLua.ToObject(L, 3);
                obj.SendTcpClientMessage(arg0, arg1);
                return(0);
            }
            else if (count == 4)
            {
                LuaFramework.NetworkManager obj  = (LuaFramework.NetworkManager)ToLua.CheckObject <LuaFramework.NetworkManager>(L, 1);
                Protocols.ProtoID           arg0 = (Protocols.ProtoID)ToLua.CheckObject <Protocols.ProtoID>(L, 2);
                Protocols.ProtoBody         arg1 = (Protocols.ProtoBody)ToLua.CheckObject <Protocols.ProtoBody>(L, 3);
                System.Action arg2 = (System.Action)ToLua.CheckDelegate <System.Action>(L, 4);
                obj.SendTcpClientMessage(arg0, arg1, arg2);
                return(0);
            }
            else if (count == 5)
            {
                LuaFramework.NetworkManager obj  = (LuaFramework.NetworkManager)ToLua.CheckObject <LuaFramework.NetworkManager>(L, 1);
                Protocols.ProtoID           arg0 = (Protocols.ProtoID)ToLua.CheckObject <Protocols.ProtoID>(L, 2);
                Protocols.ProtoBody         arg1 = (Protocols.ProtoBody)ToLua.CheckObject <Protocols.ProtoBody>(L, 3);
                System.Action arg2 = (System.Action)ToLua.CheckDelegate <System.Action>(L, 4);
                bool          arg3 = LuaDLL.luaL_checkboolean(L, 5);
                obj.SendTcpClientMessage(arg0, arg1, arg2, arg3);
                return(0);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to method: LuaFramework.NetworkManager.SendTcpClientMessage"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }