Commit 64e3e8b9 authored by Jakob Otto's avatar Jakob Otto

Cleanup code

parent c90fe5e4
...@@ -50,8 +50,7 @@ public: ...@@ -50,8 +50,7 @@ public:
template <class Parent> template <class Parent>
error init(Parent& parent) { error init(Parent& parent) {
auto decorator = make_write_packet_decorator(*this, parent); application_.init(parent);
application_.init(decorator);
return none; return none;
} }
......
...@@ -29,25 +29,37 @@ namespace net { ...@@ -29,25 +29,37 @@ namespace net {
template <class Object, class Parent> template <class Object, class Parent>
class write_packet_decorator { class write_packet_decorator {
public: public:
// -- member types -----------------------------------------------------------
using transport_type = typename Parent::transport_type; using transport_type = typename Parent::transport_type;
using application_type = typename Parent::application_type; using application_type = typename Parent::application_type;
// -- constructors, destructors, and assignment operators --------------------
write_packet_decorator(Object& object, Parent& parent) write_packet_decorator(Object& object, Parent& parent)
: object_(object), parent_(parent) { : object_(object), parent_(parent) {
// nop // nop
} }
// -- properties -------------------------------------------------------------
actor_system& system() {
return parent_.system();
}
transport_type& transport() {
return parent_.transport();
}
// -- member functions -------------------------------------------------------
template <class Header, class... Ts> template <class Header, class... Ts>
void write_packet(const Header& header, span<const byte> payload, void write_packet(const Header& header, span<const byte> payload,
Ts&&... xs) { Ts&&... xs) {
object_.write_packet(parent_, header, payload, std::forward<Ts>(xs)...); object_.write_packet(parent_, header, payload, std::forward<Ts>(xs)...);
} }
actor_system& system() {
return parent_.system();
}
void cancel_timeout(atom_value type, uint64_t id) { void cancel_timeout(atom_value type, uint64_t id) {
parent_.cancel_timeout(type, id); parent_.cancel_timeout(type, id);
} }
...@@ -57,10 +69,6 @@ public: ...@@ -57,10 +69,6 @@ public:
return parent_.set_timeout(tout, type, std::forward<Ts>(xs)...); return parent_.set_timeout(tout, type, std::forward<Ts>(xs)...);
} }
transport_type& transport() {
return parent_.transport();
}
private: private:
Object& object_; Object& object_;
Parent& parent_; Parent& parent_;
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
* http://www.boost.org/LICENSE_1_0.txt. * * http://www.boost.org/LICENSE_1_0.txt. *
******************************************************************************/ ******************************************************************************/
#define CAF_SUITE scribe_policy #define CAF_SUITE stream_transport
#include "caf/net/stream_transport.hpp" #include "caf/net/stream_transport.hpp"
...@@ -128,20 +128,20 @@ CAF_TEST(receive) { ...@@ -128,20 +128,20 @@ CAF_TEST(receive) {
CAF_CHECK_EQUAL(mpx->num_socket_managers(), 1u); CAF_CHECK_EQUAL(mpx->num_socket_managers(), 1u);
auto buf = std::make_shared<std::vector<byte>>(); auto buf = std::make_shared<std::vector<byte>>();
auto sockets = unbox(make_stream_socket_pair()); auto sockets = unbox(make_stream_socket_pair());
nonblocking(sockets.second, true); if (auto err = nonblocking(sockets.second, true))
CAF_FAIL("nonblocking() returned an error: " << err);
CAF_CHECK_EQUAL(read(sockets.second, make_span(read_buf)), CAF_CHECK_EQUAL(read(sockets.second, make_span(read_buf)),
sec::unavailable_or_would_block); sec::unavailable_or_would_block);
auto guard = detail::make_scope_guard([&] { close(sockets.second); }); auto guard = detail::make_scope_guard([&] { close(sockets.second); });
CAF_MESSAGE("configure scribe_policy");
transport_type transport{sockets.first, dummy_application{buf}}; transport_type transport{sockets.first, dummy_application{buf}};
transport.configure_read(net::receive_policy::exactly(hello_manager.size())); transport.configure_read(net::receive_policy::exactly(hello_manager.size()));
auto mgr = make_endpoint_manager(mpx, sys, transport); auto mgr = make_endpoint_manager(mpx, sys, transport);
CAF_CHECK_EQUAL(mgr->init(), none); CAF_CHECK_EQUAL(mgr->init(), none);
mpx->handle_updates(); mpx->handle_updates();
CAF_CHECK_EQUAL(mpx->num_socket_managers(), 2u); CAF_CHECK_EQUAL(mpx->num_socket_managers(), 2u);
CAF_MESSAGE("sending data to scribe_policy");
CAF_CHECK_EQUAL(write(sockets.second, as_bytes(make_span(hello_manager))), CAF_CHECK_EQUAL(write(sockets.second, as_bytes(make_span(hello_manager))),
hello_manager.size()); hello_manager.size());
CAF_MESSAGE("wrote " << hello_manager.size() << " bytes.");
run(); run();
CAF_CHECK_EQUAL(string_view(reinterpret_cast<char*>(buf->data()), CAF_CHECK_EQUAL(string_view(reinterpret_cast<char*>(buf->data()),
buf->size()), buf->size()),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment