Ejemplo n.º 1
0
        public void InvokeMethod(Reference reference, int methodId, object[] arguments, InvokeMethodOptions options)
        {
            var sending = InvokerContext.Caller;
            var request = new InvokeMethodRequest();

            request.MethodId  = methodId;
            request.Arguments = arguments;

            var message = new Message();

            message.Guid = Guid.NewGuid();
            if (sending != null)
            {
                message.SendingSlio = sending.Address;
                message.SendingId   = sending.Identity;
            }
            message.TargetSlio = reference.Address;
            message.TargetId   = reference.Identity;
            message.Direction  = options.HasFlag(InvokeMethodOptions.OneWay) ? Message.Directions.OneWay : Message.Directions.Request;
            message.BodyObject = request;
            if (options.HasFlag(InvokeMethodOptions.OneWay))
            {
                messageCenter.SendMessage(message);
                return;
            }

            messageCenter.SendRequest(message);
        }
Ejemplo n.º 2
0
        public void InvokeMethod(ServiceReference reference, int methodId, object[] arguments, InvokeMethodOptions options = InvokeMethodOptions.None)
        {
            var request = new MethodInvokeRequest();

            request.MethodId  = methodId;
            request.Arguments = arguments;

            var message = new Message();

            message.Guid       = Guid.NewGuid();
            message.Target     = reference.InterfaceId;
            message.BodyObject = request;
            message.Direction  = options.HasFlag(InvokeMethodOptions.OneWay) ? Message.Directions.OneWay : Message.Directions.Request;
            if (clientOptions.Credentials != null)
            {
                message.Authorization = clientOptions.Credentials.Create();
            }
            if (options.HasFlag(InvokeMethodOptions.OneWay))
            {
                clientRuntime.SendMessage(message);
                return;
            }

            clientRuntime.SendRequest(message, clientOptions.RequestTimeout);
        }