Exemple #1
0
        public override bool ProcessMsg(ZNet.CRecvedMsg rm)
        {
            ZNet.RemoteID remote = rm.remote;
            if (remote == ZNet.RemoteID.Remote_None)
            {
                //err
            }

            ZNet.CPackOption pkOption = rm.pkop;
            ZNet.CMessage    __msg    = rm.msg;
            ZNet.PacketType  PkID     = rm.pkID;
            if (PkID < ZNet.PacketType.PacketType_User)
            {
                return(true);
            }

            switch (PkID)
            {
            case Common.request_Echo:
            {
                RemoteClass.CUserClass    testClass; RemoteClass.Marshaler.Read(__msg, out testClass);
                Dictionary <Int32, Int32> dic_test; RemoteClass.Marshaler.Read(__msg, out dic_test);
                string msg; RemoteClass.Marshaler.Read(__msg, out msg);

                bool bRet = request_Echo(remote, pkOption, testClass, dic_test, msg);
                if (bRet == false)
                {
                    NeedImplement("request_Echo");
                }
            }
            break;

            case Common.reponse_Echo:
            {
                RemoteClass.CUserClass    testClass; RemoteClass.Marshaler.Read(__msg, out testClass);
                Dictionary <Int32, Int32> dic_test; RemoteClass.Marshaler.Read(__msg, out dic_test);
                string msg; RemoteClass.Marshaler.Read(__msg, out msg);

                bool bRet = reponse_Echo(remote, pkOption, testClass, dic_test, msg);
                if (bRet == false)
                {
                    NeedImplement("reponse_Echo");
                }
            }
            break;

            default: goto __fail;
            }

            return(true);

__fail:
            {
                //err
                return(false);
            }
        }
Exemple #2
0
        public bool request_out_room(ZNet.RemoteID remote, ZNet.CPackOption pkOption)
        {
            ZNet.CMessage   Msg   = new ZNet.CMessage();
            ZNet.PacketType msgID = (ZNet.PacketType)Common.request_out_room;

            Msg.WriteStart(msgID, pkOption, 0, true);


            return(PacketSend(remote, pkOption, Msg));
        }
Exemple #3
0
        RemoteClient GetRemoteClient(ZNet.RemoteID remote)
        {
            RemoteClient rc;

            if (RemoteClients.TryGetValue(remote, out rc) == false)
            {
                return(null);
            }
            return(rc);
        }
Exemple #4
0
        public bool request_go_lobby(ZNet.RemoteID remote, ZNet.CPackOption pkOption, string lobbyname)
        {
            ZNet.CMessage   Msg   = new ZNet.CMessage();
            ZNet.PacketType msgID = (ZNet.PacketType)Common.request_go_lobby;

            Msg.WriteStart(msgID, pkOption, 0, true);

            RemoteClass.Marshaler.Write(Msg, lobbyname);

            return(PacketSend(remote, pkOption, Msg));
        }
Exemple #5
0
        public bool GroupTestCommand(ZNet.RemoteID remote, ZNet.CPackOption pkOption, string cmd)
        {
            ZNet.CMessage   Msg   = new ZNet.CMessage();
            ZNet.PacketType msgID = (ZNet.PacketType)Common.GroupTestCommand;

            Msg.WriteStart(msgID, pkOption, 0, true);

            RemoteClass.Marshaler.Write(Msg, cmd);

            return(PacketSend(remote, pkOption, Msg));
        }
Exemple #6
0
        public bool reponse_Udp(ZNet.RemoteID remote, ZNet.CPackOption pkOption, string msg)
        {
            ZNet.CMessage   Msg   = new ZNet.CMessage();
            ZNet.PacketType msgID = (ZNet.PacketType)Common.reponse_Udp;

            Msg.WriteStart(msgID, pkOption, 0, true);

            RemoteClass.Marshaler.Write(Msg, msg);

            return(PacketSend(remote, pkOption, Msg));
        }
Exemple #7
0
        public bool request_move_to_server(ZNet.RemoteID remote, ZNet.CPackOption pkOption, int server_type)
        {
            ZNet.CMessage   Msg   = new ZNet.CMessage();
            ZNet.PacketType msgID = (ZNet.PacketType)Common.request_move_to_server;

            Msg.WriteStart(msgID, pkOption, 0, true);

            RemoteClass.Marshaler.Write(Msg, server_type);

            return(PacketSend(remote, pkOption, Msg));
        }
Exemple #8
0
        public bool request_join_room(ZNet.RemoteID remote, ZNet.CPackOption pkOption, Guid roomID)
        {
            ZNet.CMessage   Msg   = new ZNet.CMessage();
            ZNet.PacketType msgID = (ZNet.PacketType)Common.request_join_room;

            Msg.WriteStart(msgID, pkOption, 0, true);

            RemoteClass.Marshaler.Write(Msg, roomID);

            return(PacketSend(remote, pkOption, Msg));
        }
Exemple #9
0
        public bool notify_lobby_list(ZNet.RemoteID remote, ZNet.CPackOption pkOption, Dictionary <ZNet.RemoteID, ZNet.MasterInfo> lobby_list)
        {
            ZNet.CMessage   Msg   = new ZNet.CMessage();
            ZNet.PacketType msgID = (ZNet.PacketType)Common.notify_lobby_list;

            Msg.WriteStart(msgID, pkOption, 0, true);

            RemoteClass.Marshaler.Write(Msg, lobby_list);

            return(PacketSend(remote, pkOption, Msg));
        }
Exemple #10
0
        public bool reponse_move_to_server(ZNet.RemoteID remote, ZNet.CPackOption pkOption, bool result, ZNet.NetAddress addr)
        {
            ZNet.CMessage   Msg   = new ZNet.CMessage();
            ZNet.PacketType msgID = (ZNet.PacketType)Common.reponse_move_to_server;

            Msg.WriteStart(msgID, pkOption, 0, true);

            RemoteClass.Marshaler.Write(Msg, result);
            RemoteClass.Marshaler.Write(Msg, addr);

            return(PacketSend(remote, pkOption, Msg));
        }
Exemple #11
0
        public override bool ProcessMsg(ZNet.CRecvedMsg rm)
        {
            ZNet.RemoteID remote = rm.remote;
            if (remote == ZNet.RemoteID.Remote_None)
            {
                //err
            }

            ZNet.CPackOption pkOption = rm.pkop;
            ZNet.CMessage    __msg    = rm.msg;
            ZNet.PacketType  PkID     = rm.pkID;
            if (PkID < ZNet.PacketType.PacketType_User)
            {
                return(true);
            }

            switch (PkID)
            {
            case Common.GroupTestCommand:
            {
                string cmd; RemoteClass.Marshaler.Read(__msg, out cmd);

                bool bRet = GroupTestCommand(remote, pkOption, cmd);
                if (bRet == false)
                {
                    NeedImplement("GroupTestCommand");
                }
            }
            break;

            case Common.Chat:
            {
                string msg; RemoteClass.Marshaler.Read(__msg, out msg);

                bool bRet = Chat(remote, pkOption, msg);
                if (bRet == false)
                {
                    NeedImplement("Chat");
                }
            }
            break;

            default: goto __fail;
            }

            return(true);

__fail:
            {
                //err
                return(false);
            }
        }
Exemple #12
0
        public bool reponse_Echo(ZNet.RemoteID remote, ZNet.CPackOption pkOption, RemoteClass.CUserClass testClass, Dictionary <Int32, Int32> dic_test, string msg)
        {
            ZNet.CMessage   Msg   = new ZNet.CMessage();
            ZNet.PacketType msgID = (ZNet.PacketType)Common.reponse_Echo;

            Msg.WriteStart(msgID, pkOption, 0, true);

            RemoteClass.Marshaler.Write(Msg, testClass);
            RemoteClass.Marshaler.Write(Msg, dic_test);
            RemoteClass.Marshaler.Write(Msg, msg);

            return(PacketSend(remote, pkOption, Msg));
        }
Exemple #13
0
        public bool room_lobby_makeroom(ZNet.RemoteID remote, ZNet.CPackOption pkOption, Guid roomID, string name, int number, ZNet.RemoteID remote_svr, ZNet.RemoteID remote_lobby, Guid userID)
        {
            ZNet.CMessage   Msg   = new ZNet.CMessage();
            ZNet.PacketType msgID = (ZNet.PacketType)Common.room_lobby_makeroom;

            Msg.WriteStart(msgID, pkOption, 0, true);

            RemoteClass.Marshaler.Write(Msg, roomID);
            RemoteClass.Marshaler.Write(Msg, name);
            RemoteClass.Marshaler.Write(Msg, number);
            RemoteClass.Marshaler.Write(Msg, remote_svr);
            RemoteClass.Marshaler.Write(Msg, remote_lobby);
            RemoteClass.Marshaler.Write(Msg, userID);

            return(PacketSend(remote, pkOption, Msg));
        }
Exemple #14
0
        public GrpServer()
        {
            this.GroupID = ZNet.RemoteID.Remote_None;

            proxy = new Rmi.Proxy();
            stub = new Rmi.Stub();

            m_Core.Attach(proxy, stub);

            // 채팅 메세지
            stub.Chat = (ZNet.RemoteID remote, ZNet.CPackOption pkOption, string msg) =>
            {
                Console.WriteLine("Remote[{0}] msg : {1}", remote, msg);
                proxy.Chat(remote, ZNet.CPackOption.Basic, msg);
                return true;
            };

            // 그룹 관리 처리하기 예제
            stub.GroupTestCommand = (ZNet.RemoteID remote, ZNet.CPackOption pkOption, string cmd) =>
            {
                switch(cmd)
                {
                    case "/make":   // 그룹 생성 또는 합류처리
                        if (this.GroupID == ZNet.RemoteID.Remote_None)
                        {
                            if (this.m_Core.CreateGroup(out this.GroupID, remote))
                            {
                                Console.WriteLine("그룹생성완료 groupID[{0}] remote[{1}] members[1]", this.GroupID, remote);
                            }
                            else
                            {
                                Console.WriteLine("그룹생성오류");
                            }
                        }
                        else
                        {
                            int Members;
                            if (this.m_Core.JoinGroup(this.GroupID, remote, out Members))
                            {
                                Console.WriteLine("그룹합류완료 groupID[{0}] remote[{1}] members[{2}]", this.GroupID, remote, Members);
                            }
                        }
                        break;

                    case "/destroy":
                        // 그룹파괴 시도하기 : group_destroy_handler를 통해 결과 통보
                        this.m_Core.DestroyGroup(this.GroupID);
                        break;

                    case "/leave":
                        // 그룹탈퇴 시도하기 : group_memberout_handler를 통해 결과 통보
                        this.m_Core.OutGroup(this.GroupID, remote);
                        break;

                    case "/msg":
                        // 그룹 전체 메세지 보내기 : remoteID에 그룹아이디(this.GroupID)를 넣는것으로 ok
                        proxy.Chat(this.GroupID, ZNet.CPackOption.Basic, "Group test message.");
                        break;
                }
                return true;
            };

            // 그룹 관련 이벤트 처리
            m_Core.group_memberout_handler = (ZNet.RemoteID groupID, ZNet.RemoteID memberID, int Members) =>
            {
                Console.WriteLine("GroupOut,   groupID {0}  remote {1}  members {2}\n", groupID, memberID, Members);
            };
            m_Core.group_destroy_handler = (ZNet.RemoteID groupID) =>
            {
                Console.WriteLine("GroupDestroy,   groupID {0}\n", groupID);
                this.GroupID = ZNet.RemoteID.Remote_None;
            };


            // 기타
            m_Core.client_join_handler = (ZNet.RemoteID remote, ZNet.NetAddress addr, ZNet.ArrByte move_server, ZNet.ArrByte move_param) =>
            {
                Console.WriteLine("Client {0} is Join {1}:{2}.\n", remote, addr.m_ip, addr.m_port);
            };

            m_Core.client_leave_handler = (ZNet.RemoteID remote, bool bMoveServer) =>
            {
                Console.WriteLine("Client {0} Leave.\n", remote);
            };

            m_Core.message_handler = (ZNet.ResultInfo result) =>
            {
                string str_msg = "Msg : ";
                str_msg += result.msg;
                Console.WriteLine(str_msg);
            };

            m_Core.exception_handler = (Exception e) =>
            {
                string str_msg = "Exception : ";
                str_msg += e.ToString();
                Console.WriteLine(str_msg);
            };
        }
Exemple #15
0
        public override bool ProcessMsg(ZNet.CRecvedMsg rm)
        {
            ZNet.RemoteID remote = rm.remote;
            if (remote == ZNet.RemoteID.Remote_None)
            {
                //err
            }

            ZNet.CPackOption pkOption = rm.pkop;
            ZNet.CMessage    __msg    = rm.msg;
            ZNet.PacketType  PkID     = rm.pkID;
            if (PkID < ZNet.PacketType.PacketType_User)
            {
                return(true);
            }

            switch (PkID)
            {
            case Common.request_lobby_list:
            {
                bool bRet = request_lobby_list(remote, pkOption);
                if (bRet == false)
                {
                    NeedImplement("request_lobby_list");
                }
            }
            break;

            case Common.notify_lobby_list:
            {
                Dictionary <ZNet.RemoteID, ZNet.MasterInfo> lobby_list; RemoteClass.Marshaler.Read(__msg, out lobby_list);

                bool bRet = notify_lobby_list(remote, pkOption, lobby_list);
                if (bRet == false)
                {
                    NeedImplement("notify_lobby_list");
                }
            }
            break;

            case Common.Chat:
            {
                string msg; RemoteClass.Marshaler.Read(__msg, out msg);

                bool bRet = Chat(remote, pkOption, msg);
                if (bRet == false)
                {
                    NeedImplement("Chat");
                }
            }
            break;

            case Common.request_go_lobby:
            {
                string lobbyname; RemoteClass.Marshaler.Read(__msg, out lobbyname);

                bool bRet = request_go_lobby(remote, pkOption, lobbyname);
                if (bRet == false)
                {
                    NeedImplement("request_go_lobby");
                }
            }
            break;

            case Common.request_make_room:
            {
                string name; RemoteClass.Marshaler.Read(__msg, out name);

                bool bRet = request_make_room(remote, pkOption, name);
                if (bRet == false)
                {
                    NeedImplement("request_make_room");
                }
            }
            break;

            case Common.request_join_room:
            {
                Guid roomID; RemoteClass.Marshaler.Read(__msg, out roomID);

                bool bRet = request_join_room(remote, pkOption, roomID);
                if (bRet == false)
                {
                    NeedImplement("request_join_room");
                }
            }
            break;

            case Common.request_out_room:
            {
                bool bRet = request_out_room(remote, pkOption);
                if (bRet == false)
                {
                    NeedImplement("request_out_room");
                }
            }
            break;

            case Common.room_lobby_makeroom:
            {
                Guid          roomID; RemoteClass.Marshaler.Read(__msg, out roomID);
                string        name; RemoteClass.Marshaler.Read(__msg, out name);
                int           number; RemoteClass.Marshaler.Read(__msg, out number);
                ZNet.RemoteID remote_svr; RemoteClass.Marshaler.Read(__msg, out remote_svr);
                ZNet.RemoteID remote_lobby; RemoteClass.Marshaler.Read(__msg, out remote_lobby);
                Guid          userID; RemoteClass.Marshaler.Read(__msg, out userID);

                bool bRet = room_lobby_makeroom(remote, pkOption, roomID, name, number, remote_svr, remote_lobby, userID);
                if (bRet == false)
                {
                    NeedImplement("room_lobby_makeroom");
                }
            }
            break;

            case Common.room_lobby_joinroom:
            {
                Guid roomID; RemoteClass.Marshaler.Read(__msg, out roomID);
                Guid userID; RemoteClass.Marshaler.Read(__msg, out userID);

                bool bRet = room_lobby_joinroom(remote, pkOption, roomID, userID);
                if (bRet == false)
                {
                    NeedImplement("room_lobby_joinroom");
                }
            }
            break;

            case Common.room_lobby_outroom:
            {
                Guid roomID; RemoteClass.Marshaler.Read(__msg, out roomID);
                Guid userID; RemoteClass.Marshaler.Read(__msg, out userID);

                bool bRet = room_lobby_outroom(remote, pkOption, roomID, userID);
                if (bRet == false)
                {
                    NeedImplement("room_lobby_outroom");
                }
            }
            break;

            default: goto __fail;
            }

            return(true);

__fail:
            {
                //err
                return(false);
            }
        }
Exemple #16
0
        public override bool ProcessMsg(ZNet.CRecvedMsg rm)
        {
            ZNet.RemoteID remote = rm.remote;
            if (remote == ZNet.RemoteID.Remote_None)
            {
                //err
            }

            ZNet.CPackOption pkOption = rm.pkop;
            ZNet.CMessage    __msg    = rm.msg;
            ZNet.PacketType  PkID     = rm.pkID;
            if (PkID < ZNet.PacketType.PacketType_User)
            {
                return(true);
            }

            switch (PkID)
            {
            case Common.request_Login:
            {
                string name; RemoteClass.Marshaler.Read(__msg, out name);
                string pass; RemoteClass.Marshaler.Read(__msg, out pass);

                bool bRet = request_Login(remote, pkOption, name, pass);
                if (bRet == false)
                {
                    NeedImplement("request_Login");
                }
            }
            break;

            case Common.reponse_Login:
            {
                bool bResult; RemoteClass.Marshaler.Read(__msg, out bResult);

                bool bRet = reponse_Login(remote, pkOption, bResult);
                if (bRet == false)
                {
                    NeedImplement("reponse_Login");
                }
            }
            break;

            case Common.server_move:
            {
                int server_type; RemoteClass.Marshaler.Read(__msg, out server_type);

                bool bRet = server_move(remote, pkOption, server_type);
                if (bRet == false)
                {
                    NeedImplement("server_move");
                }
            }
            break;

            case Common.Chat:
            {
                string txt; RemoteClass.Marshaler.Read(__msg, out txt);

                bool bRet = Chat(remote, pkOption, txt);
                if (bRet == false)
                {
                    NeedImplement("Chat");
                }
            }
            break;

            default: goto __fail;
            }

            return(true);

__fail:
            {
                //err
                return(false);
            }
        }
Exemple #17
0
        public GrpServer()
        {
            this.GroupID = ZNet.RemoteID.Remote_None;

            proxy = new Rmi.Proxy();
            stub  = new Rmi.Stub();

            m_Core.Attach(proxy, stub);

            // 채팅 메세지
            stub.Chat = (ZNet.RemoteID remote, ZNet.CPackOption pkOption, string msg) =>
            {
                Console.WriteLine("Remote[{0}] msg : {1}", remote, msg);
                proxy.Chat(remote, ZNet.CPackOption.Basic, msg);
                return(true);
            };

            // 그룹 관리 처리하기 예제
            stub.GroupTestCommand = (ZNet.RemoteID remote, ZNet.CPackOption pkOption, string cmd) =>
            {
                switch (cmd)
                {
                case "/make":       // 그룹 생성 또는 합류처리
                    if (this.GroupID == ZNet.RemoteID.Remote_None)
                    {
                        if (this.m_Core.CreateGroup(out this.GroupID, remote))
                        {
                            Console.WriteLine("그룹생성완료 groupID[{0}] remote[{1}] members[1]", this.GroupID, remote);
                        }
                        else
                        {
                            Console.WriteLine("그룹생성오류");
                        }
                    }
                    else
                    {
                        int Members;
                        if (this.m_Core.JoinGroup(this.GroupID, remote, out Members))
                        {
                            Console.WriteLine("그룹합류완료 groupID[{0}] remote[{1}] members[{2}]", this.GroupID, remote, Members);
                        }
                    }
                    break;

                case "/destroy":
                    // 그룹파괴 시도하기 : group_destroy_handler를 통해 결과 통보
                    this.m_Core.DestroyGroup(this.GroupID);
                    break;

                case "/leave":
                    // 그룹탈퇴 시도하기 : group_memberout_handler를 통해 결과 통보
                    this.m_Core.OutGroup(this.GroupID, remote);
                    break;

                case "/msg":
                    // 그룹 전체 메세지 보내기 : remoteID에 그룹아이디(this.GroupID)를 넣는것으로 ok
                    proxy.Chat(this.GroupID, ZNet.CPackOption.Basic, "Group test message.");
                    break;
                }
                return(true);
            };

            // 그룹 관련 이벤트 처리
            m_Core.group_memberout_handler = (ZNet.RemoteID groupID, ZNet.RemoteID memberID, int Members) =>
            {
                Console.WriteLine("GroupOut,   groupID {0}  remote {1}  members {2}\n", groupID, memberID, Members);
            };
            m_Core.group_destroy_handler = (ZNet.RemoteID groupID) =>
            {
                Console.WriteLine("GroupDestroy,   groupID {0}\n", groupID);
                this.GroupID = ZNet.RemoteID.Remote_None;
            };


            // 기타
            m_Core.client_join_handler = (ZNet.RemoteID remote, ZNet.NetAddress addr, ZNet.ArrByte move_server, ZNet.ArrByte move_param) =>
            {
                Console.WriteLine("Client {0} is Join {1}:{2}.\n", remote, addr.m_ip, addr.m_port);
            };

            m_Core.client_leave_handler = (ZNet.RemoteID remote, bool bMoveServer) =>
            {
                Console.WriteLine("Client {0} Leave.\n", remote);
            };

            m_Core.message_handler = (ZNet.ResultInfo result) =>
            {
                string str_msg = "Msg : ";
                str_msg += result.msg;
                Console.WriteLine(str_msg);
            };

            m_Core.exception_handler = (Exception e) =>
            {
                string str_msg = "Exception : ";
                str_msg += e.ToString();
                Console.WriteLine(str_msg);
            };
        }
Exemple #18
0
        public override bool ProcessMsg(ZNet.CRecvedMsg rm)
        {
            ZNet.RemoteID remote = rm.remote;
            if (remote == ZNet.RemoteID.Remote_None)
            {
                //err
            }

            ZNet.CPackOption pkOption = rm.pkop;
            ZNet.CMessage    __msg    = rm.msg;
            ZNet.PacketType  PkID     = rm.pkID;
            if (PkID < ZNet.PacketType.PacketType_User)
            {
                return(true);
            }

            switch (PkID)
            {
            case Common.request_message:
            {
                string msg; RemoteClass.Marshaler.Read(__msg, out msg);

                bool bRet = request_message(remote, pkOption, msg);
                if (bRet == false)
                {
                    NeedImplement("request_message");
                }
            }
            break;

            case Common.reponse_message:
            {
                string msg; RemoteClass.Marshaler.Read(__msg, out msg);

                bool bRet = reponse_message(remote, pkOption, msg);
                if (bRet == false)
                {
                    NeedImplement("reponse_message");
                }
            }
            break;

            case Common.request_move_to_server:
            {
                int server_type; RemoteClass.Marshaler.Read(__msg, out server_type);

                bool bRet = request_move_to_server(remote, pkOption, server_type);
                if (bRet == false)
                {
                    NeedImplement("request_move_to_server");
                }
            }
            break;

            case Common.reponse_move_to_server:
            {
                bool            result; RemoteClass.Marshaler.Read(__msg, out result);
                ZNet.NetAddress addr; RemoteClass.Marshaler.Read(__msg, out addr);

                bool bRet = reponse_move_to_server(remote, pkOption, result, addr);
                if (bRet == false)
                {
                    NeedImplement("reponse_move_to_server");
                }
            }
            break;

            default: goto __fail;
            }

            return(true);

__fail:
            {
                //err
                return(false);
            }
        }