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(); }
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); } }
/// <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))); } }
/// <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))); } }
void ObserveSelection(ReactiveFile file) { serializer.Deserialize(new FileInfo(file.Path)) .ContinueWith(task => { RequestReady?.Invoke(this, task.Result); }); }
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); }