channel.receive()
, as a result of another channel instance requesting a state from this channel. Other channel has to invoke channel.getState()
indicating intent of state retrieval. Allows applications using a channel in a pull mode to receive StreamingGetStateEvent
event and thus provide state to requsting channel instance. 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 demonstrates how to pull events from a channel, processing StreamingGetStateEvent
and sending hypothetical state through OutputStream
reference.
@author Vladimir Blagojevic @see org.jgroups.JChannel#getState(Address,long) @see org.jgroups.StreamingMessageListener#getState(OutputStream) @since 2.4Object obj=channel.receive(0); if(obj instanceof StreamingGetStateEvent) { StreamingGetStateEvent evt=(StreamingGetStateEvent)obj; OutputStream oos = null; try { oos = new ObjectOutputStream(evt.getArg()); oos.writeObject(state); oos.flush(); } catch (Exception e) {} finally { try { oos.close(); } catch (IOException e) { System.err.println(e); } } }
|
|