/// <summary> /// begin meshing for a particular structure /// </summary> /// <param name="request"></param> public void MeshStructure(MeshingRequest request) { // store the return address _responseContext = OperationContext.Current.IncomingMessageHeaders.GetHeader <ResponseContext>( "ResponseContext", "ServiceModelEx"); _responseAddress = new EndpointAddress(_responseContext.ResponseAddress); // notify that we are performing a meshing System.Diagnostics.Trace.WriteLine( string.Format("Meshing for structure {0} ({1} contours)", request.StructureGuid, request.ContourGuids != null ? request.ContourGuids.Count.ToString() : "?")); // create the engine MeshingEngineClient meshingEngine = new MeshingEngineClient(); // synchronous call to perform meshing MeshingResponse response = meshingEngine.MeshStructure(request); meshingEngine.Close(); // now construct the response proxy based on the return address MessageHeader <ResponseContext> responseHeader = new MessageHeader <ResponseContext>(_responseContext); NetMsmqBinding binding = new NetMsmqBinding("NoMsmqSecurity"); MeshingResponseProxy proxy = new MeshingResponseProxy(binding, _responseAddress); // and set up the operation context to relay response info using (OperationContextScope scope = new OperationContextScope(proxy.InnerChannel)) { OperationContext.Current.OutgoingMessageHeaders.Add( responseHeader.GetUntypedHeader("ResponseContext", "ServiceModelEx")); // send the response proxy.OnMeshingDone(response); } proxy.Close(); }
/// <summary> /// begin meshing for a particular structure /// </summary> /// <param name="request"></param> public void MeshStructure(MeshingRequest request) { // store the return address _responseContext = OperationContext.Current.IncomingMessageHeaders.GetHeader<ResponseContext>( "ResponseContext", "ServiceModelEx"); _responseAddress = new EndpointAddress(_responseContext.ResponseAddress); // notify that we are performing a meshing System.Diagnostics.Trace.WriteLine( string.Format("Meshing for structure {0} ({1} contours)", request.StructureGuid, request.ContourGuids != null ? request.ContourGuids.Count.ToString() : "?")); // create the engine MeshingEngineClient meshingEngine = new MeshingEngineClient(); // synchronous call to perform meshing MeshingResponse response = meshingEngine.MeshStructure(request); meshingEngine.Close(); // now construct the response proxy based on the return address MessageHeader<ResponseContext> responseHeader = new MessageHeader<ResponseContext>(_responseContext); NetMsmqBinding binding = new NetMsmqBinding("NoMsmqSecurity"); MeshingResponseProxy proxy = new MeshingResponseProxy(binding, _responseAddress); // and set up the operation context to relay response info using (OperationContextScope scope = new OperationContextScope(proxy.InnerChannel)) { OperationContext.Current.OutgoingMessageHeaders.Add( responseHeader.GetUntypedHeader("ResponseContext", "ServiceModelEx")); // send the response proxy.OnMeshingDone(response); } proxy.Close(); }