KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jgroups > StreamingGetStateEvent


1 package org.jgroups;
2    
3 import java.io.OutputStream JavaDoc;
4
5 /**
6  *
7  * Represents an event returned by <code>channel.receive()</code>, as a result
8  * of another channel instance requesting a state from this channel. Other channel
9  * has to invoke <code>channel.getState()</code> indicating intent of state
10  * retrieval.
11  *
12  * <p>
13  *
14  * Allows applications using a channel in a pull mode to receive
15  * <code>StreamingGetStateEvent</code> event and thus provide state to requsting
16  * channel instance. Channels have to be configured with
17  * <code>STREAMING_STATE_TRANSFER</code> protocol rather than the default
18  * <code>STATE_TRANSFER</code> protocol in order to receive this event
19  *
20  * <p>
21  *
22  * The following code demonstrates how to pull events from a channel, processing
23  * <code>StreamingGetStateEvent</code> and sending hypothetical state through
24  * <code>OutputStream</code> reference.
25  *
26  * <blockquote><pre>
27  * Object obj=channel.receive(0);
28  * if(obj instanceof StreamingGetStateEvent) {
29  * StreamingGetStateEvent evt=(StreamingGetStateEvent)obj;
30  * OutputStream oos = null;
31  * try {
32  * oos = new ObjectOutputStream(evt.getArg());
33  * oos.writeObject(state);
34  * oos.flush();
35  * } catch (Exception e) {}
36  * finally
37  * {
38  * try {
39  * oos.close();
40  * } catch (IOException e) {
41  * System.err.println(e);
42  * }
43  * }
44  * }
45  * </pre></blockquote>
46  *
47  *
48  * @author Vladimir Blagojevic
49  * @see org.jgroups.JChannel#getState(Address, long)
50  * @see org.jgroups.StreamingMessageListener#getState(OutputStream)
51  * @since 2.4
52  *
53  */

54
55 public class StreamingGetStateEvent {
56
57     OutputStream JavaDoc os;
58     String JavaDoc state_id;
59     
60     public StreamingGetStateEvent(OutputStream JavaDoc os,String JavaDoc state_id) {
61         super();
62         this.os=os;
63         this.state_id=state_id;
64     }
65     /**
66      * Returns OutputStream used for writing of a state.
67      *
68      * @return the OutputStream
69      */

70     public OutputStream JavaDoc getArg()
71     {
72         return os;
73     }
74     
75     /**
76      * Returns id of the partial state if partial state was requested.
77      * If full state transfer was requested this method will return null.
78      *
79      * @see JChannel#getState(Address, long)
80      * @see JChannel#getState(Address, String, long)
81      * @return partial state id
82      */

83     public String JavaDoc getStateId()
84     {
85         return state_id;
86     }
87
88 }
89
Popular Tags