逻辑服和代理服整理2

来源:互联网 发布:java 数组 类,关系 编辑:程序博客网 时间:2024/04/28 19:08
--[[ file name : SocketServerManager.Lua author  :  Clark/陈泽丹 created :  2011-12-22--]]function GetLogicServerID()return 1;endfunction GetCurServerID()local ID = API_GetServerID()myPrint("当前设备ID: " .. ID,1)return IDend--创建服务器管理者function newSocketServerManager()local ID_MAX = 10000local m_public = {}m_public.tClient = {}--获得IDfunction m_public.CreateID()for i=1, ID_MAX doif nil == m_public.tClient[i] thenreturn iendendreturn nilend--删除IDfunction m_public.DeleteID(_ID)m_public.tClient[_ID] = nilend--初始化IDfunction m_public.InitObj(_ID, _Obj)m_public.tClient[_ID] = _Objend--获得大小function m_public.getSize()return ID_MAXend--钩子生成器function m_public.newBaseSocket(_szCmd)local ID = m_public.CreateID()if nil == ID thenreturn nilendlocal pubComm = {}--删除钩子器function pubComm.delete()m_public.DeleteID(ID)end--获得用户标示function pubComm.getCmd()return _szCmdend--初始化钩子器function pubComm.InitObj(thisPoint)m_public.InitObj(ID, thisPoint)endreturn pubCommendreturn m_publicend--发送端服务器管理者function newSendServerManager()local m_protected = newSocketServerManager()local m_public = {}--发送生成器function m_public.newSocket(_szCmd)local pubComm =  m_protected.newBaseSocket(_szCmd)--发送给指定用户的信息function pubComm.Send(_tBuf)local t = { CMD = _szCmd, tBuf = _tBuf}local szBuf = sz_T2S(t)API_BroadcastData(szBuf, "ServerRecv_CallBack")endpubComm.InitObj(pubComm)return pubCommendreturn m_publicend--接收端服务器管理者function newRecvServerManager()local m_protected = newSocketServerManager()local m_public = {}--接收生成器function m_public.newSocket(_szCmd, _szRecvFun)local pubComm = m_protected.newBaseSocket(_szCmd)if nil == pubComm thenreturn nilend--处理接收到的信息function pubComm.Recv(_szCmd, _tBuf)_szRecvFun(_szCmd, _tBuf)endpubComm.InitObj(pubComm)return pubCommend--接收端function m_protected.recv(_fromServerID, _szRecvFun)local t = t_S2T(_szRecvFun)if nil ~= t thenfor i=1, m_protected.getSize() doif nil ~= m_protected.tClient[i] and t.CMD == m_protected.tClient[i].getCmd() thenm_protected.tClient[i].Recv(t.CMD, t.tBuf)endendendendreturn m_public, m_protectedendSEND_G_SOCKET_SERVER_MANAGER = newSendServerManager()RECV_G_SOCKET_SERVER_MANAGER, RECV_G_SOCKET_SERVER_MANAGER_FRIEND = newRecvServerManager()function ServerRecv_CallBack(_SourceID, _buf1, _buf2, _buf3, _buf4, _buf5, _buf6, _buf7, _buf8, _buf9, _buf10, _buf11, _buf12, _buf13, _buf14, _buf15, _buf16)local szBuf = _buf1 .. _buf2 .. _buf3 .. _buf4 .. _buf5 .. _buf6 .. _buf7 .. _buf8 .. _buf9 .. _buf10 .. _buf11 .. _buf12 .. _buf13 .. _buf14 .. _buf15 .. _buf16RECV_G_SOCKET_SERVER_MANAGER_FRIEND.recv(_SourceID, szBuf)end


 

 

--------------------------------------------------------------------[[ file name : test.lua author  :  Clark/陈泽丹 created :  2012-1-12 purpose :--]]------------------------------------------------------------------G_CMD_INIT = "CMD_INIT"G_CMD_LOGIN = "CMD_LOGIN"G_CMD_ENTER = "CMD_ENTER"G_CMD_TALK = "CMD_TALK"G_CMD_MOVE = "CMD_MOVE"function newLogicServer()local m_public = {}local m_protected = {}local data = nillocal skSendInit = nillocal skRecvLogin = nillocal skRecvEnter = nillocal skSendTalk = nillocal skSendMove = nil--------- 相关操作 ------------更新所有服务器function m_public.UpdateData()skSendInit.Send(data)endfunction m_protected.RecvLogin(_szCmd, _tBuf)local szBuf = sz_T2S(_tBuf)myPrint(_szCmd .. "|" .. szBuf, 1)endfunction m_protected.RecvEnter(_szCmd, _tBuf)local szBuf = sz_T2S(_tBuf)myPrint(_szCmd .. "|" .. szBuf, 1)endfunction m_public.Talk()skSendTalk.Send({"你妈喊你回家吃饭!"})endfunction m_public.Move()skSendMove.Send({"移动玩家"})end-------- 初始化与相关释放 ----------data = { "初始化"}skSendInit = SEND_G_SOCKET_SERVER_MANAGER.newSocket(G_CMD_INIT)skRecvLogin = RECV_G_SOCKET_SERVER_MANAGER.newSocket(G_CMD_LOGIN, m_protected.RecvLogin)skRecvEnter = RECV_G_SOCKET_SERVER_MANAGER.newSocket(G_CMD_ENTER, m_protected.RecvEnter)skSendTalk = SEND_G_SOCKET_SERVER_MANAGER.newSocket(G_CMD_TALK)skSendMove = SEND_G_SOCKET_SERVER_MANAGER.newSocket(G_CMD_MOVE)function m_public.Delete()skSendInit.delete()skRecvLogin.delete()skRecvEnter.delete()skSendTalk.delete()skSendMove.delete()endreturn m_publicendfunction newProxyServer()local m_public = {}local m_protected = {}local skRecvInit = nillocal skSendLogin = nillocal skSendEnter = nil--------- 相关操作 ----------function m_protected.RecvInit(_szCmd, _tBuf)local szBuf = sz_T2S(_tBuf)myPrint(_szCmd .. "|" .. szBuf, 1)endfunction m_public.Login()skSendLogin.Send({"登陆"})endfunction m_public.Enter()skSendEnter.Send({"进入"})endfunction m_protected.RecvTalk(_szCmd, _tBuf)local szBuf = sz_T2S(_tBuf)myPrint(_szCmd .. "|" .. szBuf, 1)endfunction m_protected.RecvMove(_szCmd, _tBuf)local szBuf = sz_T2S(_tBuf)myPrint(_szCmd .. "|" .. szBuf, 1)end-------- 初始化与相关释放 ----------skRecvInit = RECV_G_SOCKET_SERVER_MANAGER.newSocket(G_CMD_INIT, m_protected.RecvInit)skSendLogin = SEND_G_SOCKET_SERVER_MANAGER.newSocket(G_CMD_LOGIN)skSendEnter = SEND_G_SOCKET_SERVER_MANAGER.newSocket(G_CMD_ENTER)skRecvTalk = RECV_G_SOCKET_SERVER_MANAGER.newSocket(G_CMD_TALK, m_protected.RecvTalk)skRecvMove = RECV_G_SOCKET_SERVER_MANAGER.newSocket(G_CMD_MOVE, m_protected.RecvMove)function m_public.Delete()skRecvInit.delete()skSendLogin.delete()skSendEnter.delete()skRecvTalk.delete()skRecvMove.delete()endreturn m_publicendLS = newLogicServer()LS.UpdateData()LP = newProxyServer()LP.Login()LP.Enter()LS.Talk()LS.Move()