Пример #1
0
        /// <inheritdoc />
        public Request Deserialize(byte[] dataBytes)
        {
            var unpacked = MessagePackSerializer.Deserialize <Dictionary <string, byte[]> >(dataBytes);

            var request   = ObjectDeserializer.AsString(unpacked[nameof(Request.Type)]);
            var id        = ObjectDeserializer.AsGuid(unpacked[nameof(Request.Id)]);
            var timestamp = ObjectDeserializer.AsZonedDateTime(unpacked[nameof(Request.Timestamp)]);

            switch (request)
            {
            case nameof(Connect):
                return(new Connect(
                           ObjectDeserializer.AsClientId(unpacked),
                           ObjectDeserializer.AsString(unpacked[nameof(Connect.Authentication)]),
                           id,
                           timestamp));

            case nameof(Disconnect):
                return(new Disconnect(
                           ObjectDeserializer.AsClientId(unpacked),
                           ObjectDeserializer.AsSessionId(unpacked),
                           id,
                           timestamp));

            case nameof(DataRequest):
                return(new DataRequest(
                           this.querySerializer.Deserialize(unpacked[nameof(DataRequest.Query)]),
                           id,
                           timestamp));

            default:
                throw ExceptionFactory.InvalidSwitchArgument(request, nameof(request));
            }
        }