public void Deserialize_WithPrimitivesAndDateTime_Successful()
        {
            string input =
                "type: unknown\n" +
                "id: 1111\n" +
                "alpha: 123777\n" +
                "beta: true\n" +
                "gamma: 123e+3\n" +
                "delta: 2018-03-01T07:00:00.0000000Z\n" +
                "epsilon: iki kudune ra kanggo\n" +
                "zeta: iki kudune dibuang";

            MessageType           type;
            long                  id;
            PrimitivesAndDateTime payload;
            ErrorCode             headerErr  = AwesomeFormat.ReadHeader(input, out type, out id);
            ErrorCode             payloadErr = AwesomeFormat.ReadPayload(input, out payload);

            Assert.That(headerErr, Is.EqualTo(ErrorCode.None));
            Assert.That(payloadErr, Is.EqualTo(ErrorCode.None));
            Assert.That(payload.alpha, Is.EqualTo(123777));
            Assert.That(payload.beta, Is.EqualTo(true));
            Assert.That(payload.gamma, Is.EqualTo(123000).Within(0.1));
            Assert.That(payload.delta, Is.EqualTo(new DateTime(2018, 03, 01, 07, 00, 00, DateTimeKind.Utc)));
        }
        public void Deserialize_WithPrimitivesAndStringArrays_Successful()
        {
            string input =
                "type: unknown\n" +
                "id: 1111\n" +
                "alpha: 123777\n" +
                "beta: true\n" +
                "gamma: 123e+3\n" +
                "delta: deserialize, string, arrays,so,this,should,  work,\n" +
                "epsilon: iki kudune ra kanggo\n" +
                "zeta: iki kudune dibuang";

            MessageType type;
            long        id;
            PrimitivesAndStringArrays payload;
            ErrorCode headerErr  = AwesomeFormat.ReadHeader(input, out type, out id);
            ErrorCode payloadErr = AwesomeFormat.ReadPayload(input, out payload);

            Assert.That(headerErr, Is.EqualTo(ErrorCode.None));
            Assert.That(payloadErr, Is.EqualTo(ErrorCode.None));
            Assert.That(payload.alpha, Is.EqualTo(123777));
            Assert.That(payload.beta, Is.EqualTo(true));
            Assert.That(payload.gamma, Is.EqualTo(123000).Within(0.1));
            Assert.That(payload.delta, Is.EquivalentTo(new []
            {
                "deserialize", " string", " arrays", "so", "this",
                "should", "  work"
            }));
        }
        public void Deserialize_WithPrimitivesAndDoubleArrays_Successful()
        {
            string input =
                "type: unknown\n" +
                "id: 1111\n" +
                "alpha: 123777\n" +
                "beta: true\n" +
                "gamma: 123e+3\n" +
                "delta: 16.125,2.25,7.375,8.000,\n" +
                "epsilon: iki kudune ra kanggo\n" +
                "zeta: iki kudune dibuang";

            MessageType type;
            long        id;
            PrimitivesAndDoubleArrays payload;
            ErrorCode headerErr  = AwesomeFormat.ReadHeader(input, out type, out id);
            ErrorCode payloadErr = AwesomeFormat.ReadPayload(input, out payload);

            Assert.That(headerErr, Is.EqualTo(ErrorCode.None));
            Assert.That(payloadErr, Is.EqualTo(ErrorCode.None));
            Assert.That(payload.alpha, Is.EqualTo(123777));
            Assert.That(payload.beta, Is.EqualTo(true));
            Assert.That(payload.gamma, Is.EqualTo(123000).Within(0.1));
            Assert.That(payload.delta, Is.EquivalentTo(new[] { 16.125, 2.25, 7.375, 8 }));
        }
        public void Deserialize_WithPrimitives_ForAllDataMemberAttributes_Successful()
        {
            string input =
                "type: unknown\n" +
                "id: 1111\n" +
                "alpha: 123777\n" +
                "beta: True\n" +
                "gamma: 123e+3\n" +
                "delta: isih string iki\n" +
                "epsilon: iki kudune ra kanggo\n" +
                "zeta: iki kudune dibuang";

            MessageType   type;
            long          id;
            AllPrimitives payload;
            ErrorCode     headerErr  = AwesomeFormat.ReadHeader(input, out type, out id);
            ErrorCode     payloadErr = AwesomeFormat.ReadPayload(input, out payload);

            Assert.That(headerErr, Is.EqualTo(ErrorCode.None));
            Assert.That(payloadErr, Is.EqualTo(ErrorCode.None));
            Assert.That(payload.alpha, Is.EqualTo(123777));
            Assert.That(payload.beta, Is.EqualTo(true));
            Assert.That(payload.gamma, Is.EqualTo(123000).Within(0.1));
            Assert.That(payload.delta, Is.EqualTo("isih string iki"));
        }
        public void Deserialize_WithAllStringMembers_ForAllDataMemberAttributes_Successful()
        {
            string input =
                "type: unknown\n" +
                "id: 1111\n" +
                "alpha: iki_huruf_alpa\n" +
                "beta: iki huruf beta\n" +
                "gamma: iki_hurup_gama\n" +
                "delta: iki hurop delta\n" +
                "epsilon: iki kudune ra kanggo\n" +
                "zeta: iki kudune dibuang";

            MessageType         type;
            long                id;
            AllStringNoTypeName payload;
            ErrorCode           headerErr  = AwesomeFormat.ReadHeader(input, out type, out id);
            ErrorCode           payloadErr = AwesomeFormat.ReadPayload(input, out payload);

            Assert.That(headerErr, Is.EqualTo(ErrorCode.None));
            Assert.That(payloadErr, Is.EqualTo(ErrorCode.None));
            Assert.That(payload.alpha, Is.EqualTo("iki_huruf_alpa"));
            Assert.That(payload.beta, Is.EqualTo("iki huruf beta"));
            Assert.That(payload.gamma, Is.EqualTo("iki_hurup_gama"));
            Assert.That(payload.delta, Is.EqualTo("iki hurop delta"));
        }
Пример #6
0
        private void SendRequest <U>(MessageType requestType, ResultCallback <U> callback) where U : class, new()
        {
            long messageId = GenerateId();
            var  writer    = new StringWriter();

            AwesomeFormat.WriteHeader(writer, requestType, messageId);

            this.responseCallbacks[messageId] = (errorCode, response) =>
            {
                Result <U> result;

                if (errorCode != ErrorCode.None)
                {
                    result = Result <U> .CreateError(errorCode);
                }
                else
                {
                    U responsePayload;
                    errorCode = AwesomeFormat.ReadPayload(response, out responsePayload);

                    result = errorCode != ErrorCode.None
                        ? Result <U> .CreateError(errorCode)
                        : Result <U> .CreateOk(responsePayload);
                }

                this.coroutineRunner.Run(() => callback.Try(result));
            };

            this.webSocket.Send(writer.ToString());
        }
        public void Deserialize_WithMissingFields_IsError()
        {
            string input =
                "type: unknown\n" +
                "id: 1111\n" +
                "beta: true\n" +
                "gamma: 123e+3\n" +
                "delta: 16.125,2.25,7.375,8.000,\n" +
                "epsilon: iki kudune ra kanggo\n" +
                "zeta: iki kudune dibuang";

            MessageType type;
            long        id;
            PrimitivesAndDoubleArrays payload;
            ErrorCode headerErr  = AwesomeFormat.ReadHeader(input, out type, out id);
            ErrorCode payloadErr = AwesomeFormat.ReadPayload(input, out payload);

            Assert.That(headerErr, Is.EqualTo(ErrorCode.None));
            Assert.That(payloadErr, Is.Not.EqualTo(ErrorCode.None));
        }
Пример #8
0
        private static void HandleNotification <T>(string message, ResultCallback <T> handler)
            where T : class, new()
        {
            if (handler == null)
            {
                return;
            }

            T         payload;
            ErrorCode errorCode = AwesomeFormat.ReadPayload(message, out payload);

            if (errorCode != ErrorCode.None)
            {
                handler(Result <T> .CreateError(errorCode));
            }
            else
            {
                handler(Result <T> .CreateOk(payload));
            }
        }
Пример #9
0
        private void HandleOnMessage(string message)
        {
            Report.GetWebSocketResponse(message);

            long        messageId;
            MessageType messageType;
            ErrorCode   errorCode = AwesomeFormat.ReadHeader(message, out messageType, out messageId);

            switch (messageType)
            {
            case MessageType.partyGetInvitedNotif:
                Lobby.HandleNotification(message, this.InvitedToParty);

                break;

            case MessageType.partyJoinNotif:
                Lobby.HandleNotification(message, this.JoinedParty);

                break;

            case MessageType.partyKickNotif:
                Lobby.HandleNotification(message, this.KickedFromParty);

                break;

            case MessageType.partyLeaveNotif:
                Lobby.HandleNotification(message, this.LeaveFromParty);

                break;

            case MessageType.personalChatNotif:
                Lobby.HandleNotification(message, this.PersonalChatReceived);

                break;

            case MessageType.partyChatNotif:
                Lobby.HandleNotification(message, this.PartyChatReceived);

                break;

            case MessageType.messageNotif:
                Lobby.HandleNotification(message, this.OnNotification);

                break;

            case MessageType.userStatusNotif:
                Lobby.HandleNotification(message, this.FriendsStatusChanged);

                break;

            case MessageType.matchmakingNotif:
                Lobby.HandleNotification(message, this.MatchmakingCompleted);

                break;

            case MessageType.dsNotif:
                Lobby.HandleNotification(message, this.DSUpdated);

                break;

            case MessageType.acceptFriendsNotif:
                Lobby.HandleNotification(message, this.FriendRequestAccepted);

                break;

            case MessageType.requestFriendsNotif:
                Lobby.HandleNotification(message, this.OnIncomingFriendRequest);

                break;

            case MessageType.setReadyConsentNotif:
                Lobby.HandleNotification(message, this.ReadyForMatchConfirmed);

                break;

            case MessageType.rematchmakingNotif:
                Lobby.HandleNotification(message, this.RematchmakingNotif);

                break;

            case MessageType.channelChatNotif:
                Lobby.HandleNotification(message, this.ChannelChatReceived);

                break;

            case MessageType.connectNotif:
                AwesomeFormat.ReadPayload(message, out lobbySessionId);
                break;

            case MessageType.disconnectNotif:
                Lobby.HandleNotification(message, this.Disconnecting);
                break;

            case MessageType.partyDataUpdateNotif:
                Lobby.HandleNotification(message, this.PartyDataUpdateNotif);
                break;

            case MessageType.partyRejectNotif:
                Lobby.HandleNotification(message, this.RejectedPartyInvitation);
                break;

            case MessageType.blockPlayerNotif:
                Lobby.HandleNotification(message, this.PlayerBlockedNotif);
                break;

            case MessageType.unblockPlayerNotif:
                Lobby.HandleNotification(message, this.PlayerUnblockedNotif);
                break;

            default:
                Action <ErrorCode, string> handler;

                if (messageId != -1 && this.responseCallbacks.TryGetValue(messageId, out handler))
                {
                    this.responseCallbacks.Remove(messageId);
                    handler(errorCode, message);
                }

                break;
            }
        }