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); } }
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); }