diff options
author | imarom <imarom@cisco.com> | 2016-11-30 13:00:54 +0200 |
---|---|---|
committer | imarom <imarom@cisco.com> | 2016-11-30 13:35:40 +0200 |
commit | 051a334b6f57280faa9dd90eeab922fb51f3c89e (patch) | |
tree | d7b1784e99edc8b71befc7f6a84d0cedb80f7667 /src/stateless/cp | |
parent | ba3a6e1edd85873be62f17881e4a95df7daf098d (diff) |
reply to messages
Signed-off-by: imarom <imarom@cisco.com>
Diffstat (limited to 'src/stateless/cp')
-rw-r--r-- | src/stateless/cp/trex_stateless_port.cpp | 52 | ||||
-rw-r--r-- | src/stateless/cp/trex_stateless_port.h | 18 |
2 files changed, 36 insertions, 34 deletions
diff --git a/src/stateless/cp/trex_stateless_port.cpp b/src/stateless/cp/trex_stateless_port.cpp index ca185754..7edf1a31 100644 --- a/src/stateless/cp/trex_stateless_port.cpp +++ b/src/stateless/cp/trex_stateless_port.cpp @@ -936,61 +936,67 @@ TrexStatelessPort::remove_and_delete_all_streams() { void TrexStatelessPort::start_rx_capture(const std::string &pcap_filename, uint64_t limit) { - - m_rx_features_info.m_rx_capture_info.enable(pcap_filename, limit); - - TrexStatelessRxStartCapture *msg = new TrexStatelessRxStartCapture(m_port_id, m_rx_features_info.m_rx_capture_info); + static MsgReply<bool> reply; + + reply.reset(); + + TrexStatelessRxStartCapture *msg = new TrexStatelessRxStartCapture(m_port_id, pcap_filename, limit, reply); send_message_to_rx((TrexStatelessCpToRxMsgBase *)msg); /* as below, must wait for ACK from RX core before returning ACK */ - msg->wait_for_reply(); + reply.wait_for_reply(); } void TrexStatelessPort::stop_rx_capture() { TrexStatelessCpToRxMsgBase *msg = new TrexStatelessRxStopCapture(m_port_id); send_message_to_rx(msg); - - /* update our cached data */ - m_rx_features_info.m_rx_capture_info.disable(); } void TrexStatelessPort::start_rx_queue(uint64_t size) { - - m_rx_features_info.m_rx_queue_info.enable(size); - - TrexStatelessRxStartQueue *msg = new TrexStatelessRxStartQueue(m_port_id, m_rx_features_info.m_rx_queue_info); + static MsgReply<bool> reply; + + reply.reset(); + + TrexStatelessRxStartQueue *msg = new TrexStatelessRxStartQueue(m_port_id, size, reply); send_message_to_rx( (TrexStatelessCpToRxMsgBase *)msg ); /* we cannot return ACK to the user until the RX core has approved this might cause the user to lose some packets from the queue */ - msg->wait_for_reply(); + reply.wait_for_reply(); } void TrexStatelessPort::stop_rx_queue() { TrexStatelessCpToRxMsgBase *msg = new TrexStatelessRxStopQueue(m_port_id); send_message_to_rx(msg); - - /* update our cached data */ - m_rx_features_info.m_rx_queue_info.disable(); } -RXPacketBuffer * +const RXPacketBuffer * TrexStatelessPort::get_rx_queue_pkts() { + static MsgReply<const RXPacketBuffer *> reply; + + reply.reset(); - if (m_rx_features_info.m_rx_queue_info.is_empty()) { - return NULL; - } + TrexStatelessRxQueueGetPkts *msg = new TrexStatelessRxQueueGetPkts(m_port_id, reply); + send_message_to_rx( (TrexStatelessCpToRxMsgBase *)msg ); + + return reply.wait_for_reply(); +} + +Json::Value +TrexStatelessPort::rx_features_to_json() { + static MsgReply<Json::Value> reply; + + reply.reset(); - TrexStatelessRxQueueGetPkts *msg = new TrexStatelessRxQueueGetPkts(m_port_id); + TrexStatelessRxFeaturesToJson *msg = new TrexStatelessRxFeaturesToJson(m_port_id, reply); send_message_to_rx( (TrexStatelessCpToRxMsgBase *)msg ); - RXPacketBuffer *pkt_buffer = msg->wait_for_reply(); - return pkt_buffer; + return reply.wait_for_reply(); } /************* Trex Port Owner **************/ diff --git a/src/stateless/cp/trex_stateless_port.h b/src/stateless/cp/trex_stateless_port.h index 4aa7ff36..f2829b8a 100644 --- a/src/stateless/cp/trex_stateless_port.h +++ b/src/stateless/cp/trex_stateless_port.h @@ -393,21 +393,19 @@ public: */ void stop_rx_queue(); - /** - * get the RX features info object + * fetch the RX queue packets from the queue * */ - const RXFeaturesInfo &get_rx_features() { - return m_rx_features_info; - } + const RXPacketBuffer *get_rx_queue_pkts(); /** - * fetch the RX queue packets from the queue + * generate a JSON describing the status + * of the RX features * */ - RXPacketBuffer *get_rx_queue_pkts(); - + Json::Value rx_features_to_json(); + /** * return the port attribute object * @@ -447,7 +445,7 @@ private: * */ void send_message_to_rx(TrexStatelessCpToRxMsgBase *msg); - + /** * when a port stops, perform various actions * @@ -503,8 +501,6 @@ private: int m_pending_async_stop_event; - RXFeaturesInfo m_rx_features_info; - }; |