Skip to content

Commit

Permalink
Udp changes (#137)
Browse files Browse the repository at this point in the history
* * Updating UdpTransport to allow for external programs to use it directly

* * Updated gitignore to ignore .vscode
  • Loading branch information
jredmondson committed Feb 19, 2019
1 parent 81d508e commit 10760f6
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 2 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.DS_Store
.vscode

*.so
*.o
Expand Down
5 changes: 5 additions & 0 deletions include/madara/transport/BasicASIOTransport.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ class MADARA_EXPORT BasicASIOTransport : public Base

static const double default_read_hertz;

inline const std::vector<udp::endpoint>& get_udp_endpoints(void)
{
return addresses_;
}

protected:
virtual int setup_socket(udp::socket& socket);
virtual int setup_read_socket();
Expand Down
30 changes: 30 additions & 0 deletions include/madara/transport/udp/UdpTransport.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,36 @@ int UdpTransport::setup_write_socket(void)
return 0;
}


long UdpTransport::receive_buffer(
char* buf, size_t & bytes_read, udp::endpoint& remote)
{
boost::system::error_code err;
bytes_read = socket_.receive_from(
asio::buffer((void*)buf, settings_.queue_length), remote,
udp::socket::message_flags{}, err);

if (err == asio::error::would_block || bytes_read == 0)
{
madara_logger_log(context_.get_logger(), logger::LOG_MINOR,
"UdpTransport::receive_buffer: "
" no bytes to read. Proceeding to next wait\n");

return 1;
}
else if (err)
{
madara_logger_log(context_.get_logger(), logger::LOG_MINOR,
"UdpTransport::receive_buffer: unexpected error: %s. "
"Proceeding to next wait\n",
err.message().c_str());

return 2;
}

return 0;
}

long UdpTransport::send_buffer(
const udp::endpoint& target, const char* buf, size_t size)
{
Expand Down
8 changes: 6 additions & 2 deletions include/madara/transport/udp/UdpTransport.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,14 +77,18 @@ class MADARA_EXPORT UdpTransport : public BasicASIOTransport
/// min data sent
knowledge::containers::Integer sent_data_min;

long receive_buffer(
char* buf, size_t & bytes_read, udp::endpoint& remote);

long send_buffer(const udp::endpoint& target,
const char* buf, size_t size);

protected:
int setup_read_socket() override;
int setup_write_socket() override;
int setup_read_thread(double hertz, const std::string& name) override;

long send_message(const char* buf, size_t size, uint64_t clock);
long send_buffer(const udp::endpoint& target,
const char* buf, size_t size);
virtual bool pre_send_buffer(size_t addr_index)
{
return addr_index != 0;
Expand Down

0 comments on commit 10760f6

Please sign in to comment.