diff options
Diffstat (limited to 'src/stateless')
-rw-r--r-- | src/stateless/trex_stateless.cpp | 46 | ||||
-rw-r--r-- | src/stateless/trex_stateless_api.h | 22 | ||||
-rw-r--r-- | src/stateless/trex_stream.cpp | 4 | ||||
-rw-r--r-- | src/stateless/trex_stream_api.h | 14 |
4 files changed, 79 insertions, 7 deletions
diff --git a/src/stateless/trex_stateless.cpp b/src/stateless/trex_stateless.cpp index ff469d7e..2ab0c5d9 100644 --- a/src/stateless/trex_stateless.cpp +++ b/src/stateless/trex_stateless.cpp @@ -55,7 +55,7 @@ TrexStateless::~TrexStateless() { delete m_ports[i]; } - delete m_ports; + delete [] m_ports; } TrexStatelessPort * TrexStateless::get_port_by_id(uint8_t port_id) { @@ -71,3 +71,47 @@ uint8_t TrexStateless::get_port_count() { return m_port_count; } +/*************************** + * trex stateless port + * + **************************/ +TrexStatelessPort::TrexStatelessPort(uint8_t port_id) : m_port_id(port_id) { + m_started = false; +} + + +/** + * starts the traffic on the port + * + */ +TrexStatelessPort::traffic_rc_e +TrexStatelessPort::start_traffic(void) { + if (m_started) { + return (TRAFFIC_ERR_ALREADY_STARTED); + } + + if (get_stream_table()->size() == 0) { + return (TRAFFIC_ERR_NO_STREAMS); + } + + m_started = true; + + return (TRAFFIC_OK); +} + +void +TrexStatelessPort::stop_traffic(void) { + if (m_started) { + m_started = false; + } +} + +/** +* access the stream table +* +*/ +TrexStreamTable * TrexStatelessPort::get_stream_table() { + return &m_stream_table; +} + + diff --git a/src/stateless/trex_stateless_api.h b/src/stateless/trex_stateless_api.h index edd7b051..358ab339 100644 --- a/src/stateless/trex_stateless_api.h +++ b/src/stateless/trex_stateless_api.h @@ -49,20 +49,32 @@ public: class TrexStatelessPort { public: - TrexStatelessPort(uint8_t port_id) : m_port_id(port_id) { - } + /** + * describess error codes for starting traffic + */ + enum traffic_rc_e { + TRAFFIC_OK, + TRAFFIC_ERR_ALREADY_STARTED, + TRAFFIC_ERR_NO_STREAMS, + TRAFFIC_ERR_FAILED_TO_COMPILE_STREAMS + }; + + TrexStatelessPort(uint8_t port_id); + + traffic_rc_e start_traffic(void); + + void stop_traffic(void); /** * access the stream table * */ - TrexStreamTable *get_stream_table() { - return &m_stream_table; - } + TrexStreamTable *get_stream_table(); private: TrexStreamTable m_stream_table; uint8_t m_port_id; + bool m_started; }; /** diff --git a/src/stateless/trex_stream.cpp b/src/stateless/trex_stream.cpp index b3919770..2b5b2424 100644 --- a/src/stateless/trex_stream.cpp +++ b/src/stateless/trex_stream.cpp @@ -99,3 +99,7 @@ void TrexStreamTable::get_stream_list(std::vector<uint32_t> &stream_list) { stream_list.push_back(stream.first); } } + +int TrexStreamTable::size() { + return m_stream_table.size(); +} diff --git a/src/stateless/trex_stream_api.h b/src/stateless/trex_stream_api.h index 97e0b7f7..c9248999 100644 --- a/src/stateless/trex_stream_api.h +++ b/src/stateless/trex_stream_api.h @@ -35,6 +35,7 @@ class TrexRpcCmdAddStream; class TrexStream { /* provide the RPC parser a way to access private fields */ friend class TrexRpcCmdAddStream; + friend class TrexRpcCmdGetStream; friend class TrexStreamTable; public: @@ -53,7 +54,7 @@ private: /* config fields */ double m_isg_usec; - uint32_t m_next_stream_id; + int m_next_stream_id; /* indicators */ bool m_enabled; @@ -87,6 +88,11 @@ class TrexStreamContinuous : public TrexStream { public: TrexStreamContinuous(uint8_t port_id, uint32_t stream_id, uint32_t pps) : TrexStream(port_id, stream_id), m_pps(pps) { } + + uint32_t get_pps() { + return m_pps; + } + protected: uint32_t m_pps; }; @@ -171,6 +177,12 @@ public: */ void get_stream_list(std::vector<uint32_t> &stream_list); + /** + * get the table size + * + */ + int size(); + private: /** * holds all the stream in a hash table by stream id |