Esempio n. 1
0
        /// <summary>
        /// Overrides message calls and translates them to messages to remote application.
        /// </summary>
        /// <param name="msg">Method invoke message (from RealProxy base class)</param>
        /// <returns>Method invoke return message (to RealProxy base class)</returns>
        public override IMessage Invoke(IMessage msg)
        {
            var message = msg as IMethodCallMessage;

            if (message == null)
            {
                return(null);
            }

            var requestMessage = new CJiaRemoteInvokeMessage
            {
                ServiceClassName = typeof(TProxy).Name,
                MethodName       = message.MethodName,
                Parameters       = message.InArgs
            };

            var responseMessage = _clientMessenger.SendMessageAndWaitForResponse(requestMessage) as CJiaRemoteInvokeReturnMessage;

            if (responseMessage == null)
            {
                return(null);
            }

            return(responseMessage.RemoteException != null
                       ? new ReturnMessage(responseMessage.RemoteException, message)
                       : new ReturnMessage(responseMessage.ReturnValue, null, 0, message.LogicalCallContext, message));
        }
Esempio n. 2
0
        void Client_MessageReceived(object sender, Net.Communication.Messages.MessageEventArgs e)
        {
            CJiaRemoteInvokeMessage oMsg = (CJiaRemoteInvokeMessage)e.Message;
            string msg = oMsg.ServiceClassName + " " + oMsg.MethodName;

            this.Invoke(new Action(() => ShowMsg(msg)));
        }