Example #1
0
        /// <summary>
        /// <remarks> wehat is mandatory and what is not?</remarks>
        /// </summary>
        /// <param name="data"></param>
        /// <param name="em"></param>
        /// <returns></returns>
        public static ResponseData Deserialize( Hashtable data, byte[] body, ref string em)
        {
            ResponseData response = new ResponseData() { Data = data, Body = RMQBus.GetBodyString(body) };

            try
            {
                RequestData.ErrorCodeEnum code;
                Enum.TryParse<RequestData.ErrorCodeEnum> ( (string)data["error_code"], out code );
                response.ErrorCode = code;
            }
            catch{}

            try
            {
                response.Value = (int)data["value"];
            }
            catch{}

            try
            {
                response.ErrorMessage = (string)data["error_message"];
            }
            catch { }

            try
            {
                response.IsError = (bool)data["is_error"];
            }
            catch { }

            return response;
        }
Example #2
0
        public static RequestData Create(BasicReturnEventArgs args )
        {
            Hashtable headers    =   ConvertHeaders(args.BasicProperties.Headers);

            var responseData = new ResponseData()
            {
                ErrorCode       = (RequestData.ErrorCodeEnum)args.ReplyCode,
                ErrorMessage    = args.ReplyText
            };

            var requestData = new RequestData()
            {
                Body = Encoding.UTF8.GetString(args.Body),
                SourceAddress = args.BasicProperties.AppId,
                CorrelationId = args.BasicProperties.CorrelationId,
                Op = (string)headers["op"],
                Data = headers,
                DestAddress = args.RoutingKey,
                Response    =   responseData
            };

            return requestData;
        }
Example #3
0
 /// <summary>
 /// Send a message from one entity to another either over internal or external service bus.
 /// Dispatch message asynchronously.
 /// Represents fire&forget or RPC response.
 /// </summary>
 /// <param name="destAddress"></param>
 /// <param name="destAddress"></param>
 /// <param name="messageContent"></param>
 /// <returns></returns>
 public static void SendMessage( string sourceAddress, string destAddress, string op, string correlationId, ResponseData response )
 {
     RequestData requestData = requestData = new RequestData ( null )
     {
         Op = op
         ,
         SourceAddress = sourceAddress
         ,
         CorrelationId = correlationId
         ,
         Response = response
         ,
         DestAddress = destAddress
     };
     //address has to match registered comm object in order to send this message out. In other words an entity can be addressable locally and globally.
     RMQServiceBusInterface busProc = (RMQServiceBusInterface)RMQBus.GetClient(sourceAddress);
     //try to get sender's busprocess to use it's channels
     if (busProc == null)
     {
         Tracer.TraceEvent ( TraceEventType.Error, 0, "[{0}] no global process visibility, no local destination found {1}, message dropped {2}", sourceAddress, destAddress, requestData );
         return;
     }
     busProc.SendMessageImpl ( requestData );
 }
Example #4
0
 /// <summary>
 /// Raised when there is an error, can be service bus sepcific RequestData.ErrorCodeEnum.BusSpecificError.
 /// Can be used to handle 321 UNROUTABLE when the second party does not exist (queue/topic/address does not exist)
 /// </summary>
 /// <param name="responseData"></param>
 /// <para>On connect is invoked in the driver's thread.</para>
 public virtual void OnPreError(ResponseData responseData)
 {
     ThreadPool.QueueUserWorkItem((r) =>
        {
        try
        {
            OnError(responseData);
        }
        catch (Exception ex)
        {
            throw;
        }
        });
 }
Example #5
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="responseData"></param>
 protected virtual void OnError(ResponseData responseData)
 {
 }
Example #6
0
 public void SendMessage(string address, string op, string body, Hashtable data)
 {
     var responseData = new ResponseData()
     {
         Data            =   data,
         Body            =   body,
     };
     Bus.SendMessage(this.Address, address, op, null, responseData);
 }
Example #7
0
        public void SendMessage(string address, string op, string body)
        {
            var responseData = new ResponseData()
            {
                Body    =   body
            };

            this.SendMessage(address, op, body, null);
        }
Example #8
0
 public void SendMessage(string address, string op, Hashtable data,string errorMessage)
 {
     var  responseData   =   new ResponseData()
     {
         Data = data,
         ErrorMessage = errorMessage
     };
     this.SendMessage(address, op, null, data);
 }
Example #9
0
 public static ResponseData Error( string message )
 {
     ResponseData response = new ResponseData ();
     response.ErrorMessage = message;
     response.IsError = true;
     return response;
 }
Example #10
0
 public static ResponseData Error( RequestData.ErrorCodeEnum code,string message)
 {
     ResponseData response   =   new ResponseData ();
     response.ErrorCode      =   code;
     response.ErrorMessage = message;
     response.IsError = true;
     return response;
 }
Example #11
0
 public static ResponseData Response( int value )
 {
     ResponseData response = new ResponseData ();
     response.Value = value;
     return response;
 }
Example #12
0
 public static ResponseData ProcessDisposed(string address, string message   =   "process disposed")
 {
     ResponseData response   = new ResponseData();
     response.ErrorCode      = RequestData.ErrorCodeEnum.ProcessDisposed;
     response.ErrorMessage   = message;
     response.Body = address;
     return response;
 }
Example #13
0
 public static ResponseData FromBasicReturn(BasicReturnEventArgs args)
 {
     ResponseData response       = new ResponseData();
     response.DestinationAddress =   args.RoutingKey;
     response.Exchange       =       args.Exchange;
     response.Value          =       args.ReplyCode;
     response.ErrorCode      =       RequestData.ErrorCodeEnum.BusSpecificError;
     response.ErrorMessage   =       args.ReplyText;
     response.Data           =       RMQBus.ConvertHeaders(args.BasicProperties.Headers);
     response.Body           =       RMQBus.GetBodyString(args.Body);
     response.CorrelationId  =       args.BasicProperties.CorrelationId;
     return response;
 }
Example #14
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="message"></param>        
 /// <returns></returns>
 public static ResponseData FlowControlBufferOk(string message = "Carry on!")
 {
     ResponseData response = new ResponseData();
     response.ErrorCode = RequestData.ErrorCodeEnum.FlowControl_BufferOk;
     response.ErrorMessage = message;
     return response;
 }
Example #15
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="message"></param>
 /// <param name="address">last processed session</param>
 /// <returns></returns>
 public static ResponseData FlowControlBufferFull(string address,string message="Slow down!")
 {
     ResponseData response   = new ResponseData();
     response.ErrorCode      = RequestData.ErrorCodeEnum.FlowControl_BufferFull;
     response.ErrorMessage   = message;
     response.Body           = address;
     return response;
 }