Ejemplo n.º 1
0
        private void OnSocketClienMessageReceived196(SocketClient client, ServiceDesc desc)
        {
            var newClientId = desc.ClientId;
            var oldClientId = desc.Routing[0];
            var sceneIndex  = (int)desc.Routing[1];
            //Logger.Fatal("Gate Re Connect ------ 1---{0} -- {1}", DateTime.Now.ToBinary(), oldClientId);
            CharacterInfoEx characterInfo;
            ServerClient    serverClient;

            if (mFromClientId2Client.TryRemove(newClientId, out serverClient))
            {
                //serverClient.UserData;
                mFromClientId2Client.AddOrUpdate(oldClientId, serverClient, (arg1, arg2) => serverClient);
                characterInfo = serverClient.UserData as CharacterInfoEx;
                if (characterInfo == null)
                {
                    return;
                }
                characterInfo.ClientId    = oldClientId;
                characterInfo.mState      = GateClientState.GamePlay;
                characterInfo.CharacterId = desc.CharacterId;

                var server = GetSocketClientByServiceTypeAndIndex(ServiceType.Scene, sceneIndex);
                characterInfo.Servers[(int)ServiceType.Scene] = server;


                var descReply = new ServiceDesc();
                descReply.FuncId      = 2035;
                descReply.ServiceType = (int)ServiceType.Login;
                descReply.Type        = (int)MessageType.SC;
                using (var ms = new MemoryStream())
                {
                    var ret = new __RPC_Login_NotifyReConnet_ARG_int32_result__();
                    ret.Result = 0;
                    Serializer.Serialize(ms, ret);
                    descReply.Data = ms.ToArray();
                }
                serverClient.SendMessage(descReply);
            }
            else
            {
                Logger.Warn("Client {0} is not connected. ", newClientId);
            }
        }
Ejemplo n.º 2
0
 public NotifyReConnetOutMessage(IAgentBase sender, int result)
     : base(sender, ServiceType.Login, 2035)
 {
     Request        = new __RPC_Login_NotifyReConnet_ARG_int32_result__();
     Request.Result = result;
 }