content: package com.tsnsched.core.nodes;
  //TSNsched uses the Z3 theorem solver to generate traffic schedules for Time Sensitive Networking (TSN)
  //
  //    TSNsched is licensed under the GNU GPL version 2 or later.
  //    
  //    You should have received a copy of the GNU General Public License
  //    along with this program.  If not, see <https://www.gnu.org/licenses/>.
  
  import java.io.Serializable;
  
  /**
   * [Class]: Switch
   * [Usage]: Contains most of the properties of a normal
   * switch that are used to build the schedule. Since this 
   * scheduler doesn't take in consideration scenarios where
   * normal switches and TSN switches interact, no z3 properties
   * had to be specified in this class.
   * 
   * Can be used to further extend the usability of this 
   * project in the future.
   * 
   */
  public class Switch implements Serializable {
  
  	private static final long serialVersionUID = 1L;
  	protected String name;
      protected double maxPacketSize;
      protected double timeToTravel;
      protected double transmissionTime;
      protected double portSpeed;
      
      //protected RealExpr maxPacketSizeZ3;
      //protected RealExpr timeToTravelZ3;
      //protected RealExpr transmissionTimeZ3;
      //protected RealExpr portSpeedZ3;
      
      
      /**
       * [Method]: Switch
       * [Usage]: Default constructor of class Switch. Is used by
       * TSNSwitch to instantiate new children classes.
       */
      public Switch() {
      
      }
      
      /**
       * [Method]: Switch
       * [Usage]: Overloaded constructor of class Switch. Can
       * instantiate new switches using properties given as 
       * parameters.
       * 
       * @param name                  Name of the switch
       * @param maxPacketSize         Maximum size of a packet supported by this switch
       * @param timeToTravel          Time that a packet takes to leave its port and reach the destination
       * @param transmissionTime      Time taken to process the packet inside the switch
       * @param portSpeed             Transmission speed of the port
       */
      public Switch(String name,
                    double maxPacketSize,
                    double timeToTravel,
                    double transmissionTime,
                    double portSpeed) {
          this.name = name;
          this.maxPacketSize = maxPacketSize;
          this.timeToTravel = timeToTravel;
          this.transmissionTime = transmissionTime;
          this.portSpeed = portSpeed;
      }
      
      
      /*
       *  GETTERS AND SETTERS
       */
      
      
      public double getMaxPacketSize() {
          return maxPacketSize;
      }
  
      public void setMaxPacketSize(double maxPacketSize) {
          this.maxPacketSize = maxPacketSize;
      }
  
      public double getTimeToTravel() {
          return timeToTravel;
      }
  
      public void setTimeToTravel(double timeToTravel) {
          this.timeToTravel = timeToTravel;
      }
  
      public double getTransmissionTime() {
          return transmissionTime;
      }
  
      public void setTransmissionTime(double transmissionTime) {
          this.transmissionTime = transmissionTime;
      }
  
      public double getPortSpeed() {
          return portSpeed;
      }
  
      public void setPortSpeed(double portSpeed) {
          this.portSpeed = portSpeed;
      }
  
      public void setName(String name) {
          this.name = name;
      }
      
      public String getName() {
          return this.name;
      }
      
  }
  