bboss.org.jgroups.StreamingSetStateEvent Maven / Gradle / Ivy
The newest version!
package bboss.org.jgroups;
import java.io.InputStream;
/**
*
* Represents an event returned by channel.receive()
, as requested by
* channel.getState()
previously.
*
*
*
* Allows applications using a channel in a pull mode to receive a state from
* another channel instance providing state. Channels have to be configured with
* STREAMING_STATE_TRANSFER
protocol rather than the default
* STATE_TRANSFER
protocol in order to receive this event.
*
*
*
* The following code demonstrate how to pull events from a channel, processing
* StreamingSetStateEvent
and retrieving hypothetical state in the
* form of LinkedList from event's InputStream
reference.
*
*
* Object obj=channel.receive(0);
* if(obj instanceof StreamingSetStateEvent) {
* StreamingSetStateEvent evt=(StreamingSetStateEvent)obj;
* ObjectInputStream ois = null;
* try {
* ois = new ObjectInputStream(evt.getArg());
* state = (LinkedList)ois.readObject();
* } catch (Exception e) {}
* finally
* {
* try {
* ois.close();
* } catch (IOException e) {
* System.err.println(e);
* }
* }
* }
*
*
*
* @author Vladimir Blagojevic
* @see bboss.org.jgroups.JChannel#getState(Address, long)
* @see bboss.org.jgroups.StreamingMessageListener#setState(InputStream)
* @since 2.4
*
*/
public class StreamingSetStateEvent {
InputStream is;
String state_id;
public StreamingSetStateEvent(InputStream is,String state_id) {
super();
this.is=is;
this.state_id=state_id;
}
/**
* Returns InputStream used for reading of a state.
*
* @return the InputStream
*/
public InputStream getArg()
{
return is;
}
/**
* Returns id of the partial state if partial state was requested.
* If full state transfer was requested this method will return null.
*
* @see JChannel#getState(Address, long)
* @see JChannel#getState(Address, String, long)
* @return partial state id
*/
public String getStateId()
{
return state_id;
}
}