Esempio n. 1
0
        QcClient TryConnectUser(INetUser user)
        {
            ushort port = user.Port;

            string name   = user.Name;
            string pcname = user.HostName;

            try
            {
                var ips = user.IP.Split(new[] { ',' });
                foreach (var i in ips)
                {
                    var r = TryConnectIp(i, port, name);
                    if (r != null)
                    {
                        return(r);
                    }
                }

                /*
                 * // 这是个费时的操作
                 * var ipfromhost = System.Net.Dns.GetHostAddresses(pcname);
                 * foreach (var i in ipfromhost)
                 * {
                 *
                 * }*/
            }
            catch (Exception ex)
            {
                //string a=ex.ToString;
                return(null);
            }

            return(null);
        }
Esempio n. 2
0
        public QcMsgUser AddUser(INetUser user)
        {
            var qmu = new QcMsgUser(user);

            lstUser.TryAdd(qmu.Name, qmu);
            return(qmu);
        }
Esempio n. 3
0
        private void ReadPoints(INetUser user, INetRoom room, System.Action <NetRoomPlayerRank> onSuccess, System.Action <INetError> onError)
        {
            WWWForm form = new WWWForm();

            form.AddField("op", "read_points");
            form.AddField("room_id", room.RoomId);
            form.AddField("room_mode", room.RoomMode.ToString());
            form.AddField("user_id", user.id);
            form.AddField("user_name", user.name);
            form.AddField("avatar_id", user.avatarId);
            form.AddField("level", user.level);

            MakeRequest(form, json => {
                try {
                    Dictionary <string, object> dict = Json.Deserialize(json) as Dictionary <string, object>;
                    if (dict == null)
                    {
                        onError?.Invoke(errorFactory.Create(NetErrorCode.json, string.Empty));
                        return;
                    }
                    NetRoomPlayerRank rank = new NetRoomPlayerRank(dict, resourceService);
                    onSuccess?.Invoke(rank);
                } catch (Exception exception) {
                    onError?.Invoke(errorFactory.Create(NetErrorCode.json, string.Empty));
                }
            }, onError);
        }
Esempio n. 4
0
 private void ProcessReceivedMessage(INetUser client, byte[] messageBuffer)
 {
     using (INetPacketStream packet = _packetParser.PacketProcessor.CreatePacket(messageBuffer))
     {
         client.HandleMessage(packet);
     }
 }
Esempio n. 5
0
        private void WriteUser(INetUser user, string wishlist, System.Action <INetUser> onSuccess, System.Action <INetError> onError)
        {
            WWWForm form = new WWWForm();

            form.AddField("op", "write_user");
            form.AddField("user_id", user.id);
            form.AddField("user_name", user.name);
            form.AddField("avatar_id", user.avatarId);
            form.AddField("level", user.level);
            form.AddField("wishlist", wishlist);

            MakeRequest(form, (json) => {
                try {
                    Dictionary <string, object> userObj = Json.Deserialize(json) as Dictionary <string, object>;
                    if (userObj == null)
                    {
                        onError?.Invoke(errorFactory.Create(NetErrorCode.json, string.Empty));
                        return;
                    }
                    NetPlayer player = new NetPlayer(userObj, true, resourceService);
                    onSuccess?.Invoke(player);
                } catch (Exception exception) {
                    onError?.Invoke(errorFactory.Create(NetErrorCode.json, string.Empty));
                }
            }, onError);
        }
Esempio n. 6
0
 /// <summary>
 /// Adds the message to the sending queue.
 /// </summary>
 /// <param name="user">User that sent the message</param>
 /// <param name="message">Message</param>
 private void SendMessageAction(INetUser user, byte[] message)
 {
     if (this._clients.ContainsKey(user.Id))
     {
         this._messageQueue.Add(new MessageData(user, message));
     }
 }
Esempio n. 7
0
        /// <inheritdoc />
        public void Start(INetUser clientConnection)
        {
            SocketAsyncEventArgs socketAsyncEvent = GetSocketEvent();

            socketAsyncEvent.UserToken = new NetToken(clientConnection);

            ReceiveData(clientConnection, socketAsyncEvent);
        }
Esempio n. 8
0
 public QcMsgUser(INetUser user)
 {
     this.IP       = user.IP;
     this.Port     = user.Port;
     this.HostName = user.HostName;
     this.name     = user.Name;
     this.User     = user;
 }
Esempio n. 9
0
 public void ReadAllRoomPoints(INetUser user, List <string> roomIds)
 {
     ReadAllRoomPoints(user, roomIds, (ranks) => {
         netService.OnRoomNetRanksReceived(ranks);
     }, (error) => {
         netService.OnNetErrorOccured("read_points", error);
     });
 }
Esempio n. 10
0
 public void ReadPoints(INetUser user, INetRoom room)
 {
     ReadPoints(user, room, rank => {
         netService.OnRoomNetRankReaded(user, room, rank);
     }, (error) => {
         netService.OnNetErrorOccured("read_points", error);
     });
 }
Esempio n. 11
0
 public void WriteUser(INetUser user, Dictionary <string, string> wishlist)
 {
     WriteUser(user, MiniJSON.Json.Serialize(wishlist), (netUser) => {
         netService.OnNetUserWritten(netUser);
     }, (error) => {
         netService.OnNetErrorOccured("write_user", error);
     });
 }
Esempio n. 12
0
        public static void SendWelcome(INetUser client)
        {
            using (var packet = new NetPacket())
            {
                packet.Write((uint)ISCPacketType.WELCOME);

                client.Send(packet);
            }
        }
Esempio n. 13
0
 public void RemoveFriend(INetUser targetUser)
 {
     RemoveFriend(netService.LocalPlayer, targetUser, (newfriends) => {
         this.friends.Replace(newfriends);
         RavenhillEvents.OnFriendsUpdated(friends);
     }, (error) => {
         netService.OnNetErrorOccured("remove_friend", error);
     });
 }
Esempio n. 14
0
        public static void SendAuthenticationResult(INetUser client, ISCPacketCode result)
        {
            using (var packet = new NetPacket())
            {
                packet.Write((uint)ISCPacketType.AUTHENT_RESULT);
                packet.Write((uint)result);

                client.Send(packet);
            }
        }
Esempio n. 15
0
        /// <summary>
        /// Send a welcome packet to the client.
        /// </summary>
        /// <param name="client">Client</param>
        /// <param name="sessionId">Session id</param>
        public static void SendWelcome(INetUser client, uint sessionId)
        {
            using (var packet = new FFPacket())
            {
                packet.WriteHeader(PacketType.WELCOME);
                packet.Write(sessionId);

                client.Send(packet);
            }
        }
Esempio n. 16
0
        /// <summary>
        /// Send a pong response to the client.
        /// </summary>
        /// <param name="client">Client</param>
        /// <param name="time">Current time</param>
        public static void SendPong(INetUser client, int time)
        {
            using (var packet = new FFPacket())
            {
                packet.WriteHeader(PacketType.PING);
                packet.Write(time);

                client.Send(packet);
            }
        }
Esempio n. 17
0
        /// <summary>
        /// Sends a login error.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="error"></param>
        public static void SendLoginError(INetUser client, ErrorType error)
        {
            using (var packet = new FFPacket())
            {
                packet.WriteHeader(PacketType.ERROR);
                packet.Write((int)error);

                client.Send(packet);
            }
        }
Esempio n. 18
0
        /// <summary>
        /// Send an authentication request to the ISCServer.
        /// </summary>
        /// <param name="client">client connection</param>
        /// <param name="id">Server Id</param>
        /// <param name="host">Server Host</param>
        /// <param name="name">Server name</param>
        public static void SendAuthentication(INetUser client, int id, string host, string name)
        {
            using (var packet = new NetPacket())
            {
                packet.Write((uint)ISCPacketType.AUTHENT);
                packet.Write(id);
                packet.Write(host);
                packet.Write(name);
                packet.Write((byte)ISCServerType.Cluster);

                client.Send(packet);
            }
        }
Esempio n. 19
0
        public static void SendUpdateWorldList(INetUser client, IEnumerable <WorldServerInfo> worldServers)
        {
            using (var packet = new NetPacket())
            {
                packet.Write((uint)ISCPacketType.UPDATE_CLUSTER_WORLDS_LIST);
                packet.Write(worldServers.Count());

                foreach (var world in worldServers)
                {
                    packet.Write(world.Id);
                    packet.Write(world.Host);
                    packet.Write(world.Name);
                    packet.Write(world.ParentClusterId);
                }

                client.Send(packet);
            }
        }
Esempio n. 20
0
        private void ReadAllRoomPoints(INetUser user, List <string> roomIds, Action <Dictionary <string, NetRoomPlayerRank> > onSuccess, Action <INetError> onError)
        {
            WWWForm form = new WWWForm();

            form.AddField("op", "read_all_rooms_points");
            form.AddField("user_id", user.id);
            form.AddField("user_name", user.name);
            form.AddField("avatar_id", user.avatarId);
            form.AddField("level", user.level);
            form.AddField("rooms", roomIds.JoinToString(","));
            MakeRequest(form, (json) => {
                try {
                    Dictionary <string, NetRoomPlayerRank> ranks = ParseRoomRanks(json);
                    onSuccess?.Invoke(ranks);
                } catch (Exception exception) {
                    onError?.Invoke(errorFactory.Create(NetErrorCode.json, string.Empty));
                }
            }, onError);
        }
Esempio n. 21
0
        private void AddFriend(INetUser user, INetUser targetUser, Action <FriendCollection> onSuccess, Action <INetError> onError)
        {
            WWWForm form = new WWWForm();

            form.AddField("op", "add_friend");
            form.AddField("user_id", user.id);
            form.AddField("target_user_id", targetUser.id);
            MakeRequest(form, json => {
                Dictionary <string, object> dict = MiniJSON.Json.Deserialize(json) as Dictionary <string, object>;
                if (dict == null)
                {
                    onError?.Invoke(errorFactory.Create(NetErrorCode.json, string.Empty));
                }
                else
                {
                    FriendCollection friendCollection = new FriendCollection(dict, resourceService);
                    onSuccess?.Invoke(friendCollection);
                }
            }, onError);
        }
        /// <inheritdoc />
        public void DispatchMessage(INetUser client, NetDataToken token)
        {
            var bufferSize = this.PacketProcessor.IncludeHeader ? this.PacketProcessor.HeaderSize + token.MessageSize.Value : token.MessageSize.Value;
            var buffer     = new byte[bufferSize];

            if (this.PacketProcessor.IncludeHeader)
            {
                Array.Copy(token.HeaderData, 0, buffer, 0, this.PacketProcessor.HeaderSize);
                Array.Copy(token.MessageData, 0, buffer, this.PacketProcessor.HeaderSize, token.MessageSize.Value);
            }
            else
            {
                Array.Copy(token.MessageData, 0, buffer, 0, token.MessageSize.Value);
            }

            Task.Run(() =>
            {
                using (INetPacketStream packet = this.PacketProcessor.CreatePacket(buffer))
                    client.HandleMessage(packet);
            });
        }
Esempio n. 23
0
        /// <summary>
        /// Sends the available server list.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="username"></param>
        /// <param name="clusters"></param>
        public static void SendServerList(INetUser client, string username, IEnumerable <ClusterServerInfo> clusters)
        {
            using (var packet = new FFPacket())
            {
                packet.WriteHeader(PacketType.SRVR_LIST);
                packet.Write(0);
                packet.Write <byte>(1);
                packet.Write(username);
                packet.Write(clusters.Sum(x => x.WorldServers.Count) + clusters.Count());

                foreach (ClusterServerInfo cluster in clusters)
                {
                    packet.Write(-1);
                    packet.Write(cluster.Id);
                    packet.Write(cluster.Name);
                    packet.Write(cluster.Host);
                    packet.Write(0);
                    packet.Write(0);
                    packet.Write(1);
                    packet.Write(0);

                    foreach (WorldServerInfo world in cluster.WorldServers)
                    {
                        packet.Write(cluster.Id);
                        packet.Write(world.Id);
                        packet.Write(world.Name);
                        packet.Write(world.Host);
                        packet.Write(0);
                        packet.Write(0);
                        packet.Write(1);
                        packet.Write(100); // Capacity
                    }
                }

                client.Send(packet);
            }
        }
Esempio n. 24
0
 /// <inheritdoc />
 protected override void OnError(INetUser client, SocketError socketError)
 {
     // TODO: dispatch error to the parent server
 }
Esempio n. 25
0
 /// <inheritdoc />
 protected override void OnDisconnected(INetUser client) => this._server.DisconnectClient(client.Id);
Esempio n. 26
0
 /// <summary>
 /// A socket error has occured.
 /// </summary>
 /// <param name="client">Client.</param>
 /// <param name="socketError">Socket error.</param>
 protected abstract void OnError(INetUser client, SocketError socketError);
Esempio n. 27
0
 /// <summary>
 /// Client has been disconnected.
 /// </summary>
 /// <param name="client">Disconnected client.</param>
 protected abstract void OnDisconnected(INetUser client);
Esempio n. 28
0
 public void OnNetUserWritten(INetUser user)
 {
     RavenhillEvents.OnNetUserWritten(user);
     Debug.Log("User written: " + user.ToString());
 }
Esempio n. 29
0
 public void OnRoomNetRankReaded(INetUser user, INetRoom room, NetRoomPlayerRank rank)
 {
     RavenhillEvents.OnRoomNetRankReaded(user, room, rank);
     Debug.Log($"Room Rank Readed: {rank.ToString()}");
     UpdateRanks(room, rank);
 }
Esempio n. 30
0
 /// <summary>
 /// Creates a new <see cref="MessageData"/> instance.
 /// </summary>
 /// <param name="user">Message owner</param>
 /// <param name="message">Message data</param>
 public MessageData(INetUser user, byte[] message)
 {
     this.User    = user;
     this.Message = message;
 }