#pragma warning disable 169 private static ProcessMessageRes ProcessMessageInDomain( byte[] arrRequest, CADMethodCallMessage cadMsg) { ProcessMessageRes res = new ProcessMessageRes(); try { AppDomain.CurrentDomain.ProcessMessageInDomain(arrRequest, cadMsg, out res.arrResponse, out res.cadMrm); } catch (Exception e) { IMessage errorMsg = new MethodResponse(e, new ErrorMessage()); res.arrResponse = CADSerializer.SerializeMessage(errorMsg).GetBuffer(); } return(res); }
#pragma warning disable 169 private static ProcessMessageRes ProcessMessageInDomain ( byte[] arrRequest, CADMethodCallMessage cadMsg) { ProcessMessageRes res = new ProcessMessageRes (); try { AppDomain.CurrentDomain.ProcessMessageInDomain (arrRequest, cadMsg, out res.arrResponse, out res.cadMrm); } catch (Exception e) { IMessage errorMsg = new MethodResponse (e, new ErrorMessage()); res.arrResponse = CADSerializer.SerializeMessage (errorMsg).GetBuffer(); } return res; }
#pragma warning restore 169 public virtual IMessage SyncProcessMessage(IMessage msgRequest) { IMessage retMessage = null; try { // Time to transit into the "our" domain byte [] arrResponse = null; byte [] arrRequest = null; CADMethodReturnMessage cadMrm = null; CADMethodCallMessage cadMsg; cadMsg = CADMethodCallMessage.Create(msgRequest); if (null == cadMsg) { // Serialize the request message MemoryStream reqMsgStream = CADSerializer.SerializeMessage(msgRequest); arrRequest = reqMsgStream.GetBuffer(); } Context currentContext = Thread.CurrentContext; try { // InternalInvoke can't handle out arguments, this is why // we return the results in a structure ProcessMessageRes res = (ProcessMessageRes)AppDomain.InvokeInDomainByID(_domainID, processMessageMethod, null, new object [] { arrRequest, cadMsg }); arrResponse = res.arrResponse; cadMrm = res.cadMrm; } finally { AppDomain.InternalSetContext(currentContext); } if (null != arrResponse) { // Time to deserialize the message MemoryStream respMsgStream = new MemoryStream(arrResponse); // Deserialize the response message retMessage = CADSerializer.DeserializeMessage(respMsgStream, msgRequest as IMethodCallMessage); } else { retMessage = new MethodResponse(msgRequest as IMethodCallMessage, cadMrm); } } catch (Exception e) { try { retMessage = new ReturnMessage(e, msgRequest as IMethodCallMessage); } catch (Exception) { // this is just to be sure } } return(retMessage); }