public static void Error
     (this IWampError <object> client,
     WampMessageType messageType,
     long requestId,
     WampException exception)
 {
     client.WampExceptionError(messageType, requestId, exception);
 }
 public static void Error <TMessage>
     (this IWampError <TMessage> client,
     WampMessageType messageType,
     long requestId,
     TMessage details,
     string error)
 {
     client.Error((int)messageType, requestId, details, error);
 }
        private static void WampExceptionError
            (this IWampError <object> client,
            WampMessageType messageType,
            long requestId,
            WampException exception)
        {
            IWampErrorCallback callback = new WampErrorCallback(client, messageType, requestId);

            callback.Error(exception);
        }
 public static void Error <TMessage>
     (this IWampError <TMessage> client,
     WampMessageType messageType,
     long requestId,
     TMessage details,
     string error,
     TMessage[] arguments,
     TMessage argumentsKeywords)
 {
     client.Error((int)messageType, requestId, details, error, arguments, argumentsKeywords);
 }
Example #5
0
        /// <summary>
        /// Creates a new <see cref="WampMethodInfo"/> given a
        /// <see cref="MethodInfo"/>.
        /// </summary>
        /// <param name="method">The given method to obtain information
        /// from.</param>
        public WampMethodInfo(MethodInfo method)
        {
            mMethod = method;

            WampHandlerAttribute handlerAttribute =
                method.GetCustomAttribute <WampHandlerAttribute>(true);

            if (handlerAttribute != null)
            {
                mMessageType = handlerAttribute.MessageType;
            }
            else
            {
                mMessageType = WampMessageType.Unknown;
            }

            ParameterInfo[] parameters = method.GetParameters();

            mParameters = parameters;
            List <ParameterInfo> parametersToConvert = mParameters.ToList();

            if (parameters.Length > 0)
            {
                if (parameters[0].IsDefined(typeof(WampProxyParameterAttribute), true))
                {
                    mHasWampClientArgument = true;
                    parametersToConvert.RemoveAt(0);
                }

                ParameterInfo lastParameter = parameters.Last();

                if (lastParameter.IsDefined(typeof(ParamArrayAttribute), true))
                {
                    mHasParamsArgument = true;
                }

                if (typeof(WampMessage <>).IsGenericAssignableFrom(lastParameter.ParameterType))
                {
                    mIsRawMethod = true;
                    parametersToConvert.RemoveAt(parametersToConvert.Count - 1);
                }
            }

            mTotalArgumentsCount = parameters.Length;
            mArgumentsCount      = mTotalArgumentsCount;
            mParametersToConvert = parametersToConvert.ToArray();

            if (mHasWampClientArgument)
            {
                mArgumentsCount = mArgumentsCount - 1;
            }
        }
Example #6
0
        public void Error(int requestType, long requestId, TMessage details, string error, TMessage[] arguments,
                          TMessage argumentsKeywords)
        {
            WampMessageType messageType = (WampMessageType)requestType;

            switch (messageType)
            {
            case WampMessageType.v2Register:
            {
                mInstance.RegisterError(requestId, details, error, arguments, argumentsKeywords);
                break;
            }

            case WampMessageType.v2Unregister:
            {
                mInstance.UnregisterError(requestId, details, error, arguments, argumentsKeywords);
                break;
            }

            case WampMessageType.v2Call:
            {
                mInstance.CallError(requestId, details, error, arguments, argumentsKeywords);
                break;
            }

            case WampMessageType.v2Subscribe:
            {
                mInstance.SubscribeError(requestId, details, error, arguments, argumentsKeywords);
                break;
            }

            case WampMessageType.v2Unsubscribe:
            {
                mInstance.UnsubscribeError(requestId, details, error, arguments, argumentsKeywords);
                break;
            }

            case WampMessageType.v2Publish:
            {
                mInstance.PublishError(requestId, details, error, arguments, argumentsKeywords);
                break;
            }
            }
        }
Example #7
0
        public WampMessage <object> SerializeRequest(MethodInfo method, object[] arguments)
        {
            mLogger.DebugFormat("Calling remote peer proxy method: {0}", method);

            WampMethodInfo wampMethod = GetWampMethod(method);

            WampMessageType messageType = wampMethod.MessageType;

            WampMessage <object> result = new WampMessage <object>()
            {
                MessageType = messageType
            };

            List <object> argumentsToSerialize = arguments.ToList();

            if (wampMethod.HasWampClientArgument)
            {
                argumentsToSerialize.RemoveAt(0);
            }

            object[] paramsArgument = null;

            if (wampMethod.HasParamsArgument)
            {
                paramsArgument = (object[])argumentsToSerialize.Last();
                argumentsToSerialize.RemoveAt(argumentsToSerialize.Count - 1);
            }

            List <object> messageArguments = argumentsToSerialize.ToList();

            if (wampMethod.HasParamsArgument)
            {
                messageArguments.AddRange(paramsArgument);
            }

            result.Arguments = messageArguments.ToArray();

            return(result);
        }
 /// <summary>
 /// Initializes a new instance of <see cref="WampHandlerAttribute"/>
 /// with the given <see cref="MessageType"/>.
 /// </summary>
 /// <param name="messageType">The <see cref="WampMessageType"/> this
 /// method handles</param>
 public WampHandlerAttribute(WampMessageType messageType)
 {
     MessageType = messageType;
 }
 public WampErrorCallback(IWampError <object> callback, WampMessageType messageType, long requestId)
 {
     mCallback    = callback;
     mMessageType = messageType;
     mRequestId   = requestId;
 }
 /// <summary>
 /// Initializes a new instance of <see cref="WampHandlerAttribute"/>
 /// with the given <see cref="MessageType"/>.
 /// </summary>
 /// <param name="messageType">The <see cref="WampMessageType"/> this
 /// method handles</param>
 public WampHandlerAttribute(WampMessageType messageType)
 {
     mMessageType = messageType;
 }
 public WampDetailsOptionsAttribute(WampMessageType messageType)
 {
     mMessageType = messageType;
 }
Example #12
0
 /// <summary>
 /// Initializes a new instance of <see cref="WampErrorHandlerAttribute"/>.
 /// </summary>
 /// <param name="messageType">The <see cref="WampMessageType"/>
 /// this error handler handles.</param>
 public WampErrorHandlerAttribute(WampMessageType messageType)
 {
     mMessageType = messageType;
 }