internal void ProcessMessageInDomain(byte[] arrRequest, CADMethodCallMessage cadMsg, out byte[] arrResponse, out CADMethodReturnMessage cadMrm) { IMessage reqDomMsg; if (null != arrRequest) { reqDomMsg = CADSerializer.DeserializeMessage(new MemoryStream(arrRequest), null); } else { reqDomMsg = new MethodCall(cadMsg); } IMessage retDomMsg = ChannelServices.SyncDispatchMessage(reqDomMsg); cadMrm = CADMethodReturnMessage.Create(retDomMsg); if (null == cadMrm) { arrResponse = CADSerializer.SerializeMessage(retDomMsg).GetBuffer(); } else { arrResponse = null; } }
public virtual IMessage SyncProcessMessage(IMessage msgRequest) { IMessage result = null; try { byte[] array = null; byte[] array2 = null; CADMethodReturnMessage retmsg = null; CADMethodCallMessage cadmethodCallMessage = CADMethodCallMessage.Create(msgRequest); if (cadmethodCallMessage == null) { MemoryStream memoryStream = CADSerializer.SerializeMessage(msgRequest); array2 = memoryStream.GetBuffer(); } Context currentContext = Thread.CurrentContext; try { CrossAppDomainSink.ProcessMessageRes processMessageRes = (CrossAppDomainSink.ProcessMessageRes)AppDomain.InvokeInDomainByID(this._domainID, CrossAppDomainSink.processMessageMethod, null, new object[] { array2, cadmethodCallMessage }); array = processMessageRes.arrResponse; retmsg = processMessageRes.cadMrm; } finally { AppDomain.InternalSetContext(currentContext); } if (array != null) { MemoryStream mem = new MemoryStream(array); result = CADSerializer.DeserializeMessage(mem, msgRequest as IMethodCallMessage); } else { result = new MethodResponse(msgRequest as IMethodCallMessage, retmsg); } } catch (Exception e) { try { result = new ReturnMessage(e, msgRequest as IMethodCallMessage); } catch (Exception) { } } return(result); }
#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); }
internal byte[] GetMarshalledDomainObjRef() => default; // 0x0000000180701B70-0x0000000180701C30 internal void ProcessMessageInDomain(byte[] arrRequest, CADMethodCallMessage cadMsg, out byte[] arrResponse, out CADMethodReturnMessage cadMrm) { arrResponse = default; cadMrm = default; } // 0x0000000180702290-0x00000001807023C0