Ejemplo n.º 1
0
        private void  onReceiveSubscribeRequest(MessageEnvelope message, ITransport transport)
        {
            RemoteConsumer <T> remoteConsumer = new RemoteConsumer <T>(
                message.Body.SubscribeRequest.ConsumerId, transport
                );

            MessageEnvelope     resultMsg           = new MessageEnvelope();
            MessageBody         body                = new MessageBody();
            SubscribeResult     subscribeResult     = new SubscribeResult();
            SubscribeResultCode subscribeResultCode = new SubscribeResultCode();

            body.selectSubscribeResult(subscribeResult);
            resultMsg.Body = body;
            resultMsg.Id   = message.Id;
            try
            {
                addConsumer(remoteConsumer, message.Body.SubscribeRequest.Persistence, message.Body.SubscribeRequest.Filter);
                subscribeResultCode.Value = SubscribeResultCode.EnumType.success;
            }
            catch (System.Exception e)
            {
                subscribeResultCode.Value = SubscribeResultCode.EnumType.alreadySubscription;
                subscribeResult.Details   = (e.ToString());
            }
            subscribeResult.Code = subscribeResultCode;
            try
            {
                transport.sendAsync(resultMsg);

                if (subscribeResult.Code.Value == SubscribeResultCode.EnumType.success &&
                    message.Body.SubscribeRequest.Persistence)
                {
                    IList <IMessage <T> > messages = persistStorage.getMessagesToSend(remoteConsumer);
                    lock (queue)
                    {
                        queue.push(messages);
                    }
                    awaitMessageEvent.Set();
                }
            }
            catch (System.Exception e)
            {
                Console.WriteLine(e);
            }
        }
Ejemplo n.º 2
0
        public virtual bool onReceive(MessageEnvelope message, ITransport transport)
        {
            if (message.Body.isSubscribeRequestSelected())
            {
                MessageEnvelope     resultMsg           = new MessageEnvelope();
                MessageBody         body                = new MessageBody();
                SubscribeResult     subscribeResult     = new SubscribeResult();
                SubscribeResultCode subscribeResultCode = new SubscribeResultCode();
                body.selectSubscribeResult(subscribeResult);
                resultMsg.Body            = (body);
                resultMsg.Id              = message.Id;
                subscribeResultCode.Value = SubscribeResultCode.EnumType.unknownQueue;
                subscribeResult.Code      = subscribeResultCode;
                try
                {
                    transport.sendAsync(resultMsg);
                }
                catch (System.Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }
            else if (message.Body.isUnsubscribeRequestSelected())
            {
                MessageEnvelope       resultMsg             = new MessageEnvelope();
                MessageBody           body                  = new MessageBody();
                UnsubscribeResult     unsubscribeResult     = new UnsubscribeResult();
                UnsubscribeResultCode unsubscribeResultCode = new UnsubscribeResultCode();
                body.selectUnsubscribeResult(unsubscribeResult);
                resultMsg.Body = (body);
                resultMsg.Id   = message.Id;
                unsubscribeResultCode.Value = (UnsubscribeResultCode.EnumType.unknownQueue);
                unsubscribeResult.Code      = (unsubscribeResultCode);
                try
                {
                    transport.sendAsync(resultMsg);
                }
                catch (System.Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }

            return(true);
        }