Exemple #1
0
        private InvocationDetails GetInvocationOptions(IWampCaller caller, CallOptions options, string procedureUri)
        {
            IWampClientProxy wampCaller = caller as IWampClientProxy;

            InvocationDetailsExtended result = new InvocationDetailsExtended
            {
                CallerSession = wampCaller.Session,
                CallerOptions = options,
                ProcedureUri  = procedureUri
            };

            WelcomeDetails welcomeDetails = wampCaller.WelcomeDetails;

            result.AuthenticationId   = welcomeDetails.AuthenticationId;
            result.AuthenticationRole = welcomeDetails.AuthenticationRole;

            return(result);
        }
        private InvocationDetails GetInvocationDetails(InvocationDetails details)
        {
            InvocationDetailsExtended casted = details as InvocationDetailsExtended;

            if (casted == null)
            {
                return(details);
            }

            InvocationDetails result = new InvocationDetails(casted);

            CallOptions callerOptions = casted.CallerOptions;

            if (Options.DiscloseCaller == true &&
                callerOptions.DiscloseMe == false)
            {
                throw new WampException(WampErrors.DiscloseMeNotAllowed);
            }

            if (Options.DiscloseCaller == true ||
                callerOptions.DiscloseMe == true)
            {
                result.Caller = casted.CallerSession;

                result.AuthenticationId     = casted.AuthenticationId;
                result.AuthenticationMethod = casted.AuthenticationMethod;
                result.AuthenticationRole   = casted.AuthenticationRole;
            }

            if (callerOptions.ReceiveProgress == true)
            {
                result.ReceiveProgress = true;
            }

            if (Options.Match != WampMatchPattern.Exact)
            {
                result.Procedure = casted.ProcedureUri;
            }

            return(result);
        }