Refactor PCMM aspects of COPS message data objects.
[packetcable.git] / packetcable-driver / src / main / java / org / pcmm / gates / IGateSpec.java
index e81d1dc98cca2b6b8417378aebb23020c79c6f26..b31c98e3eb6ff1f9704fbc7b77edad097a59e479 100644 (file)
@@ -1,24 +1,61 @@
-/**
- @header@
+/*
+ * (c) 2015 Cable Television Laboratories, Inc.  All rights reserved.
  */
 
-
 package org.pcmm.gates;
 
 import org.pcmm.base.IPCMMBaseObject;
 
 /**
- * <p>
- * The GateSpec describes some high-level attributes of the Gate, and contains
- * information regarding the treatment of other objects specified in the Gate
- * message.
- * </p>
+ * GateSpec describes specific authorization parameters defining a Gate (i.e., QoS limits, timers, etc.).
+ *
+ * From the Packetcable Multimedia specification section 6.1.4
+ *
+ * The GateSpec describes some high-level attributes of the Gate, and contains information regarding the treatment of
+ * other objects specified in the Gate message. Information contained in a GateSpec is outlined below.
+ *
+ * * SessionClassID
+ * * Direction
+ * * Authorized Timer
+ * * Reserved Timer
+ * * Committed Timer
+ * * Committed Recovery Timer
+ * * DSCP/TOS Overwrite
+ * * DSCP/TOS Mask
+ *
+ * SessionClassID provides a way for the Application Manager and the Policy Server to group Gates into different
+ * classes with different authorization characteristics. For example, one could use the SessionClassID to represent
+ * some prioritization or preemption scheme that would allow either the Policy Server or the CMTS to preempt a preauthorized
+ * Gate in favor of allowing a new Gate with a higher priority to be authorized.
+ *
+ * Direction indicates whether the Gate is for an upstream or downstream flow. Depending on this direction, the CMTS
+ * MUST reserve and activate the DOCSIS flows accordingly. For Multicast Gates the CMTS needs to only support
+ * flows or gates in the downstream direction.
+ *
+ * Authorized Timer limits the amount of time the authorization must remain valid before it is reserved (see
+ * Section 6.2).
+ *
+ * Reserved Timer limits the amount of time the reservation must remain valid before the resources are committed (see
+ * Section 6.2).
+ *
+ * Committed Timer limits the amount of time a committed service flow may remain idle.
+ *
+ * Committed Recovery Timer limits the amount of time that a committed service flow can remain without a
+ * subsequent refresh message from the PS/AM once the PS/AM has been notified of inactivity (see Section 6.2).
+ * DSCP/TOS Overwrite field can be used to overwrite the DSCP/TOS field of packets associated with the DOCSIS
+ * Service Flow that corresponds to the Gate. This field may be unspecified in which case the DSCP/TOS field in the
+ * packet is not over-written by the CMTS. This field may be used in both the upstream and downstream directions.
+ * The CMTS MUST support DSCP/TOS overwrite for upstream gates. The CMTS MAY support DSCP/TOS
+ * overwrite for downstream gates. If DSCP/TOS is enabled in a downstream gate and the CMTS does not support that
+ * function, then the field is ignored. The manner in which the CMTS interprets the DSCP/TOS Overwrite & Mask
+ * fields and transforms it into the corresponding DOCSIS Service Flow Parameters is defined in Section 6.4.2.5.
  */
 public interface IGateSpec extends IPCMMBaseObject {
 
-    byte SNUM = 5;
+    /**
+     * The S-Type for Gate Specifications
+     */
     byte STYPE = 1;
-    short LENGTH = 16;
 
     /**
      * <p>
@@ -67,46 +104,6 @@ public interface IGateSpec extends IPCMMBaseObject {
 
     }
 
-    /**
-     *
-     */
-    enum DSCPTOS {
-
-        ENABLE((byte) 2), OVERRIDE((byte) 0);
-
-        DSCPTOS(byte value) {
-            this.value = value;
-        }
-
-        public byte getValue() {
-            return value;
-        }
-
-        @Override
-        public String toString() {
-            switch (value) {
-            case 1:
-                return "Enable";
-            default:
-                return "Override";
-            }
-        }
-
-        public static DSCPTOS valueOf(byte v) {
-            switch (v) {
-            case 0:
-                return DSCPTOS.OVERRIDE;
-            case 1:
-                return DSCPTOS.ENABLE;
-            default:
-                throw new IllegalArgumentException("not supported value");
-            }
-        }
-
-        private byte value;
-
-    }
-
     /**
      * <p>
      * provides a way for the Application Manager and the Policy Server to group
@@ -121,36 +118,12 @@ public interface IGateSpec extends IPCMMBaseObject {
      */
     ISessionClassID getSessionClassID();
 
-    /**
-     * <p>
-     * sets the session class ID;
-     * </p>
-     * <p>
-     * SessionClassID is a 1-byte unsigned integer value which identifies the
-     * proper admission control policy or parameters to be applied for this
-     * Gate. The SessionClassID is a bit field, defined as follows: Bit 0-2:
-     * Priority, a number from 0 to 7, where 0 is low priority and 7 is high.
-     * Bit 3: Preemption, set to enable preemption of bandwidth allocated to
-     * lower priority sessions if necessary (if supported). Bit 4-7:
-     * Configurable, default to 0
-     * </p>
-     */
-    void setSessionClassID(ISessionClassID id);
-
     /**
      *
      * @return direction.
      */
     Direction getDirection();
 
-    /**
-     * sets the direction
-     *
-     * @param direction
-     *            Direction
-     */
-    void setDirection(Direction direction);
-
     /**
      * Authorized Timer limits the amount of time the authorization must remain
      * valid before it is reserved
@@ -159,14 +132,6 @@ public interface IGateSpec extends IPCMMBaseObject {
      */
     short getTimerT1();
 
-    /**
-     * sets the authorized timer
-     *
-     * @param authTimer
-     *            : authorized timer
-     */
-    void setTimerT1(short authTimer);
-
     /**
      * Reserved Timer limits the amount of time the reservation must remain
      * valid before the resources are committed
@@ -175,13 +140,6 @@ public interface IGateSpec extends IPCMMBaseObject {
      */
     short getTimerT2();
 
-    /**
-     * sets the reserved timer.
-     *
-     * @param timer
-     */
-    void setTimerT2(short timer);
-
     /**
      * Committed Timer limits the amount of time a committed service flow may
      * remain idle.
@@ -190,14 +148,6 @@ public interface IGateSpec extends IPCMMBaseObject {
      */
     short getTimerT3();
 
-    /**
-     * sets the committed timer.
-     *
-     * @param t
-     *            timer
-     */
-    void setTimerT3(short t);
-
     /**
      * Committed Recovery Timer limits the amount of time that a committed
      * service flow can remain without a subsequent refresh message from the
@@ -207,28 +157,11 @@ public interface IGateSpec extends IPCMMBaseObject {
      */
     short getTimerT4();
 
-    /**
-     * sets the Committed Recovery Timer.
-     *
-     * @param t
-     *            timer
-     */
-    void setTimerT4(short t);
-
-    /**
-     *
-     * @param dscpTos - the object used to overwrite
-     */
-    void setDSCP_TOSOverwrite(DSCPTOS dscpTos);
-
-    // set the DSCP_TOS value
-    void setDSCP_TOSOverwrite(byte dscpTos);
-
     /**
      *
      * @return DSCP/TOS
      */
-    DSCPTOS getDSCP_TOSOverwrite();
+    byte getDSCP_TOSOverwrite();
 
     /**
      *
@@ -236,10 +169,4 @@ public interface IGateSpec extends IPCMMBaseObject {
      */
     byte getDSCP_TOSMask();
 
-    /**
-     *
-     * @param dscp_tos_mask
-     */
-    void setDSCP_TOSMask(byte dscp_tos_mask);
-
 }