summaryrefslogtreecommitdiffstats
path: root/src/stateless/cp/trex_stateless_port.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/stateless/cp/trex_stateless_port.cpp')
-rw-r--r--src/stateless/cp/trex_stateless_port.cpp39
1 files changed, 23 insertions, 16 deletions
diff --git a/src/stateless/cp/trex_stateless_port.cpp b/src/stateless/cp/trex_stateless_port.cpp
index 605995ae..90142d9b 100644
--- a/src/stateless/cp/trex_stateless_port.cpp
+++ b/src/stateless/cp/trex_stateless_port.cpp
@@ -119,23 +119,10 @@ TrexStatelessPort::~TrexStatelessPort() {
void
TrexStatelessPort::acquire(const std::string &user, uint32_t session_id, bool force) {
- /* if port is free - just take it */
- if (get_owner().is_free()) {
- get_owner().own(user);
- return;
- }
-
- if (force) {
- get_owner().own(user);
-
- /* inform the other client of the steal... */
- Json::Value data;
+ bool used_force = !get_owner().is_free() && force;
- data["port_id"] = m_port_id;
- data["who"] = user;
- data["session_id"] = session_id;
-
- get_stateless_obj()->get_publisher()->publish_event(TrexPublisher::EVENT_PORT_FORCE_ACQUIRED, data);
+ if (get_owner().is_free() || force) {
+ get_owner().own(user, session_id);
} else {
/* not same user or session id and not force - report error */
@@ -146,11 +133,30 @@ TrexStatelessPort::acquire(const std::string &user, uint32_t session_id, bool fo
}
}
+ Json::Value data;
+
+ data["port_id"] = m_port_id;
+ data["who"] = user;
+ data["session_id"] = session_id;
+ data["force"] = used_force;
+
+ get_stateless_obj()->get_publisher()->publish_event(TrexPublisher::EVENT_PORT_ACQUIRED, data);
+
}
void
TrexStatelessPort::release(void) {
+
+
+ Json::Value data;
+
+ data["port_id"] = m_port_id;
+ data["who"] = get_owner().get_name();
+ data["session_id"] = get_owner().get_session_id();
+
get_owner().release();
+
+ get_stateless_obj()->get_publisher()->publish_event(TrexPublisher::EVENT_PORT_RELEASED, data);
}
/**
@@ -776,6 +782,7 @@ TrexStatelessPort::remove_and_delete_all_streams() {
TrexPortOwner::TrexPortOwner() {
m_is_free = true;
+ m_session_id = 0;
/* for handlers random generation */
m_seed = time(NULL);