summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Network/BoostUDPSocket.cpp')
-rw-r--r--Swiften/Network/BoostUDPSocket.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/Swiften/Network/BoostUDPSocket.cpp b/Swiften/Network/BoostUDPSocket.cpp
index dff941f..cedaad4 100644
--- a/Swiften/Network/BoostUDPSocket.cpp
+++ b/Swiften/Network/BoostUDPSocket.cpp
@@ -76,11 +76,13 @@ void BoostUDPSocket::connect(const HostAddressPort &address)
void BoostUDPSocket::connectToFirstIncoming()
{
- boost::shared_ptr<SafeByteArray> buf = boost::make_shared<SafeByteArray>(1);
+ readBuffer_ = boost::make_shared<SafeByteArray>(1);
socket_.async_receive_from(
- boost::asio::buffer(*buf),
+ boost::asio::buffer(*readBuffer_),
remoteEndpoint_,
- boost::bind(&BoostUDPSocket::handleFirstRead, shared_from_this(), boost::asio::placeholders::error));
+ boost::bind(&BoostUDPSocket::handleFirstRead, shared_from_this(),
+ boost::asio::placeholders::error,
+ boost::asio::placeholders::bytes_transferred));
}
void BoostUDPSocket::close() {
@@ -89,6 +91,16 @@ void BoostUDPSocket::close() {
socket_.close();
}
+HostAddressPort BoostUDPSocket::getLocalAddress() const
+{
+ return HostAddressPort(socket_.local_endpoint());
+}
+
+HostAddressPort BoostUDPSocket::getRemoteAddress() const
+{
+ return HostAddressPort(socket_.remote_endpoint());
+}
+
void BoostUDPSocket::send(const SafeByteArray& data)
{
boost::lock_guard<boost::mutex> lock(sendMutex_);
@@ -129,7 +141,7 @@ void BoostUDPSocket::handleSocketRead(const boost::system::error_code& error, si
// }
}
-void BoostUDPSocket::handleFirstRead(const boost::system::error_code &error)
+void BoostUDPSocket::handleFirstRead(const boost::system::error_code &error, std::size_t /*bytes_transferred*/)
{
if (!error) {
socket_.connect(remoteEndpoint_); // TODO: handle errors