summaryrefslogtreecommitdiff
path: root/implementation/endpoints
diff options
context:
space:
mode:
authorJuergen Gehring <juergen.gehring@bmw.de>2018-01-25 00:40:02 -0800
committerJuergen Gehring <juergen.gehring@bmw.de>2018-01-25 00:40:02 -0800
commite20aff9795febe8d170e1e776f8b7a1b60d2b0cc (patch)
treef4f36c32d36a01758d1fdbde65a93ec2e2af8055 /implementation/endpoints
parent104650cb1ccd4f407da0ba7e1d9bd54c011479f8 (diff)
downloadvSomeIP-e20aff9795febe8d170e1e776f8b7a1b60d2b0cc.tar.gz
vsomeip 2.7.32.7.3
Diffstat (limited to 'implementation/endpoints')
-rw-r--r--implementation/endpoints/include/client_endpoint.hpp2
-rw-r--r--implementation/endpoints/include/client_endpoint_impl.hpp8
-rw-r--r--implementation/endpoints/include/endpoint.hpp2
-rw-r--r--implementation/endpoints/include/endpoint_impl.hpp2
-rw-r--r--implementation/endpoints/include/local_client_endpoint_impl.hpp3
-rw-r--r--implementation/endpoints/include/tcp_client_endpoint_impl.hpp4
-rw-r--r--implementation/endpoints/include/tcp_server_endpoint_impl.hpp2
-rw-r--r--implementation/endpoints/include/udp_client_endpoint_impl.hpp6
-rw-r--r--implementation/endpoints/include/udp_server_endpoint_impl.hpp2
-rw-r--r--implementation/endpoints/include/virtual_server_endpoint_impl.hpp4
-rw-r--r--implementation/endpoints/src/client_endpoint_impl.cpp13
-rw-r--r--implementation/endpoints/src/endpoint_impl.cpp2
-rw-r--r--implementation/endpoints/src/local_client_endpoint_impl.cpp6
-rw-r--r--implementation/endpoints/src/tcp_client_endpoint_impl.cpp9
-rw-r--r--implementation/endpoints/src/tcp_server_endpoint_impl.cpp2
-rw-r--r--implementation/endpoints/src/udp_client_endpoint_impl.cpp9
-rw-r--r--implementation/endpoints/src/udp_server_endpoint_impl.cpp2
-rw-r--r--implementation/endpoints/src/virtual_server_endpoint_impl.cpp4
18 files changed, 49 insertions, 33 deletions
diff --git a/implementation/endpoints/include/client_endpoint.hpp b/implementation/endpoints/include/client_endpoint.hpp
index f607e49..4dc828a 100644
--- a/implementation/endpoints/include/client_endpoint.hpp
+++ b/implementation/endpoints/include/client_endpoint.hpp
@@ -15,7 +15,7 @@ public:
virtual ~client_endpoint() {}
virtual bool get_remote_address(boost::asio::ip::address &_address) const = 0;
- virtual unsigned short get_remote_port() const = 0;
+ virtual std::uint16_t get_remote_port() const = 0;
};
} // namespace vsomeip
diff --git a/implementation/endpoints/include/client_endpoint_impl.hpp b/implementation/endpoints/include/client_endpoint_impl.hpp
index 141e95f..57a3084 100644
--- a/implementation/endpoints/include/client_endpoint_impl.hpp
+++ b/implementation/endpoints/include/client_endpoint_impl.hpp
@@ -53,7 +53,9 @@ public:
bool is_connected() const;
virtual bool get_remote_address(boost::asio::ip::address &_address) const;
- virtual unsigned short get_remote_port() const;
+ virtual std::uint16_t get_remote_port() const;
+
+ std::uint16_t get_local_port() const;
public:
void connect_cbk(boost::system::error_code const &_error);
@@ -90,6 +92,10 @@ protected:
bool was_not_connected_;
+ std::atomic<std::uint16_t> local_port_;
+
+private:
+ virtual void set_local_port() = 0;
};
} // namespace vsomeip
diff --git a/implementation/endpoints/include/endpoint.hpp b/implementation/endpoints/include/endpoint.hpp
index e8752c0..94a892e 100644
--- a/implementation/endpoints/include/endpoint.hpp
+++ b/implementation/endpoints/include/endpoint.hpp
@@ -39,7 +39,7 @@ public:
const std::string &_address, uint16_t _port) = 0;
virtual void remove_default_target(service_t _service) = 0;
- virtual unsigned short get_local_port() const = 0;
+ virtual std::uint16_t get_local_port() const = 0;
virtual bool is_reliable() const = 0;
virtual bool is_local() const = 0;
diff --git a/implementation/endpoints/include/endpoint_impl.hpp b/implementation/endpoints/include/endpoint_impl.hpp
index 6b8b274..3e5ac22 100644
--- a/implementation/endpoints/include/endpoint_impl.hpp
+++ b/implementation/endpoints/include/endpoint_impl.hpp
@@ -44,7 +44,7 @@ public:
// Dummy implementations as we only need these for server endpoints
// TODO: redesign
- unsigned short get_local_port() const;
+ std::uint16_t get_local_port() const;
bool is_reliable() const;
void increment_use_count();
diff --git a/implementation/endpoints/include/local_client_endpoint_impl.hpp b/implementation/endpoints/include/local_client_endpoint_impl.hpp
index 7b71968..eb1b310 100644
--- a/implementation/endpoints/include/local_client_endpoint_impl.hpp
+++ b/implementation/endpoints/include/local_client_endpoint_impl.hpp
@@ -43,7 +43,7 @@ public:
bool is_local() const;
bool get_remote_address(boost::asio::ip::address &_address) const;
- unsigned short get_remote_port() const;
+ std::uint16_t get_remote_port() const;
void restart();
@@ -56,6 +56,7 @@ private:
void receive();
void receive_cbk(boost::system::error_code const &_error,
std::size_t _bytes);
+ void set_local_port();
message_buffer_t recv_buffer_;
};
diff --git a/implementation/endpoints/include/tcp_client_endpoint_impl.hpp b/implementation/endpoints/include/tcp_client_endpoint_impl.hpp
index cd8420a..991949c 100644
--- a/implementation/endpoints/include/tcp_client_endpoint_impl.hpp
+++ b/implementation/endpoints/include/tcp_client_endpoint_impl.hpp
@@ -31,8 +31,7 @@ public:
void restart();
bool get_remote_address(boost::asio::ip::address &_address) const;
- unsigned short get_local_port() const;
- unsigned short get_remote_port() const;
+ std::uint16_t get_remote_port() const;
bool is_reliable() const;
bool is_local() const;
@@ -50,6 +49,7 @@ private:
const std::string get_address_port_remote() const;
const std::string get_address_port_local() const;
void handle_recv_buffer_exception(const std::exception &_e);
+ void set_local_port();
const std::uint32_t recv_buffer_size_initial_;
diff --git a/implementation/endpoints/include/tcp_server_endpoint_impl.hpp b/implementation/endpoints/include/tcp_server_endpoint_impl.hpp
index 179825e..1fd4052 100644
--- a/implementation/endpoints/include/tcp_server_endpoint_impl.hpp
+++ b/implementation/endpoints/include/tcp_server_endpoint_impl.hpp
@@ -42,7 +42,7 @@ public:
bool get_default_target(service_t, endpoint_type &) const;
- unsigned short get_local_port() const;
+ std::uint16_t get_local_port() const;
bool is_reliable() const;
bool is_local() const;
diff --git a/implementation/endpoints/include/udp_client_endpoint_impl.hpp b/implementation/endpoints/include/udp_client_endpoint_impl.hpp
index 0734d47..9f3e9b0 100644
--- a/implementation/endpoints/include/udp_client_endpoint_impl.hpp
+++ b/implementation/endpoints/include/udp_client_endpoint_impl.hpp
@@ -37,16 +37,16 @@ public:
void receive_cbk(boost::system::error_code const &_error,
std::size_t _bytes);
-
+
bool get_remote_address(boost::asio::ip::address &_address) const;
- unsigned short get_local_port() const;
- unsigned short get_remote_port() const;
+ std::uint16_t get_remote_port() const;
bool is_local() const;
private:
void send_queued();
void connect();
void receive();
+ void set_local_port();
message_buffer_t recv_buffer_;
diff --git a/implementation/endpoints/include/udp_server_endpoint_impl.hpp b/implementation/endpoints/include/udp_server_endpoint_impl.hpp
index 44bca0d..50b5dda 100644
--- a/implementation/endpoints/include/udp_server_endpoint_impl.hpp
+++ b/implementation/endpoints/include/udp_server_endpoint_impl.hpp
@@ -44,7 +44,7 @@ public:
void remove_default_target(service_t _service);
bool get_default_target(service_t _service, endpoint_type &_target) const;
- unsigned short get_local_port() const;
+ std::uint16_t get_local_port() const;
bool is_local() const;
client_t get_client(std::shared_ptr<endpoint_definition> _endpoint);
diff --git a/implementation/endpoints/include/virtual_server_endpoint_impl.hpp b/implementation/endpoints/include/virtual_server_endpoint_impl.hpp
index 5e8c49e..e8b6258 100644
--- a/implementation/endpoints/include/virtual_server_endpoint_impl.hpp
+++ b/implementation/endpoints/include/virtual_server_endpoint_impl.hpp
@@ -40,8 +40,8 @@ public:
void remove_default_target(service_t _service);
bool get_remote_address(boost::asio::ip::address &_address) const;
- unsigned short get_local_port() const;
- unsigned short get_remote_port() const;
+ std::uint16_t get_local_port() const;
+ std::uint16_t get_remote_port() const;
bool is_reliable() const;
bool is_local() const;
diff --git a/implementation/endpoints/src/client_endpoint_impl.cpp b/implementation/endpoints/src/client_endpoint_impl.cpp
index c051194..9744a22 100644
--- a/implementation/endpoints/src/client_endpoint_impl.cpp
+++ b/implementation/endpoints/src/client_endpoint_impl.cpp
@@ -37,7 +37,8 @@ client_endpoint_impl<Protocol>::client_endpoint_impl(
connect_timeout_(VSOMEIP_DEFAULT_CONNECT_TIMEOUT), // TODO: use config variable
is_connected_(false),
packetizer_(std::make_shared<message_buffer_t>()),
- was_not_connected_(false) {
+ was_not_connected_(false),
+ local_port_(0) {
}
template<typename Protocol>
@@ -209,7 +210,7 @@ void client_endpoint_impl<Protocol>::connect_cbk(
connect_timer_.cancel();
}
connect_timeout_ = VSOMEIP_DEFAULT_CONNECT_TIMEOUT; // TODO: use config variable
-
+ set_local_port();
if (!is_connected_) {
is_connected_ = true;
its_host->on_connect(this->shared_from_this());
@@ -282,6 +283,7 @@ void client_endpoint_impl<Protocol>::shutdown_and_close_socket() {
template<typename Protocol>
void client_endpoint_impl<Protocol>::shutdown_and_close_socket_unlocked() {
+ local_port_ = 0;
if (socket_->is_open()) {
boost::system::error_code its_error;
socket_->shutdown(Protocol::socket::shutdown_both, its_error);
@@ -297,11 +299,16 @@ bool client_endpoint_impl<Protocol>::get_remote_address(
}
template<typename Protocol>
-unsigned short client_endpoint_impl<Protocol>::get_remote_port() const {
+std::uint16_t client_endpoint_impl<Protocol>::get_remote_port() const {
return 0;
}
template<typename Protocol>
+std::uint16_t client_endpoint_impl<Protocol>::get_local_port() const {
+ return local_port_;
+}
+
+template<typename Protocol>
void client_endpoint_impl<Protocol>::start_connect_timer() {
std::lock_guard<std::mutex> its_lock(connect_timer_mutex_);
connect_timer_.expires_from_now(
diff --git a/implementation/endpoints/src/endpoint_impl.cpp b/implementation/endpoints/src/endpoint_impl.cpp
index 4e9d9aa..cf35a39 100644
--- a/implementation/endpoints/src/endpoint_impl.cpp
+++ b/implementation/endpoints/src/endpoint_impl.cpp
@@ -108,7 +108,7 @@ void endpoint_impl<Protocol>::remove_default_target(service_t) {
}
template<typename Protocol>
-unsigned short endpoint_impl<Protocol>::get_local_port() const {
+std::uint16_t endpoint_impl<Protocol>::get_local_port() const {
return 0;
}
diff --git a/implementation/endpoints/src/local_client_endpoint_impl.cpp b/implementation/endpoints/src/local_client_endpoint_impl.cpp
index 3238153..f6e1b5c 100644
--- a/implementation/endpoints/src/local_client_endpoint_impl.cpp
+++ b/implementation/endpoints/src/local_client_endpoint_impl.cpp
@@ -206,8 +206,12 @@ bool local_client_endpoint_impl::get_remote_address(
return false;
}
-unsigned short local_client_endpoint_impl::get_remote_port() const {
+std::uint16_t local_client_endpoint_impl::get_remote_port() const {
return 0;
}
+void local_client_endpoint_impl::set_local_port() {
+ // local_port_ is set to zero in ctor of client_endpoint_impl -> do nothing
+}
+
} // namespace vsomeip
diff --git a/implementation/endpoints/src/tcp_client_endpoint_impl.cpp b/implementation/endpoints/src/tcp_client_endpoint_impl.cpp
index a66ad26..f0a0e10 100644
--- a/implementation/endpoints/src/tcp_client_endpoint_impl.cpp
+++ b/implementation/endpoints/src/tcp_client_endpoint_impl.cpp
@@ -210,22 +210,21 @@ bool tcp_client_endpoint_impl::get_remote_address(
return true;
}
-unsigned short tcp_client_endpoint_impl::get_local_port() const {
+void tcp_client_endpoint_impl::set_local_port() {
std::lock_guard<std::mutex> its_lock(socket_mutex_);
boost::system::error_code its_error;
if (socket_->is_open()) {
endpoint_type its_endpoint = socket_->local_endpoint(its_error);
if (!its_error) {
- return its_endpoint.port();
+ local_port_ = its_endpoint.port();
} else {
- VSOMEIP_WARNING << "tcp_client_endpoint_impl::get_local_port() "
+ VSOMEIP_WARNING << "tcp_client_endpoint_impl::set_local_port() "
<< " couldn't get local_endpoint: " << its_error.message();
}
}
- return 0;
}
-unsigned short tcp_client_endpoint_impl::get_remote_port() const {
+std::uint16_t tcp_client_endpoint_impl::get_remote_port() const {
return remote_port_;
}
diff --git a/implementation/endpoints/src/tcp_server_endpoint_impl.cpp b/implementation/endpoints/src/tcp_server_endpoint_impl.cpp
index 3f4e548..8e643c1 100644
--- a/implementation/endpoints/src/tcp_server_endpoint_impl.cpp
+++ b/implementation/endpoints/src/tcp_server_endpoint_impl.cpp
@@ -185,7 +185,7 @@ void tcp_server_endpoint_impl::accept_cbk(connection::ptr _connection,
}
}
-unsigned short tcp_server_endpoint_impl::get_local_port() const {
+std::uint16_t tcp_server_endpoint_impl::get_local_port() const {
return local_port_;
}
diff --git a/implementation/endpoints/src/udp_client_endpoint_impl.cpp b/implementation/endpoints/src/udp_client_endpoint_impl.cpp
index cd51f47..1d28b98 100644
--- a/implementation/endpoints/src/udp_client_endpoint_impl.cpp
+++ b/implementation/endpoints/src/udp_client_endpoint_impl.cpp
@@ -143,22 +143,21 @@ bool udp_client_endpoint_impl::get_remote_address(
return true;
}
-unsigned short udp_client_endpoint_impl::get_local_port() const {
+void udp_client_endpoint_impl::set_local_port() {
std::lock_guard<std::mutex> its_lock(socket_mutex_);
boost::system::error_code its_error;
if (socket_->is_open()) {
endpoint_type its_endpoint = socket_->local_endpoint(its_error);
if (!its_error) {
- return its_endpoint.port();
+ local_port_ = its_endpoint.port();
} else {
- VSOMEIP_WARNING << "udp_client_endpoint_impl::get_local_port() "
+ VSOMEIP_WARNING << "udp_client_endpoint_impl::set_local_port() "
<< " couldn't get local_endpoint: " << its_error.message();
}
}
- return 0;
}
-unsigned short udp_client_endpoint_impl::get_remote_port() const {
+std::uint16_t udp_client_endpoint_impl::get_remote_port() const {
return remote_port_;
}
diff --git a/implementation/endpoints/src/udp_server_endpoint_impl.cpp b/implementation/endpoints/src/udp_server_endpoint_impl.cpp
index 3bc5938..e21f107 100644
--- a/implementation/endpoints/src/udp_server_endpoint_impl.cpp
+++ b/implementation/endpoints/src/udp_server_endpoint_impl.cpp
@@ -258,7 +258,7 @@ bool udp_server_endpoint_impl::get_default_target(service_t _service,
return is_valid;
}
-unsigned short udp_server_endpoint_impl::get_local_port() const {
+std::uint16_t udp_server_endpoint_impl::get_local_port() const {
return local_port_;
}
diff --git a/implementation/endpoints/src/virtual_server_endpoint_impl.cpp b/implementation/endpoints/src/virtual_server_endpoint_impl.cpp
index 6f20929..6db9bc1 100644
--- a/implementation/endpoints/src/virtual_server_endpoint_impl.cpp
+++ b/implementation/endpoints/src/virtual_server_endpoint_impl.cpp
@@ -79,11 +79,11 @@ bool virtual_server_endpoint_impl::get_remote_address(
return false;
}
-unsigned short virtual_server_endpoint_impl::get_local_port() const {
+std::uint16_t virtual_server_endpoint_impl::get_local_port() const {
return port_;
}
-unsigned short virtual_server_endpoint_impl::get_remote_port() const {
+std::uint16_t virtual_server_endpoint_impl::get_remote_port() const {
return ILLEGAL_PORT;
}