#ifndef STREAM_IDENTITY_ENTRY_H #define STREAM_IDENTITY_ENTRY_H #include "ns3/object.h" #include "ns3/ptr.h" #include "ns3/packet.h" #include "tsn-net-device.h" #include "stream-identification-function.h" namespace ns3 { class TsnNetDevice; class StreamIdEntry : public Object { public: /** * \brief Get the TypeId * * \return The TypeId for this class */ static TypeId GetTypeId(); /** * \brief Create a StreamIdEntry */ StreamIdEntry(); /** * Destroy a StreamIdEntry * * This is the destructor for the StreamIdEntry. */ ~StreamIdEntry(); // Delete copy constructor and assignment operator to avoid misuse StreamIdEntry& operator=(const StreamIdEntry&) = delete; StreamIdEntry(const StreamIdEntry&) = delete; void SetStreamIdentificationFunction(Ptr func); void SetOutFacInputPortList(std::vector> portList); void SetInFacInputPortList(std::vector> portList); void SetInFacOutputPortList(std::vector> portList); void SetOutFacOutputPortList(std::vector> portList); bool Match(Ptr net, bool infacing, bool input, Ptr p); uint32_t GetStreamHandle(); void DoActiveUpdate(Ptr p); Time GetHardwareLatency(); protected: private: uint32_t m_tsnStreamIdHandle; std::vector> m_tsnStreamIdInFacOutputPortList; std::vector> m_tsnStreamIdOutFacOutputPortList; std::vector> m_tsnStreamIdInFacInputPortList; std::vector> m_tsnStreamIdOutFacInputPortList; Ptr m_tsnStreamIdIdentificationFunction; }; } #endif /* STREAM_IDENTITY_ENTRY_H */