0a5da3b4930e19deab7d5b3cb92439961a21e389
[packetcable.git] / packetcable-driver / src / main / java / org / pcmm / gates / IGateID.java
1 /*
2  * (c) 2015 Cable Television Laboratories, Inc.  All rights reserved.
3  */
4
5 package org.pcmm.gates;
6
7 import org.pcmm.base.IPCMMBaseObject;
8
9 /**
10  * GateID is the handle for the Gate. The GateID is assigned by the CMTS and is used by the Application Manager,
11  * Policy Server, and client to reference the Gate.
12  *
13  * From the Packetcable Multimedia specification section 6.1.1
14  *
15  * A GateID is an identifier that is locally allocated by the CMTS where the Gate resides. A GateID MUST be
16  * associated with only one Gate. Whereas the PacketCable 1.x DQoS Gate Control model generally assumed a pair of
17  * unidirectional Gates (one upstream and one downstream) per GateID in support of a typical two-way voice session,
18  * here the Gate/GateID relationship is explicitly one-to-one, so that it is easier to support a wide range of Multimedia
19  * services.
20  *
21  * When the Application Manager issues a Gate-Set request, this triggers the Policy Server to issue a Gate-Set message
22  * to the CMTS. When the CMTS responds with an acknowledgment containing the GateID, the Policy Server
23  * forwards this response including the GateID back to the Application Manager. Note that since there can be a manyto-
24  * many relationship between a PS and CMTS, the GateID assigned by one CMTS cannot be guaranteed to be
25  * unique across the network, so the PSs may use the AMID of the AM along with the SubscriberID and GateID in
26  * order to uniquely identify the Gate.
27  *
28  * An algorithm that may be used to assign values of GateIDs is as follows. Partition the 32-bit word into two parts, an
29  * index part, and a random part. The index part identifies the Gate by indexing into a small table, while the random
30  * part provides some level of obscurity to the value. Regardless of the algorithm chosen, the CMTS SHOULD attempt
31  * to minimize the possibility of GateID ambiguities by ensuring that no GateID gets reused within three minutes of its
32  * prior closure or deletion. For the algorithm suggested this could be accomplished by simply incrementing the index
33  * part for each consecutively assigned GateID, wrapping around to zero when the maximum integer value of the index
34  * part is reached.
35  */
36 public interface IGateID extends IPCMMBaseObject {
37
38     /**
39      * The S-Type for Gate IDs
40      */
41     byte STYPE = 1;
42
43     /**
44      * Returns the gate ID value
45      * @return - the ID
46      */
47     int getGateID();
48
49 }