void EchoServer::onMessage(const muduo::net::TcpConnectionPtr &conn, muduo::net::Buffer *buf, muduo::Timestamp time) { muduo::string msg(buf->retrieveAllAsString()); LOG_INFO << conn->name() << " echo " << msg.size() << " bytes, " << " data received at " << time.toString(); conn->send(msg); }
void SudoKuServer::onMessage(const muduo::net::TcpConnectionPtr& conn, muduo::net::Buffer* buf, muduo::Timestamp time) { LOG_DEBUG << conn->name(); size_t len = buf->readableBytes(); while (len >= kCell + 2) { const char* crlf = buf->findCRLF(); if(crlf) { string request(buf->peek(), crlf); string id; buf->retrieveUntil(crlf + 2); string::iterator colon = find(request.begin(), request.end(), ':'); if (colon != request.end()) { id.assign(request.begin(), colon); request.erase(request.begin(), colon + 1); } if (request.size() == boost::implicit_cast<size_t>(kCell)) { string result = solveSudoku(request); if (id.empty()) { conn->send(result + "\r\n"); } else { conn->send(id + ":" + result + "\r\n"); } } else { conn->send("Bad Request!\r\n"); } } else { break; } } }