5f8cbe183c3fbd9656ca0cb3957adf871dc1908f
[packetcable.git] / packetcable-driver / src / main / java / org / pcmm / gates / IPCMMGate.java
1 /*
2  * Copyright (c) 2015 Cable Television Laboratories, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.pcmm.gates;
10
11
12 import java.util.List;
13
14 /**
15  * <p>
16  * A PacketCable Multimedia Gate is a logical representation of a policy
17  * decision that has been installed on the CMTS. A Gate is used to control
18  * access by a single IP flow to enhanced QoS Services provided by a DOCSIS
19  * cable network. Gates are unidirectional; a single Gate controls access to a
20  * flow in either the upstream or the downstream direction, but not both. For a
21  * bi-directional IP session, two Gates are required, one for upstream and one
22  * for downstream, each identified by a unique GateID. It is important to
23  * recognize that this is a fundamental difference from PacketCable 1.x, in
24  * which a single GateID may reference both an upstream and a downstream Gate.
25  * </p>
26  * <p>
27  * In PacketCable Multimedia, each Gate has a separate GateID. The Gate defines
28  * </p>
29  * <p>
30  *
31  * </p>
32  *
33  *
34  */
35 public interface IPCMMGate {
36
37
38     /**
39      *
40      * @return whether this gate is multicast or unicast.
41      */
42     boolean isMulticast();
43
44     /**
45      * GateID is the handle for the Gate.
46      *
47      */
48     void setGateID(IGateID gateid);
49
50     /**
51      * (i.e., QoS limits, timers, etc.).
52      *
53      */
54     void setGateSpec(IGateSpec gateSpec);
55
56     /**
57      * Classifier describes the IP flow(s) that will be mapped to the DOCSIS
58      * Service Flow.
59      *
60      */
61     void setClassifiers(List<IClassifier> classifiers);
62
63     /**
64      * Traffic Profile describes the QoS attributes of the Service Flow used to
65      * support the IP flow.
66      */
67     void setTrafficProfile(ITrafficProfile profile);
68
69     void setTransactionID(ITransactionID transactionID);
70
71     void setError(IPCMMError error);
72
73     ITransactionID getTransactionID();
74
75     /**
76      * GateID is the handle for the Gate.
77      *
78      * @return gateID
79      */
80     IGateID getGateID();
81
82     /**
83      * AMID is the handle that identifies the Application Manager and
84      * Application Type
85      *
86      * @return AMID handle.
87      */
88     IAMID getAMID();
89
90     /**
91      * SubscriberID uniquely identifies the Client for which the policy is being
92      * set.
93      *
94      * @return unique subscriber ID.
95      */
96     ISubscriberID getSubscriberID();
97
98     /**
99      * (i.e., QoS limits, timers, etc.).
100      *
101      * @return gateSpec object.
102      */
103     IGateSpec getGateSpec();
104
105     /**
106      * Classifier describes the IP flow(s) that will be mapped to the DOCSIS
107      * Service Flow.
108      *
109      * @return Classifier object.
110      */
111     List<IClassifier> getClassifiers();
112
113     /**
114      * Traffic Profile describes the QoS attributes of the Service Flow used to
115      * support the IP flow.
116      */
117     ITrafficProfile getTrafficProfile();
118
119     /**
120      * The PacketCable Error object contains information on the type of error that has occurred.
121      */
122     IPCMMError getError();
123
124
125     /**
126      *
127      * @return cops data
128      */
129     byte[] getData();
130     // Event Generation Info (optional)
131     // Time-Based Usage Limit (optional)
132     // Volume-Based Usage Limit (optional)
133     // Opaque Data (optional)
134     // UserID (optional)
135     // SharedResourceID (optional)
136 }