• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2009 Mike Cumings
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.kenai.jbosh;
18 
19 /**
20  * A BOSH connection manager session instance.  This consolidates the
21  * configuration knowledge related to the CM session and provides a
22  * mechanism by which
23  */
24 final class CMSessionParams {
25 
26     private final AttrSessionID sid;
27 
28     private final AttrWait wait;
29 
30     private final AttrVersion ver;
31 
32     private final AttrPolling polling;
33 
34     private final AttrInactivity inactivity;
35 
36     private final AttrRequests requests;
37 
38     private final AttrHold hold;
39 
40     private final AttrAccept accept;
41 
42     private final AttrMaxPause maxPause;
43 
44     private final AttrAck ack;
45 
46     private final AttrCharsets charsets;
47 
48     private final boolean ackingRequests;
49 
50     /**
51      * Prevent direct construction.
52      */
CMSessionParams( final AttrSessionID aSid, final AttrWait aWait, final AttrVersion aVer, final AttrPolling aPolling, final AttrInactivity aInactivity, final AttrRequests aRequests, final AttrHold aHold, final AttrAccept aAccept, final AttrMaxPause aMaxPause, final AttrAck aAck, final AttrCharsets aCharsets, final boolean amAckingRequests)53     private CMSessionParams(
54             final AttrSessionID aSid,
55             final AttrWait aWait,
56             final AttrVersion aVer,
57             final AttrPolling aPolling,
58             final AttrInactivity aInactivity,
59             final AttrRequests aRequests,
60             final AttrHold aHold,
61             final AttrAccept aAccept,
62             final AttrMaxPause aMaxPause,
63             final AttrAck aAck,
64             final AttrCharsets aCharsets,
65             final boolean amAckingRequests) {
66         sid = aSid;
67         wait = aWait;
68         ver = aVer;
69         polling = aPolling;
70         inactivity = aInactivity;
71         requests = aRequests;
72         hold = aHold;
73         accept = aAccept;
74         maxPause = aMaxPause;
75         ack = aAck;
76         charsets = aCharsets;
77         ackingRequests = amAckingRequests;
78     }
79 
fromSessionInit( final AbstractBody req, final AbstractBody resp)80     static CMSessionParams fromSessionInit(
81             final AbstractBody req,
82             final AbstractBody resp)
83     throws BOSHException {
84         AttrAck aAck = AttrAck.createFromString(
85                 resp.getAttribute(Attributes.ACK));
86         String rid = req.getAttribute(Attributes.RID);
87         boolean acking = (aAck != null && aAck.getValue().equals(rid));
88 
89         return new CMSessionParams(
90             AttrSessionID.createFromString(
91                 getRequiredAttribute(resp, Attributes.SID)),
92             AttrWait.createFromString(
93                 getRequiredAttribute(resp, Attributes.WAIT)),
94             AttrVersion.createFromString(
95                 resp.getAttribute(Attributes.VER)),
96             AttrPolling.createFromString(
97                 resp.getAttribute(Attributes.POLLING)),
98             AttrInactivity.createFromString(
99                 resp.getAttribute(Attributes.INACTIVITY)),
100             AttrRequests.createFromString(
101                 resp.getAttribute(Attributes.REQUESTS)),
102             AttrHold.createFromString(
103                 resp.getAttribute(Attributes.HOLD)),
104             AttrAccept.createFromString(
105                 resp.getAttribute(Attributes.ACCEPT)),
106             AttrMaxPause.createFromString(
107                 resp.getAttribute(Attributes.MAXPAUSE)),
108             aAck,
109             AttrCharsets.createFromString(
110                 resp.getAttribute(Attributes.CHARSETS)),
111             acking
112             );
113     }
114 
getRequiredAttribute( final AbstractBody body, final BodyQName name)115     private static String getRequiredAttribute(
116             final AbstractBody body,
117             final BodyQName name)
118     throws BOSHException {
119         String attrStr = body.getAttribute(name);
120         if (attrStr == null) {
121             throw(new BOSHException(
122                     "Connection Manager session creation response did not "
123                     + "include required '" + name.getLocalPart()
124                     + "' attribute"));
125         }
126         return attrStr;
127     }
128 
getSessionID()129     AttrSessionID getSessionID() {
130         return sid;
131     }
132 
getWait()133     AttrWait getWait() {
134         return wait;
135     }
136 
getVersion()137     AttrVersion getVersion() {
138         return ver;
139     }
140 
getPollingInterval()141     AttrPolling getPollingInterval() {
142         return polling;
143     }
144 
getInactivityPeriod()145     AttrInactivity getInactivityPeriod() {
146         return inactivity;
147     }
148 
getRequests()149     AttrRequests getRequests() {
150         return requests;
151     }
152 
getHold()153     AttrHold getHold() {
154         return hold;
155     }
156 
getAccept()157     AttrAccept getAccept() {
158         return accept;
159     }
160 
getMaxPause()161     AttrMaxPause getMaxPause() {
162         return maxPause;
163     }
164 
getAck()165     AttrAck getAck() {
166         return ack;
167     }
168 
getCharsets()169     AttrCharsets getCharsets() {
170         return charsets;
171     }
172 
isAckingRequests()173     boolean isAckingRequests() {
174         return ackingRequests;
175     }
176 
177 }
178