19 if (events & EV_READ) {
21 std::vector<char> buf(1024);
22 std::size_t bytes =
socket().
read(&buf[0], buf.size());
29 if (events & EV_WRITE) {
40 m_write_offset += bytes;
69 client0.
connect(
"localhost", port);
73 CPPUNIT_ASSERT(success);
78 std::string data =
"test123456789";
79 std::streamsize bytes = client1.
write(data.c_str(), data.length());
80 CPPUNIT_ASSERT(bytes == static_cast<std::streamsize>(data.length()));
81 std::vector<char> buf(1024);
82 bytes = client1.
read(&buf[0], buf.size());
83 CPPUNIT_ASSERT(bytes == static_cast<std::streamsize>(data.length()));
84 CPPUNIT_ASSERT(strncmp(data.c_str(), &buf[0], data.length()) == 0);
104 std::string data =
"test123456789";
106 std::streamsize bytes = clnt.
write(data.c_str(), data.length(), port);
107 CPPUNIT_ASSERT(bytes == static_cast<std::streamsize>(data.length()));
108 std::vector<char> buf0(1024);
109 bytes = srv->
read(&buf0[0], buf0.size());
110 CPPUNIT_ASSERT(bytes == static_cast<std::streamsize>(data.length()));
111 CPPUNIT_ASSERT(strncmp(data.c_str(), &buf0[0], data.length()) == 0);
115 std::vector<char> buf1(1024);
116 bytes = srv1.
write(data.c_str(), data.length());
117 CPPUNIT_ASSERT(bytes == static_cast<std::streamsize>(data.length()));
119 bytes = clnt1.
read(&buf1[0], buf1.size());
120 CPPUNIT_ASSERT(bytes == static_cast<std::streamsize>(data.length()));
121 CPPUNIT_ASSERT(strncmp(data.c_str(), &buf1[0], data.length()) == 0);
128 std::string sockfile =
"/tmp/libtasks-test.socket";
134 std::this_thread::sleep_for(std::chrono::seconds(1));
146 CPPUNIT_ASSERT(success);
151 std::string data =
"test123456789";
152 std::streamsize bytes = client1.
write(data.c_str(), data.length());
153 CPPUNIT_ASSERT(bytes == static_cast<std::streamsize>(data.length()));
154 std::vector<char> buf(1024);
155 bytes = client1.
read(&buf[0], buf.size());
156 CPPUNIT_ASSERT(bytes == static_cast<std::streamsize>(data.length()));
157 CPPUNIT_ASSERT(strncmp(data.c_str(), &buf[0], data.length()) == 0);
163 unlink(sockfile.c_str());
static std::shared_ptr< dispatcher > instance()
void bind(int port, std::string ip="")
std::streamsize write(const char *data, std::size_t len, int port=-1, std::string ip="")
bool handle_event(tasks::worker *worker, int revents)
std::streamsize read(char *data, std::size_t len)
virtual void update_watcher(worker *worker)
Udate a watcher in the context of the given worker.
net::socket & socket()
Provide access to the underlying socket object.
const char * what() const noexcept
Return the error message.
std::queue< std::vector< char > > m_write_queue
void set_blocking()
Set the socket to blocking mode.
void connect(std::string path)
void set_events(int events)
Update the events the object monitors.