1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.mortbay.cometd.client;
16
17 import java.util.Map;
18
19
20
21
22
23
24
25 public class Advice
26 {
27
28 public static final int __RECONNECT_RETRY = 0;
29 public static final int __RECONNECT_HANDSHAKE = 1;
30 public static final int __RECONNECT_NONE = 2;
31 private Integer _reconnect;
32
33
34 private Long _interval;
35
36
37 private Boolean _multipleClients;
38
39
40 private String[] _hosts;
41
42 private Map _adviceField;
43
44
45 public Advice (Map adviceField)
46 {
47 _adviceField = adviceField;
48 }
49
50
51
52
53
54
55
56 public boolean isReconnectRetry ()
57 {
58 if (_reconnect == null && _adviceField != null)
59 _reconnect = parseReconnect((String)_adviceField.get("reconnect"));
60
61 return _reconnect != null && _reconnect.intValue() ==__RECONNECT_RETRY;
62 }
63
64
65
66
67
68
69
70 public boolean isReconnectHandshake ()
71 {
72 if (_reconnect == null && _adviceField != null)
73 _reconnect = parseReconnect((String)_adviceField.get("reconnect"));
74
75 return _reconnect != null && _reconnect.intValue() == __RECONNECT_HANDSHAKE;
76 }
77
78
79
80
81
82
83
84 public boolean isReconnectNone ()
85 {
86 if (_reconnect == null && _adviceField != null)
87 _reconnect = parseReconnect((String)_adviceField.get("reconnect"));
88
89 return _reconnect != null && _reconnect.intValue() == __RECONNECT_NONE;
90 }
91
92 public long getInterval()
93 {
94 if (_interval==null && _adviceField != null)
95 _interval = (Long)_adviceField.get("interval");
96
97 return (_interval==null?0:_interval.longValue());
98 }
99
100 public boolean isMultipleClients()
101 {
102 if (_multipleClients == null && _adviceField != null)
103 _multipleClients = (Boolean)_adviceField.get("multiple-clients");
104
105 return (_multipleClients==null?false:_multipleClients.booleanValue());
106 }
107
108 public String[] getHosts()
109 {
110 if (_hosts == null && _adviceField != null)
111 {
112 Object[] hosts = (Object[])_adviceField.get("hosts");
113 if (hosts!=null)
114 {
115 _hosts = new String[hosts.length];
116 System.arraycopy(hosts, 0, _hosts, 0, hosts.length);
117 }
118 }
119 return _hosts;
120 }
121
122 private Integer parseReconnect (String reconnect)
123 {
124 if (reconnect != null)
125 {
126 reconnect = reconnect.trim();
127 if (reconnect.equalsIgnoreCase("retry"))
128 return new Integer( __RECONNECT_RETRY);
129 else if (reconnect.equalsIgnoreCase("handshake"))
130 return new Integer(__RECONNECT_HANDSHAKE);
131 else if (reconnect.equalsIgnoreCase("none"))
132 return new Integer(__RECONNECT_NONE);
133 }
134 return null;
135 }
136 }