Commit e512ec72 authored by Jakob Otto's avatar Jakob Otto

Fix build

parents f73d66f0 f69e5759
......@@ -46,8 +46,6 @@
#include "caf/proxy_registry.hpp"
#include "caf/response_promise.hpp"
#include "caf/scoped_execution_unit.hpp"
#include "caf/serializer_impl.hpp"
#include "caf/span.hpp"
#include "caf/unit.hpp"
namespace caf::net::basp {
......
......@@ -30,7 +30,6 @@
#include "caf/net/transport_worker_dispatcher.hpp"
#include "caf/net/udp_datagram_socket.hpp"
#include "caf/sec.hpp"
#include "caf/span.hpp"
namespace caf::net {
......@@ -81,14 +80,13 @@ public:
bool handle_read_event(endpoint_manager&) override {
CAF_LOG_TRACE(CAF_ARG(this->handle_.id));
auto ret = read(this->handle_, make_span(this->read_buf_));
auto ret = read(this->handle_, this->read_buf_);
if (auto res = get_if<std::pair<size_t, ip_endpoint>>(&ret)) {
auto num_bytes = res->first;
CAF_LOG_DEBUG("received " << num_bytes << " bytes");
auto ep = res->second;
this->read_buf_.resize(num_bytes);
this->next_layer_.handle_data(*this, make_span(this->read_buf_),
std::move(ep));
this->next_layer_.handle_data(*this, this->read_buf_, std::move(ep));
prepare_next_read();
} else {
auto err = get<sec>(ret);
......@@ -183,7 +181,7 @@ private:
while (!packet_queue_.empty()) {
auto& packet = packet_queue_.front();
auto ptrs = packet.get_buffer_ptrs();
auto write_ret = write(this->handle_, make_span(ptrs), packet.id);
auto write_ret = write(this->handle_, ptrs, packet.id);
if (auto num_bytes = get_if<size_t>(&write_ret)) {
CAF_LOG_DEBUG(CAF_ARG(this->handle_.id) << CAF_ARG(*num_bytes));
CAF_LOG_WARNING_IF(*num_bytes < packet.size,
......
......@@ -21,7 +21,6 @@
#include "caf/net/packet_writer.hpp"
#include "caf/byte.hpp"
#include "caf/span.hpp"
namespace caf::net {
......
......@@ -84,7 +84,9 @@ public:
<< CAF_ARG(this->handle_.id) << CAF_ARG(*num_bytes));
this->collected_ += *num_bytes;
if (this->collected_ >= this->read_threshold_) {
if (auto err = this->next_layer_.handle_data(*this, this->read_buf_)) {
if (auto err = this->next_layer_.handle_data(*this,
make_span(
this->read_buf_))) {
CAF_LOG_ERROR("handle_data failed: " << CAF_ARG(err));
return false;
}
......
......@@ -62,7 +62,7 @@ public:
}
template <class Parent>
error handle_data(Parent& parent, span<byte> data, id_type id) {
error handle_data(Parent& parent, span<const byte> data, id_type id) {
if (auto worker = find_worker(id))
return worker->handle_data(parent, data);
// TODO: Where to get node_id from here?
......
......@@ -23,6 +23,7 @@
#include "caf/actor_system.hpp"
#include "caf/actor_system_config.hpp"
#include "caf/binary_deserializer.hpp"
#include "caf/binary_serializer.hpp"
#include "caf/byte.hpp"
#include "caf/defaults.hpp"
#include "caf/detail/network_order.hpp"
......@@ -37,7 +38,6 @@
#include "caf/none.hpp"
#include "caf/sec.hpp"
#include "caf/send.hpp"
#include "caf/serializer_impl.hpp"
#include "caf/string_algorithms.hpp"
#include "caf/type_erased_tuple.hpp"
......@@ -54,7 +54,7 @@ error application::write_message(
CAF_ASSERT(ptr->msg != nullptr);
CAF_LOG_TRACE(CAF_ARG2("content", ptr->msg->content()));
auto payload_prefix = writer.next_payload_buffer();
serializer_impl<buffer_type> sink{system(), payload_prefix};
binary_serializer sink{system(), payload_prefix};
const auto& src = ptr->msg->sender;
const auto& dst = ptr->receiver;
if (dst == nullptr) {
......@@ -84,7 +84,7 @@ void application::resolve(packet_writer& writer, string_view path,
const actor& listener) {
CAF_LOG_TRACE(CAF_ARG(path) << CAF_ARG(listener));
auto payload = writer.next_payload_buffer();
serializer_impl<buffer_type> sink{&executor_, payload};
binary_serializer sink{&executor_, payload};
if (auto err = sink(path)) {
CAF_LOG_ERROR("unable to serialize path" << CAF_ARG(err));
return;
......@@ -108,7 +108,7 @@ void application::new_proxy(packet_writer& writer, actor_id id) {
void application::local_actor_down(packet_writer& writer, actor_id id,
error reason) {
auto payload = writer.next_payload_buffer();
serializer_impl<buffer_type> sink{system(), payload};
binary_serializer sink{system(), payload};
if (auto err = sink(reason))
CAF_RAISE_ERROR("unable to serialize an error");
auto hdr = writer.next_header_buffer();
......@@ -122,9 +122,9 @@ void application::local_actor_down(packet_writer& writer, actor_id id,
expected<std::vector<byte>> application::serialize(actor_system& sys,
const type_erased_tuple& x) {
std::vector<byte> result;
serializer_impl<std::vector<byte>> sink{sys, result};
binary_serializer sink{sys, result};
if (auto err = message::save(sink, x))
return err;
return err.value();
return result;
}
......@@ -307,7 +307,7 @@ error application::handle_resolve_request(packet_writer& writer, header rec_hdr,
}
// TODO: figure out how to obtain messaging interface.
auto payload = writer.next_payload_buffer();
serializer_impl<buffer_type> sink{&executor_, payload};
binary_serializer sink{&executor_, payload};
if (auto err = sink(aid, ifs))
return err;
auto hdr = writer.next_header_buffer();
......@@ -363,7 +363,7 @@ error application::handle_monitor_message(packet_writer& writer,
} else {
error reason = exit_reason::unknown;
auto payload = writer.next_payload_buffer();
serializer_impl<buffer_type> sink{&executor_, payload};
binary_serializer sink{&executor_, payload};
if (auto err = sink(reason))
return err;
auto hdr = writer.next_header_buffer();
......@@ -389,7 +389,7 @@ error application::handle_down_message(packet_writer&, header received_hdr,
}
error application::generate_handshake(std::vector<byte>& buf) {
serializer_impl<buffer_type> sink{&executor_, buf};
binary_serializer sink{&executor_, buf};
return sink(system().node(),
get_or(system().config(), "middleman.app-identifiers",
defaults::middleman::app_identifiers));
......
......@@ -22,6 +22,8 @@
#include "caf/detail/net_syscall.hpp"
#include "caf/detail/socket_sys_includes.hpp"
#include "caf/error.hpp"
#include "caf/make_message.hpp"
#include "caf/message.hpp"
#include "caf/net/socket.hpp"
#include "caf/none.hpp"
......
......@@ -274,7 +274,7 @@ void multiplexer::write_to_pipe(uint8_t opcode, const socket_manager_ptr& mgr) {
{ // Lifetime scope of guard.
std::lock_guard<std::mutex> guard{write_lock_};
if (write_handle_ != invalid_socket)
res = write(write_handle_, make_span(buf));
res = write(write_handle_, buf);
else
res = sec::socket_invalid;
}
......
......@@ -19,19 +19,17 @@
#include "caf/net/pipe_socket.hpp"
#include <cstdio>
#include <cstdlib>
#include <utility>
#include "caf/byte.hpp"
#include "caf/config.hpp"
#include "caf/detail/net_syscall.hpp"
#include "caf/detail/scope_guard.hpp"
#include "caf/detail/socket_sys_aliases.hpp"
#include "caf/detail/socket_sys_includes.hpp"
#include "caf/error.hpp"
#include "caf/expected.hpp"
#include "caf/make_message.hpp"
#include "caf/message.hpp"
#include "caf/net/stream_socket.hpp"
#include "caf/sec.hpp"
#include "caf/span.hpp"
#include "caf/variant.hpp"
namespace caf::net {
......
......@@ -18,6 +18,8 @@
#include "caf/net/pollset_updater.hpp"
#include <cstring>
#include "caf/net/multiplexer.hpp"
#include "caf/sec.hpp"
#include "caf/span.hpp"
......
......@@ -27,7 +27,6 @@
#include "caf/ip_endpoint.hpp"
#include "caf/logger.hpp"
#include "caf/net/socket_guard.hpp"
#include "caf/span.hpp"
namespace caf::net {
......
......@@ -58,7 +58,7 @@ struct fixture : test_coordinator_fixture<>,
template <class... Ts>
buffer_type to_buf(const Ts&... xs) {
buffer_type buf;
serializer_impl<buffer_type> sink{system(), buf};
binary_serializer sink{system(), buf};
REQUIRE_OK(sink(xs...));
return buf;
}
......
......@@ -23,6 +23,7 @@
#include "caf/net/test/host_fixture.hpp"
#include "caf/test/dsl.hpp"
#include "caf/binary_serializer.hpp"
#include "caf/byte.hpp"
#include "caf/detail/socket_sys_includes.hpp"
#include "caf/make_actor.hpp"
......@@ -33,7 +34,6 @@
#include "caf/net/make_endpoint_manager.hpp"
#include "caf/net/multiplexer.hpp"
#include "caf/net/udp_datagram_socket.hpp"
#include "caf/serializer_impl.hpp"
#include "caf/span.hpp"
using namespace caf;
......@@ -83,7 +83,7 @@ struct fixture : test_coordinator_fixture<>, host_fixture {
uint8_t receive_attempts = 0;
variant<std::pair<size_t, ip_endpoint>, sec> read_ret;
do {
read_ret = read(sock, make_span(buf));
read_ret = read(sock, buf);
if (auto read_res = get_if<std::pair<size_t, ip_endpoint>>(&read_ret)) {
buf.resize(read_res->first);
} else if (get<sec>(read_ret) != sec::unavailable_or_would_block) {
......@@ -169,9 +169,9 @@ public:
static expected<buffer_type> serialize(actor_system& sys,
const type_erased_tuple& x) {
buffer_type result;
serializer_impl<buffer_type> sink{sys, result};
binary_serializer sink{sys, result};
if (auto err = message::save(sink, x))
return err;
return err.value();
return result;
}
......
......@@ -20,6 +20,7 @@
#include "caf/net/doorman.hpp"
#include "caf/binary_serializer.hpp"
#include "caf/net/endpoint_manager.hpp"
#include "caf/net/ip.hpp"
#include "caf/net/make_endpoint_manager.hpp"
......@@ -62,9 +63,9 @@ public:
static expected<std::vector<byte>> serialize(actor_system& sys,
const type_erased_tuple& x) {
std::vector<byte> result;
serializer_impl<std::vector<byte>> sink{sys, result};
binary_serializer sink{sys, result};
if (auto err = message::save(sink, x))
return err;
return err.value();
return result;
}
......@@ -158,7 +159,7 @@ CAF_TEST(doorman accept) {
dummy_application_factory{}});
CAF_CHECK_EQUAL(mgr->init(), none);
auto before = mpx->num_socket_managers();
CAF_CHECK_EQUAL(before, 2);
CAF_CHECK_EQUAL(before, 2u);
uri::authority_type dst;
dst.port = port;
dst.host = "localhost"s;
......
......@@ -23,6 +23,7 @@
#include "caf/net/test/host_fixture.hpp"
#include "caf/test/dsl.hpp"
#include "caf/binary_serializer.hpp"
#include "caf/byte.hpp"
#include "caf/detail/scope_guard.hpp"
#include "caf/make_actor.hpp"
......@@ -30,7 +31,6 @@
#include "caf/net/make_endpoint_manager.hpp"
#include "caf/net/multiplexer.hpp"
#include "caf/net/stream_socket.hpp"
#include "caf/serializer_impl.hpp"
#include "caf/span.hpp"
using namespace caf;
......@@ -64,9 +64,9 @@ public:
static expected<std::vector<byte>> serialize(actor_system& sys,
const type_erased_tuple& x) {
std::vector<byte> result;
serializer_impl<std::vector<byte>> sink{sys, result};
binary_serializer sink{sys, result};
if (auto err = message::save(sink, x))
return err;
return err.value();
return result;
}
};
......@@ -94,7 +94,7 @@ public:
template <class Manager>
bool handle_read_event(Manager&) {
auto res = read(handle_, make_span(read_buf_));
auto res = read(handle_, read_buf_);
if (auto num_bytes = get_if<size_t>(&res)) {
data_->insert(data_->end(), read_buf_.begin(),
read_buf_.begin() + *num_bytes);
......@@ -109,7 +109,7 @@ public:
auto& payload = x->payload;
buf_.insert(buf_.end(), payload.begin(), payload.end());
}
auto res = write(handle_, make_span(buf_));
auto res = write(handle_, buf_);
if (auto num_bytes = get_if<size_t>(&res)) {
buf_.erase(buf_.begin(), buf_.begin() + *num_bytes);
return buf_.size() > 0;
......@@ -168,7 +168,7 @@ CAF_TEST(send and receive) {
auto buf = std::make_shared<std::vector<byte>>();
auto sockets = unbox(make_stream_socket_pair());
nonblocking(sockets.second, true);
CAF_CHECK_EQUAL(read(sockets.second, make_span(read_buf)),
CAF_CHECK_EQUAL(read(sockets.second, read_buf),
sec::unavailable_or_would_block);
auto guard = detail::make_scope_guard([&] { close(sockets.second); });
auto mgr = make_endpoint_manager(mpx, sys,
......@@ -183,7 +183,7 @@ CAF_TEST(send and receive) {
CAF_CHECK_EQUAL(string_view(reinterpret_cast<char*>(buf->data()),
buf->size()),
hello_manager);
CAF_CHECK_EQUAL(read(sockets.second, make_span(read_buf)), hello_test.size());
CAF_CHECK_EQUAL(read(sockets.second, read_buf), hello_test.size());
CAF_CHECK_EQUAL(string_view(reinterpret_cast<char*>(read_buf.data()),
hello_test.size()),
hello_test);
......@@ -200,7 +200,7 @@ CAF_TEST(resolve and proxy communication) {
CAF_CHECK_EQUAL(mgr->init(), none);
CAF_CHECK_EQUAL(mgr->mask(), operation::read_write);
run();
CAF_CHECK_EQUAL(read(sockets.second, make_span(read_buf)), hello_test.size());
CAF_CHECK_EQUAL(read(sockets.second, read_buf), hello_test.size());
mgr->resolve(unbox(make_uri("test:id/42")), self);
run();
self->receive(
......@@ -211,7 +211,7 @@ CAF_TEST(resolve and proxy communication) {
after(std::chrono::seconds(0)) >>
[&] { CAF_FAIL("manager did not respond with a proxy."); });
run();
auto read_res = read(sockets.second, make_span(read_buf));
auto read_res = read(sockets.second, read_buf);
if (!holds_alternative<size_t>(read_res)) {
CAF_ERROR("read() returned an error: " << sys.render(get<sec>(read_res)));
return;
......
......@@ -23,7 +23,7 @@
#include "caf/test/dsl.hpp"
#include "caf/binary_deserializer.hpp"
#include "caf/serializer_impl.hpp"
#include "caf/binary_serializer.hpp"
using namespace caf;
using namespace caf::net;
......@@ -32,7 +32,7 @@ CAF_TEST(serialization) {
basp::header x{basp::message_type::handshake, 42, 4};
std::vector<byte> buf;
{
serializer_impl<std::vector<byte>> sink{nullptr, buf};
binary_serializer sink{nullptr, buf};
CAF_CHECK_EQUAL(sink(x), none);
}
CAF_CHECK_EQUAL(buf.size(), basp::header_size);
......
......@@ -72,7 +72,7 @@ public:
bool handle_write_event() override {
if (wr_buf_.size() == 0)
return false;
auto res = write(handle(), make_span(wr_buf_));
auto res = write(handle(), wr_buf_);
if (auto num_bytes = get_if<size_t>(&res)) {
CAF_ASSERT(*num_bytes > 0);
wr_buf_.erase(wr_buf_.begin(), wr_buf_.begin() + *num_bytes);
......
......@@ -25,10 +25,10 @@
#include "caf/actor_cast.hpp"
#include "caf/actor_control_block.hpp"
#include "caf/actor_system.hpp"
#include "caf/binary_serializer.hpp"
#include "caf/make_actor.hpp"
#include "caf/net/basp/message_queue.hpp"
#include "caf/proxy_registry.hpp"
#include "caf/serializer_impl.hpp"
using namespace caf;
......@@ -109,7 +109,7 @@ CAF_TEST(deliver serialized message) {
CAF_MESSAGE("create a fake message + BASP header");
std::vector<byte> payload;
std::vector<strong_actor_ptr> stages;
serializer_impl<std::vector<byte>> sink{sys, payload};
binary_serializer sink{sys, payload};
if (auto err = sink(node_id{}, self->id(), testee.id(), stages,
make_message(ok_atom::value)))
CAF_FAIL("unable to serialize message: " << sys.render(err));
......
......@@ -26,7 +26,6 @@
#include <vector>
#include "caf/byte.hpp"
#include "caf/span.hpp"
using namespace caf;
using namespace caf::net;
......@@ -41,8 +40,8 @@ CAF_TEST(send and receive) {
pipe_socket rd_sock;
pipe_socket wr_sock;
std::tie(rd_sock, wr_sock) = unbox(make_pipe());
CAF_CHECK_EQUAL(write(wr_sock, make_span(send_buf)), send_buf.size());
CAF_CHECK_EQUAL(read(rd_sock, make_span(receive_buf)), send_buf.size());
CAF_CHECK_EQUAL(write(wr_sock, send_buf), send_buf.size());
CAF_CHECK_EQUAL(read(rd_sock, receive_buf), send_buf.size());
CAF_CHECK(std::equal(send_buf.begin(), send_buf.end(), receive_buf.begin()));
}
......
......@@ -82,7 +82,7 @@ struct fixture : host_fixture, test_coordinator_fixture<config> {
template <class... Ts>
buffer_type to_buf(const Ts&... xs) {
buffer_type buf;
serializer_impl<buffer_type> sink{system(), buf};
binary_serializer sink{system(), buf};
REQUIRE_OK(sink(xs...));
return buf;
}
......@@ -90,7 +90,7 @@ struct fixture : host_fixture, test_coordinator_fixture<config> {
template <class... Ts>
void mock(const Ts&... xs) {
auto buf = to_buf(xs...);
if (fetch_size(write(sock, make_span(buf))) != buf.size())
if (fetch_size(write(sock, buf)) != buf.size())
CAF_FAIL("unable to write " << buf.size() << " bytes");
run();
}
......@@ -103,20 +103,20 @@ struct fixture : host_fixture, test_coordinator_fixture<config> {
static_cast<uint32_t>(payload.size()), basp::version});
CAF_CHECK_EQUAL(app->state(),
basp::connection_state::await_handshake_payload);
write(sock, make_span(payload));
write(sock, payload);
run();
}
void consume_handshake() {
buffer_type buf(basp::header_size);
if (fetch_size(read(sock, make_span(buf))) != basp::header_size)
if (fetch_size(read(sock, buf)) != basp::header_size)
CAF_FAIL("unable to read " << basp::header_size << " bytes");
auto hdr = basp::header::from_bytes(buf);
if (hdr.type != basp::message_type::handshake || hdr.payload_len == 0
|| hdr.operation_data != basp::version)
CAF_FAIL("invalid handshake header");
buf.resize(hdr.payload_len);
if (fetch_size(read(sock, make_span(buf))) != hdr.payload_len)
if (fetch_size(read(sock, buf)) != hdr.payload_len)
CAF_FAIL("unable to read " << hdr.payload_len << " bytes");
node_id nid;
std::vector<std::string> app_ids;
......@@ -149,7 +149,7 @@ struct fixture : host_fixture, test_coordinator_fixture<config> {
std::tuple<unit_t>>::value) { \
auto payload = to_buf(__VA_ARGS__); \
mock(basp::header{kind, static_cast<uint32_t>(payload.size()), op}); \
write(sock, make_span(payload)); \
write(sock, payload); \
} else { \
mock(basp::header{kind, 0, op}); \
} \
......@@ -160,7 +160,7 @@ struct fixture : host_fixture, test_coordinator_fixture<config> {
do { \
CAF_MESSAGE("receive " << msg_type); \
buffer_type buf(basp::header_size); \
if (fetch_size(read(sock, make_span(buf))) != basp::header_size) \
if (fetch_size(read(sock, buf)) != basp::header_size) \
CAF_FAIL("unable to read " << basp::header_size << " bytes"); \
auto hdr = basp::header::from_bytes(buf); \
CAF_CHECK_EQUAL(hdr.type, msg_type); \
......@@ -168,7 +168,7 @@ struct fixture : host_fixture, test_coordinator_fixture<config> {
if (!std::is_same<decltype(std::make_tuple(__VA_ARGS__)), \
std::tuple<unit_t>>::value) { \
buf.resize(hdr.payload_len); \
if (fetch_size(read(sock, make_span(buf))) != size_t{hdr.payload_len}) \
if (fetch_size(read(sock, buf)) != size_t{hdr.payload_len}) \
CAF_FAIL("unable to read " << hdr.payload_len << " bytes"); \
binary_deserializer source{sys, buf}; \
if (auto err = source(__VA_ARGS__)) \
......
......@@ -74,31 +74,29 @@ struct fixture : host_fixture {
CAF_TEST_FIXTURE_SCOPE(network_socket_tests, fixture)
CAF_TEST(read on empty sockets) {
CAF_CHECK_EQUAL(read(first, make_span(rd_buf)),
sec::unavailable_or_would_block);
CAF_CHECK_EQUAL(read(second, make_span(rd_buf)),
sec::unavailable_or_would_block);
CAF_CHECK_EQUAL(read(first, rd_buf), sec::unavailable_or_would_block);
CAF_CHECK_EQUAL(read(second, rd_buf), sec::unavailable_or_would_block);
}
CAF_TEST(transfer data from first to second socket) {
std::vector<byte> wr_buf{1_b, 2_b, 4_b, 8_b, 16_b, 32_b, 64_b};
CAF_MESSAGE("transfer data from first to second socket");
CAF_CHECK_EQUAL(write(first, make_span(wr_buf)), wr_buf.size());
CAF_CHECK_EQUAL(read(second, make_span(rd_buf)), wr_buf.size());
CAF_CHECK_EQUAL(write(first, wr_buf), wr_buf.size());
CAF_CHECK_EQUAL(read(second, rd_buf), wr_buf.size());
CAF_CHECK(std::equal(wr_buf.begin(), wr_buf.end(), rd_buf.begin()));
rd_buf.assign(rd_buf.size(), byte(0));
}
CAF_TEST(transfer data from second to first socket) {
std::vector<byte> wr_buf{1_b, 2_b, 4_b, 8_b, 16_b, 32_b, 64_b};
CAF_CHECK_EQUAL(write(second, make_span(wr_buf)), wr_buf.size());
CAF_CHECK_EQUAL(read(first, make_span(rd_buf)), wr_buf.size());
CAF_CHECK_EQUAL(write(second, wr_buf), wr_buf.size());
CAF_CHECK_EQUAL(read(first, rd_buf), wr_buf.size());
CAF_CHECK(std::equal(wr_buf.begin(), wr_buf.end(), rd_buf.begin()));
}
CAF_TEST(shut down first socket and observe shutdown on the second one) {
close(first);
CAF_CHECK_EQUAL(read(second, make_span(rd_buf)), sec::socket_disconnected);
CAF_CHECK_EQUAL(read(second, rd_buf), sec::socket_disconnected);
first.id = invalid_socket_id;
}
......@@ -110,7 +108,7 @@ CAF_TEST(transfer data using multiple buffers) {
full_buf.insert(full_buf.end(), wr_buf_2.begin(), wr_buf_2.end());
CAF_CHECK_EQUAL(write(second, {make_span(wr_buf_1), make_span(wr_buf_2)}),
full_buf.size());
CAF_CHECK_EQUAL(read(first, make_span(rd_buf)), full_buf.size());
CAF_CHECK_EQUAL(read(first, rd_buf), full_buf.size());
CAF_CHECK(std::equal(full_buf.begin(), full_buf.end(), rd_buf.begin()));
}
......
......@@ -24,6 +24,7 @@
#include "caf/test/dsl.hpp"
#include "caf/binary_deserializer.hpp"
#include "caf/binary_serializer.hpp"
#include "caf/byte.hpp"
#include "caf/detail/scope_guard.hpp"
#include "caf/make_actor.hpp"
......@@ -34,7 +35,6 @@
#include "caf/net/multiplexer.hpp"
#include "caf/net/socket_guard.hpp"
#include "caf/net/stream_socket.hpp"
#include "caf/serializer_impl.hpp"
#include "caf/span.hpp"
using namespace caf;
......@@ -140,9 +140,9 @@ public:
static expected<buffer_type> serialize(actor_system& sys,
const type_erased_tuple& x) {
buffer_type result;
serializer_impl<buffer_type> sink{sys, result};
binary_serializer sink{sys, result};
if (auto err = message::save(sink, x))
return err;
return err.value();
return result;
}
......@@ -194,7 +194,7 @@ CAF_TEST(resolve and proxy communication) {
after(std::chrono::seconds(0)) >>
[&] { CAF_FAIL("manager did not respond with a proxy."); });
run();
auto read_res = read(recv_socket_guard.socket(), make_span(recv_buf));
auto read_res = read(recv_socket_guard.socket(), recv_buf);
if (!holds_alternative<size_t>(read_res))
CAF_FAIL("read() returned an error: " << sys.render(get<sec>(read_res)));
recv_buf.resize(get<size_t>(read_res));
......
......@@ -26,6 +26,7 @@
#include <vector>
#include "caf/binary_deserializer.hpp"
#include "caf/binary_serializer.hpp"
#include "caf/byte.hpp"
#include "caf/detail/scope_guard.hpp"
#include "caf/make_actor.hpp"
......@@ -34,7 +35,6 @@
#include "caf/net/make_endpoint_manager.hpp"
#include "caf/net/multiplexer.hpp"
#include "caf/net/stream_socket.hpp"
#include "caf/serializer_impl.hpp"
#include "caf/span.hpp"
using namespace caf;
......@@ -105,18 +105,19 @@ public:
if (ptr->msg == nullptr)
return;
auto header_buf = parent.next_header_buffer();
serializer_impl<buffer_type> sink{sys_, header_buf};
binary_serializer sink{sys_, header_buf};
header_type header{static_cast<uint32_t>(ptr->payload.size())};
sink(header);
if (auto err = sink(header))
CAF_FAIL("serializing failed: " << err);
parent.write_packet(header_buf, ptr->payload);
}
static expected<std::vector<byte>> serialize(actor_system& sys,
const type_erased_tuple& x) {
std::vector<byte> result;
serializer_impl<std::vector<byte>> sink{sys, result};
binary_serializer sink{sys, result};
if (auto err = message::save(sink, x))
return err;
return err.value();
return result;
}
......@@ -152,7 +153,8 @@ public:
if (data.size() != sizeof(header_type))
CAF_FAIL("");
binary_deserializer source{nullptr, data};
source(header_);
if (auto err = source(header_))
CAF_FAIL("serializing failed: " << err);
if (header_.payload == 0)
Base::handle_packet(parent, header_, span<const byte>{});
else
......@@ -214,7 +216,7 @@ CAF_TEST(receive) {
auto buf = std::make_shared<std::vector<byte>>();
auto sockets = unbox(make_stream_socket_pair());
nonblocking(sockets.second, true);
CAF_CHECK_EQUAL(read(sockets.second, make_span(read_buf)),
CAF_CHECK_EQUAL(read(sockets.second, read_buf),
sec::unavailable_or_would_block);
CAF_MESSAGE("adding both endpoint managers");
auto mgr1 = make_endpoint_manager(mpx, sys,
......
......@@ -23,13 +23,13 @@
#include "caf/net/test/host_fixture.hpp"
#include "caf/test/dsl.hpp"
#include "caf/binary_serializer.hpp"
#include "caf/byte.hpp"
#include "caf/detail/scope_guard.hpp"
#include "caf/ip_endpoint.hpp"
#include "caf/make_actor.hpp"
#include "caf/net/actor_proxy_impl.hpp"
#include "caf/net/multiplexer.hpp"
#include "caf/serializer_impl.hpp"
#include "caf/span.hpp"
using namespace caf;
......@@ -105,9 +105,9 @@ public:
static expected<std::vector<byte>> serialize(actor_system& sys,
const type_erased_tuple& x) {
std::vector<byte> result;
serializer_impl<std::vector<byte>> sink{sys, result};
binary_serializer sink{sys, result};
if (auto err = message::save(sink, x))
return err;
return err.value();
return result;
}
......@@ -202,9 +202,7 @@ CAF_TEST(write_message) {
auto msg = make_message();
auto elem = make_mailbox_element(strong_actor, make_message_id(12345), stack,
msg);
auto test_span = make_span(reinterpret_cast<byte*>(
const_cast<char*>(hello_test.data())),
hello_test.size());
auto test_span = as_bytes(make_span(hello_test));
std::vector<byte> payload(test_span.begin(), test_span.end());
using message_type = endpoint_manager_queue::message;
auto message = detail::make_unique<message_type>(std::move(elem), nullptr,
......
......@@ -247,7 +247,7 @@ struct fixture : host_fixture {
};
#define CHECK_HANDLE_DATA(testcase) \
dispatcher.handle_data(dummy, span<byte>{}, testcase.ep); \
dispatcher.handle_data(dummy, span<const byte>{}, testcase.ep); \
CAF_CHECK_EQUAL(buf->size(), 1u); \
CAF_CHECK_EQUAL(static_cast<byte>(testcase.worker_id), buf->at(0)); \
buf->clear();
......
......@@ -23,6 +23,7 @@
#include "caf/net/test/host_fixture.hpp"
#include "caf/test/dsl.hpp"
#include "caf/binary_serializer.hpp"
#include "caf/detail/net_syscall.hpp"
#include "caf/detail/socket_sys_includes.hpp"
#include "caf/ip_address.hpp"
......@@ -68,7 +69,7 @@ error read_from_socket(udp_datagram_socket sock, std::vector<byte>& buf) {
uint8_t receive_attempts = 0;
variant<std::pair<size_t, ip_endpoint>, sec> read_ret;
do {
read_ret = read(sock, make_span(buf));
read_ret = read(sock, buf);
if (auto read_res = get_if<std::pair<size_t, ip_endpoint>>(&read_ret)) {
buf.resize(read_res->first);
} else if (get<sec>(read_ret) != sec::unavailable_or_would_block) {
......@@ -105,8 +106,7 @@ CAF_TEST_FIXTURE_SCOPE(udp_datagram_socket_test, fixture)
CAF_TEST(read / write using span<byte>) {
if (auto err = nonblocking(socket_cast<net::socket>(receive_socket), true))
CAF_FAIL("setting socket to nonblocking failed: " << err);
CAF_CHECK_EQUAL(read(receive_socket, make_span(buf)),
sec::unavailable_or_would_block);
CAF_CHECK_EQUAL(read(receive_socket, buf), sec::unavailable_or_would_block);
CAF_MESSAGE("sending data to " << to_string(ep));
CAF_CHECK_EQUAL(write(send_socket, as_bytes(make_span(hello_test)), ep),
hello_test.size());
......@@ -119,21 +119,22 @@ CAF_TEST(read / write using span<std::vector<byte>*>) {
// generate header and payload in separate buffers
header hdr{hello_test.size()};
std::vector<byte> hdr_buf;
serializer_impl<std::vector<byte>> sink(sys, hdr_buf);
binary_serializer sink(sys, hdr_buf);
if (auto err = sink(hdr))
CAF_FAIL("serializing payload failed" << sys.render(err));
auto bytes = as_bytes(make_span(hello_test));
std::vector<byte> payload_buf(bytes.begin(), bytes.end());
auto packet_size = hdr_buf.size() + payload_buf.size();
std::vector<std::vector<byte>*> bufs{&hdr_buf, &payload_buf};
CAF_CHECK_EQUAL(write(send_socket, make_span(bufs), ep), packet_size);
CAF_CHECK_EQUAL(write(send_socket, bufs, ep), packet_size);
// receive both as one single packet.
buf.resize(packet_size);
CAF_CHECK_EQUAL(read_from_socket(receive_socket, buf), none);
CAF_CHECK_EQUAL(buf.size(), packet_size);
binary_deserializer source(nullptr, buf);
header recv_hdr;
source(recv_hdr);
if (auto err = source(recv_hdr))
CAF_FAIL("serializing failed: " << err);
CAF_CHECK_EQUAL(hdr.payload_size, recv_hdr.payload_size);
string_view received{reinterpret_cast<const char*>(buf.data())
+ sizeof(header),
......
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