Exemplo n.º 1
0
        public Scenario(string directory)
        {
            // It's strange, but one can get the directory name with a call for the file name
            var scenarioName = Path.GetFileName(directory);
            var basePath     = Path.Combine(directory, scenarioName);

            // Deserialize request
            var requestSerializer = new RequestSerializer($"{basePath}.req");

            Request = requestSerializer.Deserialize();

            // Deserialize canonical request
            var canonicalRequestSerializer = new CanonicalRequestSerializer($"{basePath}.creq");

            ExpectedCanonicalRequest = canonicalRequestSerializer.Deserialize();
            ExpectedSignedHeaders    = canonicalRequestSerializer.DeserializeSignedHeaders();

            // Deserialize string to sign
            var stringToSignSerializer = new StringToSignSerializer($"{basePath}.sts");

            ExpectedStringToSign    = stringToSignSerializer.Deserialize();
            ExpectedCredentialScope = stringToSignSerializer.DeserializeCredentialScope();

            // Deserialize authorization header
            var authorizationHeaderSerializer = new StringContentSerializer($"{basePath}.authz");

            ExpectedAuthorizationHeader = authorizationHeaderSerializer.Deserialize();
        }
Exemplo n.º 2
0
        public override async void ExecuteExternalCommand(ClientSession session, byte[] data)
        {
            var request = RequestSerializer.Deserialize <RequestBase>(data);

            if (!AppServicesMethods.ContainsKey(request.GetType()))
            {
                return;
            }
            var methodAndInstancePair = AppServicesMethods[request.GetType()];

            log.InfoFormat("{0}  {1}", methodAndInstancePair.Item1.Name, request.GetType().Name);

            try
            {
                var responseObj = methodAndInstancePair.Item1.Invoke(methodAndInstancePair.Item2, new object[] { session, request });

                if (methodAndInstancePair.Item1.ReturnType.IsSubclassOf(typeof(Task)))
                {
                    var value = await(dynamic) responseObj;
                    session.Send(value);
                }
                else if (methodAndInstancePair.Item1.ReturnType != typeof(void))
                {
                    session.Send(responseObj);
                }
            }
            catch (Exception exc)
            {
                log.Error(exc);
                log.ErrorFormat("{0}" + Environment.NewLine +
                                "{1} failed ({2},  {3})", exc.Message, methodAndInstancePair.Item1.Name, request.GetType().Name, session.SessionID);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 1. 직렬화된 정보를 <see cref="IDataServiceAdapter.RequestSerializer"/>를 이용하여, 역직렬화를 수행. <see cref="RequestMessage"/>를 빌드<br/>
        /// 2. 요청정보를  <see cref="IDataServiceAdapter.DataService"/>에 전달하여, 실행 후, 응답정보를 반환 받음<br/>
        /// 3. 응답정보를 <see cref="IDataServiceAdapter.ResponseSerializer"/>를 통해 직렬화하여 byte[] 로 반환함.
        /// </summary>
        /// <param name="requestBytes">직렬화된 요청 Data</param>
        /// <returns>응답정보를 직렬화한 byte[]</returns>
        public virtual byte[] Execute(byte[] requestBytes)
        {
            if (IsDebugEnabled)
            {
                log.Debug("JSON 포맷 방식의 정보를 처리를 시작합니다... IDataService=[{0}]", DataService);
            }

            requestBytes.ShouldNotBeNull("requestBytes");

            try {
                var requestMsg      = RequestSerializer.Deserialize(requestBytes);
                var responseMessage = DataService.Execute(requestMsg);
                var responseBytes   = ResponseSerializer.Serialize(responseMessage);

                if (IsDebugEnabled)
                {
                    log.Debug("요청을 모두 처리하고, 응답 정보를 포맷으로 반환합니다!!!");
                }

                return(responseBytes);
            }
            catch (Exception ex) {
                if (log.IsErrorEnabled)
                {
                    log.ErrorException("요청 처리 중 예외가 발생했습니다.", ex);
                }

                return(ResponseSerializer.Serialize(DataServiceTool.CreateResponseMessageWithException(ex)));
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 1. 직렬화된 정보를 <see cref="RequestSerializer"/>를 이용하여, 역직렬화를 수행. <see cref="XdsRequestDocument"/>를 빌드<br/>
        /// 2. 요청정보를  <see cref="XmlDataManager"/>에 전달하여, 실행 후, 응답정보를 반환 받음<br/>
        /// 3. 응답정보를 <see cref="ResponseSerializer"/>를 통해 직렬화하여 byte[] 로 반환함.
        /// </summary>
        /// <param name="requestBytes">직렬화된 요청 Data</param>
        /// <returns>응답정보를 직렬화한 byte[]</returns>
        public virtual byte[] Execute(byte[] requestBytes)
        {
            if (IsDebugEnabled)
            {
                log.Debug("XML 포맷 방식의 정보를 처리를 시작합니다... IXmlDataManager=[{0}]", XmlDataManager);
            }

            requestBytes.ShouldNotBeNull("requestBytes");

            try {
                var requestMsg          = RequestSerializer.Deserialize(requestBytes);
                var XdsResponseDocument = XmlDataManager.Execute(requestMsg);
                var responseBytes       = ResponseSerializer.Serialize(XdsResponseDocument);

                if (IsDebugEnabled)
                {
                    log.Debug("요청을 모두 처리하고, 응답 정보를 포맷으로 반환합니다!!!");
                }

                return(responseBytes);
            }
            catch (Exception ex) {
                if (log.IsErrorEnabled)
                {
                    log.ErrorException("요청 처리 중 예외가 발생했습니다.", ex);
                }

                return(ResponseSerializer.Serialize(XmlDataTool.CreateResponseWithError(ex)));
            }
        }
Exemplo n.º 5
0
 void ObserveSelection(ReactiveFile file)
 {
     serializer.Deserialize(new FileInfo(file.Path))
     .ContinueWith(task =>
     {
         RequestReady?.Invoke(this, task.Result);
     });
 }
Exemplo n.º 6
0
        public void DeserializeTest()
        {
            var id             = 3;
            var rCenterPos     = -0.15;
            var iCenterPos     = 0.0;
            var width          = 2.75;
            var height         = 1.5;
            var pointsDistance = 0.276666;
            var iterations     = Int32.MaxValue;
            var threshold      = 2;


            MemoryStream stream       = new MemoryStream(52);
            var          streamWriter = new BinaryWriter(stream);

            streamWriter.Write(id);             // id
            streamWriter.Write(rCenterPos);     // r center pos
            streamWriter.Write(iCenterPos);     // i center pos
            streamWriter.Write(width);          // width
            streamWriter.Write(height);         // height
            streamWriter.Write(pointsDistance); // distance of points
            streamWriter.Write(iterations);     // iterations
            streamWriter.Write(threshold);      // threshold
            streamWriter.Flush();

            //stream.Read(buffer, 0, 52);
            var buffer = stream.GetBuffer();

            var request = RequestSerializer.Deserialize(buffer);

            Assert.AreEqual(id, request.Id);
            Assert.AreEqual(iCenterPos, request.ImaginaryCenter);
            Assert.AreEqual(rCenterPos, request.RealCenter);
            Assert.AreEqual(width, request.Width);
            Assert.AreEqual(height, request.Height);
            Assert.AreEqual(pointsDistance, request.Resolution);
            Assert.AreEqual(iterations, request.MaxIterations);
            Assert.AreEqual(threshold, request.MaxMagnitude);
        }