public override XdsResponseDocument ExecuteXmlDataManager(XdsRequestDocument requestDocument) { using (var xdsService = new XmlDataService()) { var adapter = XmlDataTool.ResolveXmlDataManagerAdapter(ProductName); var tcs = new TaskCompletionSource <byte[]>(null); ExecuteCompletedEventHandler handler = null; handler = (s, e) => EventAsyncPattern.HandleCompletion(tcs, e, () => e.Result, () => xdsService.ExecuteCompleted -= handler); xdsService.ExecuteCompleted += handler; try { var requestBytes = adapter.RequestSerializer.Serialize(requestDocument); xdsService.ExecuteAsync(requestBytes, ProductName, false, tcs); } catch (Exception ex) { xdsService.ExecuteCompleted -= handler; tcs.TrySetException(ex); } tcs.Task.Wait(); Assert.IsTrue(tcs.Task.IsCompleted); return(adapter.ResponseSerializer.Deserialize(tcs.Task.Result)); } }
/// <summary> /// HttpHandler의 작업의 메인 메소드입니다. 재정의 하여 원하는 기능을 수행하되, 제일 첫번째에 부모 클래스의 메소들를 호출해주어야 합니다. /// </summary> /// <param name="context"></param> protected override void DoProcessRequest(HttpContext context) { context.ShouldNotBeNull("context"); if (IsDebugEnabled) { log.Debug(@"요청정보를 받아 처리를 시작합니다..."); } try { var productName = context.Request[HttpParams.Product].AsText(); if (IsDebugEnabled) { log.Debug("ProductName=[{0}]에 대한 요청 처리를 접수했습니다...", productName); } var adapter = XmlDataTool.ResolveXmlDataManagerAdapter(productName); var responseBytes = adapter.Execute(context.Request.InputStream.ToBytes()); context.WriteResponse(responseBytes); if (IsDebugEnabled) { log.Debug("ProductName=[{0}]에 대한 요청 처리를 완료하였습니다!!!", productName); } } catch (Exception ex) { if (log.IsErrorEnabled) { log.ErrorException("요청을 처리하는 동안 예외가 발생했습니다.", ex); } } }
public override XdsResponseDocument ExecuteXmlDataManager(XdsRequestDocument requestDocument) { using (var xmlDataService = new XmlDataService()) { var adapter = XmlDataTool.ResolveXmlDataManagerAdapter(ProductName); var requestBytes = adapter.RequestSerializer.Serialize(requestDocument); var responseBytes = xmlDataService.Execute(requestBytes, ProductName, false); return(adapter.ResponseSerializer.Deserialize(responseBytes)); } }
public override XdsResponseDocument ExecuteXmlDataManager(XdsRequestDocument requestDocument) { var adapter = XmlDataTool.ResolveXmlDataManagerAdapter(ProductName); var requestBytes = adapter.RequestSerializer.Serialize(requestDocument); using (var xdsProxy = new XmlDataServiceClient()) { var ar = xdsProxy.BeginExecute(requestBytes, ProductName, false, null, null); Thread.Sleep(1); var responseBytes = xdsProxy.EndExecute(ar); return(adapter.ResponseSerializer.Deserialize(responseBytes)); } }
public void ResolveXmlDataManagerAdapterTest() { var adapter = XmlDataTool.ResolveXmlDataManagerAdapter(); adapter.Should().Not.Be.Null(); adapter.XmlDataManager.Should().Not.Be.Null(); adapter.XmlDataManager.Ado.Should().Not.Be.Null(); adapter.XmlDataManager.Ado.QueryProvider.Should().Not.Be.Null(); adapter.RequestSerializer.Should().Not.Be.Null(); adapter.ResponseSerializer.Should().Not.Be.Null(); }
public byte[] ExecuteSecurity(byte[] requestBytes, string productName, bool compress) { if (IsDebugEnabled) { log.Debug("요청을 처리합니다... productName=[{0}], compress=[{1}]", productName, compress); } try { var adapter = XmlDataTool.ResolveXmlDataManagerAdapter(productName); return(adapter.Execute(requestBytes)); } catch (Exception ex) { if (log.IsErrorEnabled) { log.ErrorException("요청을 처리하는 동안 예외가 발생했습니다.", ex); } } return(new byte[0]); }