#include "pch.h" #include "FiberClient.h" CFiberClient::CFiberClient(acl::socket_stream* conn) : m_conn(conn) { } CFiberClient::~CFiberClient(void) { } void CFiberClient::run(void) { #if 0 socket_t sock = m_conn->sock_handle(); while (true) { char buf[1024]; int ret = acl_fiber_recv(sock, buf, sizeof(buf) - 1, 0); if (ret <= 0) { int err0 = acl_fiber_last_error(); int err1 = acl::last_error(); printf("recv error: %s, %d, %d\r\n", acl::last_serror(), err0, err1); break; } buf[ret] = 0; //printf("recv=%d, [%s]\r\n", ret, buf); if (acl_fiber_send(sock, buf, ret, 0) == -1) { printf("write error %s\r\n", acl::last_serror()); break; } } acl_fiber_close(sock); m_conn->unbind(); delete m_conn; delete this; #else acl::string buf; int n = 0; m_conn->set_rw_timeout(10); while (true) { if (m_conn->read(buf, false) == false) { printf("%s(%d): read error %s, count=%d\r\n", __FILE__, __LINE__, acl::last_serror(), n); break; } //printf("read: %s\r\n", buf.c_str()); if (m_conn->write(buf) == -1) { printf("%s(%d): server client: write error %s\r\n", __FILE__, __LINE__, acl::last_serror()); break; } n++; } delete m_conn; printf("%s(%d): delete fiber, curr id=%u, %u\r\n", __FILE__, __LINE__, get_id(), acl::fiber::self()); delete this; #endif }