protected override void HandleRequestMessage(IMessage message, ReplyMessageHolder replyHolder) { object result = SplitMessage(message); if(result == null) { return; } object correlationId = message.Headers.Id; if(result is ICollection) { ICollection items = (ICollection)result; int sequenceNumber = 0; int sequenceCount = items.Count; foreach(object item in items) { AddReply(replyHolder, item, correlationId, ++sequenceNumber, sequenceCount); } } else if(result.GetType().IsArray) { object[] items = (object[])result; int sequenceNumber = 0; int sequenceSize = items.Length; foreach(object item in items) { AddReply(replyHolder, item, correlationId, ++sequenceNumber, sequenceSize); } } else { AddReply(replyHolder, result, correlationId, 1, 1); } }
protected override void HandleRequestMessage(IMessage message, ReplyMessageHolder replyHolder) { try { object result = null; if (_synchronizationContext == null) { //PayloadFilter ensures this cast will work. _action.Invoke((T)message.Payload); } else { _synchronizationContext.Send(state => _action.Invoke((T)message.Payload), null); } if (result != null) { replyHolder.Set(result); } } catch (Exception e) { if (e is SystemException) { throw; } throw new MessageHandlingException(message, "failure occurred in Service Activator '" + this + "'", e); } }
protected override void HandleRequestMessage(IMessage message, ReplyMessageHolder replyHolder) { try { object result = null; if (synchronizationContext == null) { result = this.invoker.InvokeMethod(message); } else { synchronizationContext.Send(state => invoker.InvokeMethod(message), null); } if (result != null) { replyHolder.Set(result); } } catch (Exception e) { if (e is SystemException) { throw; } throw new MessageHandlingException(message, "failure occurred in Service Activator '" + this + "'", e); } }
protected override void HandleMessageInternal(IMessage message) { ReplyMessageHolder replyMessageHolder = new ReplyMessageHolder(); HandleRequestMessage(message, replyMessageHolder); if (replyMessageHolder.IsEmpty) { if (_requiresReply) { throw new MessageHandlingException(message, "handler '" + this + "' requires a reply, but no reply was received"); } if (logger.IsDebugEnabled) { logger.Debug("handler '" + this + "' produced no reply for request Message: " + message); } return; } IMessageChannel replyChannel = ResolveReplyChannel(message); MessageHeaders requestHeaders = message.Headers; foreach (MessageBuilder builder in replyMessageHolder.Builders) { builder.CopyHeadersIfAbsent(requestHeaders); SendReplyMessage(builder.Build(), replyChannel); } }
protected override void HandleRequestMessage(IMessage message, ReplyMessageHolder replyHolder) { try { object result = null; if (synchronizationContext == null) { result = this.invoker.InvokeMethod(message); } else { synchronizationContext.Send( state => invoker.InvokeMethod(message), null ); } if (result != null) { replyHolder.Set(result); } } catch (Exception e) { if (e is SystemException) { throw; } throw new MessageHandlingException(message, "failure occurred in Service Activator '" + this + "'", e); } }
protected override void HandleRequestMessage(IMessage message, ReplyMessageHolder replyHolder) { if(_selector.Accept(message)) { replyHolder.Set(message); } else if(_throwExceptionOnRejection) { throw new MessageRejectedException(message); } }
protected override void HandleRequestMessage(IMessage message, ReplyMessageHolder replyHolder) { try { IMessage result = _transformer.Transform(message); if(result != null) { replyHolder.Set(result); } } catch(Exception e) { if(e is MessageTransformationException) { throw; } throw new MessageTransformationException(message, e); } }
protected override void HandleRequestMessage(IMessage message, ReplyMessageHolder replyHolder) { if(!(message.Payload is ISerializable)) { throw new MessageHandlingException(message, GetType().Name + " expects a Serializable payload type " + "but encountered [" + message.Payload.GetType().Name + "]"); } IMessage requestMessage = MessageBuilder.FromMessage(message).Build(); try { IMessage reply = _handlerProxy.Handle(requestMessage); if(reply != null) { replyHolder.Set(reply); } } catch(RemotingException e) { throw new MessageHandlingException(message, "unable to handle message remotely", e); } }
private static void AddReply(ReplyMessageHolder replyHolder, object item, object correlationId, int sequenceNumber, int sequenceSize) { replyHolder.Add(item).SetCorrelationId(correlationId).SetSequenceNumber(sequenceNumber).SetSequenceSize(sequenceSize); }
protected abstract void HandleRequestMessage(IMessage requestMessage, ReplyMessageHolder replyMessageHolder);
protected override void HandleMessageInternal(IMessage message) { ReplyMessageHolder replyMessageHolder = new ReplyMessageHolder(); HandleRequestMessage(message, replyMessageHolder); if(replyMessageHolder.IsEmpty) { if(_requiresReply) { throw new MessageHandlingException(message, "handler '" + this + "' requires a reply, but no reply was received"); } if(logger.IsDebugEnabled) { logger.Debug("handler '" + this + "' produced no reply for request Message: " + message); } return; } IMessageChannel replyChannel = ResolveReplyChannel(message); MessageHeaders requestHeaders = message.Headers; foreach(MessageBuilder builder in replyMessageHolder.Builders) { builder.CopyHeadersIfAbsent(requestHeaders); SendReplyMessage(builder.Build(), replyChannel); } }
protected override void HandleRequestMessage(IMessage message, ReplyMessageHolder replyMessageHolder) { if (!initialized) { AfterPropertiesSet(); } IMessage requestMessage = MessageBuilder.FromMessage(message).Build(); try { Apache.NMS.IMessage nmsReply = SendAndReceive(requestMessage); } catch (NMSException ex) { throw new MessageHandlingException(requestMessage, ex); } }
protected override void HandleRequestMessage(IMessage message, ReplyMessageHolder replyHolder) { replyHolder.Set(message); }
protected override void HandleRequestMessage(IMessage message, ReplyMessageHolder replyHolder) { replyHolder.Set(message.Payload.ToString().ToUpper()); }
protected override void HandleRequestMessage(IMessage requestMessage, ReplyMessageHolder replyMessageHolder) { replyMessageHolder.Set(requestMessage); }
protected abstract void HandleRequestMessage(IMessage requestMessage, ReplyMessageHolder replyMessageHolder);