1 /* 2 * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com 3 * The software in this package is published under the terms of the CPAL v1.0 4 * license, a copy of which has been included with this distribution in the 5 * LICENSE.txt file. 6 */ 7 package org.mule.api.transport; 8 9 import org.mule.api.MuleException; 10 import org.mule.api.MuleMessage; 11 import org.mule.api.endpoint.OutboundEndpoint; 12 import org.mule.api.lifecycle.Disposable; 13 import org.mule.api.lifecycle.LifecycleStateEnabled; 14 import org.mule.api.processor.MessageProcessor; 15 16 /** 17 * Combine {@link MessageDispatching} with 18 * various lifecycle methods for the actual instances doing message sending. 19 */ 20 public interface MessageDispatcher extends Connectable, MessageProcessor, LifecycleStateEnabled 21 { 22 long RECEIVE_WAIT_INDEFINITELY = 0; 23 long RECEIVE_NO_WAIT = -1; 24 25 /** 26 * This method can perform necessary state updates before any of the 27 * {@link MessageDispatching} methods are invoked. 28 * 29 * @see MessageDispatcherFactory#activate(OutboundEndpoint, MessageDispatcher) 30 */ 31 void activate(); 32 33 /** 34 * After sending a message, the dispatcher can use this method e.g. to 35 * clean up its internal state (if it has any) or return pooled resources to 36 * whereever it got them during {@link #activate()}. 37 * 38 * @see MessageDispatcherFactory#passivate(OutboundEndpoint, MessageDispatcher) 39 */ 40 void passivate(); 41 42 /** 43 * Determines whether this dispatcher can be reused after message sending. 44 * 45 * @return <code>true</code> if this dispatcher can be reused, 46 * <code>false</code> otherwise (for example when 47 * {@link Disposable#dispose()} has been called because an Exception was 48 * raised) 49 */ 50 boolean validate(); 51 52 /** 53 * Gets the connector for this dispatcher 54 * 55 * @return the connector for this dispatcher 56 */ 57 Connector getConnector(); 58 59 /** 60 * @return the endpoint which we are dispatching events to 61 */ 62 OutboundEndpoint getEndpoint(); 63 64 MuleMessage createMuleMessage(Object transportMessage, String encoding) throws MuleException; 65 66 MuleMessage createMuleMessage(Object transportMessage) throws MuleException; 67 }