Software /
code /
prosody
Comparison
net/server_epoll.lua @ 11741:dcf38ac6a38c
net.server: Add a predrain callaback just before writes
Allows sneaking in things in the write buffer just before it's sent to
the network stack. For example ack requests, compression flushes or
other things that make sense to send after stanzas or other things.
This ensures any additional trailing data sent is included in the same
write, and possibly the same TCP packet. Other methods used such as
timers or nextTick might not have the same effect as it depends on
scheduling.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 16 Aug 2021 12:34:52 +0200 |
parent | 11738:3f1450ec37f4 |
child | 11743:856dada099fa |
comparison
equal
deleted
inserted
replaced
11740:b92f2abe0bda | 11741:dcf38ac6a38c |
---|---|
470 | 470 |
471 -- Called when socket is writable | 471 -- Called when socket is writable |
472 function interface:onwritable() | 472 function interface:onwritable() |
473 self:onconnect(); | 473 self:onconnect(); |
474 if not self.conn then return; end -- could have been closed in onconnect | 474 if not self.conn then return; end -- could have been closed in onconnect |
475 self:on("predrain"); | |
475 local buffer = self.writebuffer; | 476 local buffer = self.writebuffer; |
476 local data = buffer or ""; | 477 local data = buffer or ""; |
477 if type(buffer) == "table" then | 478 if type(buffer) == "table" then |
478 if buffer[3] then | 479 if buffer[3] then |
479 data = t_concat(data); | 480 data = t_concat(data); |