protected override object[] GetMethodParameters <TMessage>(IWampRawRpcOperationRouterCallback caller, IWampFormatter <TMessage> formatter, TMessage[] arguments, IDictionary <string, TMessage> argumentsKeywords)
        {
            object[] argumentsWithoutProgress =
                base.GetMethodParameters(caller, formatter, arguments, argumentsKeywords);

            int length = argumentsWithoutProgress.Length + 1;

            object[] result = new object[length];

            Array.Copy(argumentsWithoutProgress,
                       result,
                       argumentsWithoutProgress.Length);

            result[length - 1] = new CallerProgress <T>(caller);

            return(result);
        }
Example #2
0
        protected override object[] GetMethodParameters <TMessage>(IWampRawRpcOperationRouterCallback caller, CancellationToken cancellationToken, IWampFormatter <TMessage> formatter, TMessage[] arguments, IDictionary <string, TMessage> argumentsKeywords)
        {
            IEnumerable <object> parameters = UnpackParameters(formatter, arguments, argumentsKeywords);

            CallerProgress progress = new CallerProgress(caller, this);

            parameters = parameters.Concat(progress);

            if (SupportsCancellation)
            {
                parameters = parameters.Concat(cancellationToken);
            }

            object[] result = parameters.ToArray();

            return(result);
        }