Replies: 2 comments
-
How about: void onConnection(const TcpConnectionPtr& conn)
{
if (conn->connected())
{
// ...
onWriteComplete(conn);
}
} |
Beta Was this translation helpful? Give feedback.
0 replies
-
感谢回复。这样可以将工作都交给onWriteComplete来做,不过会在onConnection中的调用写完数据后,还会再次触发一次onWriteComplete。 我试过直接发送空字符串"",似乎有效,不在onConnection中从文件读取数据,也不发送数据,可以触发一次onWriteComplete。 void onConnection(const TcpConnectionPtr& conn)
{
// ...
if (conn->connected()) {
// ...
conn->send(""); // trigger write complete event
}
else { // disconnect
}
} |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
我想实现这样的效果:
传输一个文件,只在服务端onWriteComplete中进行读文件、修改内容、发送文件操作。
但是,如果在onConnection中不发送数据,就不会触发写完成事件,而回调onWriteComplete。如果要在onConnection中发送数据,那么读文件、修改内容、发送文件,类似的代码,可能需要在onConnection和onWriteComplete中都写一遍。
具体问题点:muduo能否触发虚拟事件,比如写完成事件,进而回调onWriteComplete,但过程中并不真正向对端发送任何数据内容?
例如,Libevent可以通过bufferevent_trigger,在connection事件中触发写完成事件,而无需真正发送数据。
bufferevent_trigger(bev, EV_WRITE, 0);
Beta Was this translation helpful? Give feedback.
All reactions