sendStream() — fastify Function Reference
Architecture documentation for the sendStream() function in reply.js from the fastify codebase.
Entity Profile
Dependency Diagram
graph TD 3d4cff63_882d_17c7_3219_d30292baf81d["sendStream()"] 4bcd71dc_1ec2_5fe8_b8ff_4a371e392925["reply.js"] 3d4cff63_882d_17c7_3219_d30292baf81d -->|defined in| 4bcd71dc_1ec2_5fe8_b8ff_4a371e392925 8460cb7c_51e5_baba_0f16_9ea8d190d139["onSendEnd()"] 8460cb7c_51e5_baba_0f16_9ea8d190d139 -->|calls| 3d4cff63_882d_17c7_3219_d30292baf81d 13e2d38d_ce6d_5fec_32a3_0640002b60a9["sendStreamTrailer()"] 3d4cff63_882d_17c7_3219_d30292baf81d -->|calls| 13e2d38d_ce6d_5fec_32a3_0640002b60a9 18ed21df_f31c_a1a7_f5d2_fd033a6e96bc["logStreamError()"] 3d4cff63_882d_17c7_3219_d30292baf81d -->|calls| 18ed21df_f31c_a1a7_f5d2_fd033a6e96bc d1d39f22_2d9a_4ca3_4bbe_11322ac6d36b["onErrorHook()"] 3d4cff63_882d_17c7_3219_d30292baf81d -->|calls| d1d39f22_2d9a_4ca3_4bbe_11322ac6d36b style 3d4cff63_882d_17c7_3219_d30292baf81d fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
lib/reply.js lines 756–809
function sendStream (payload, res, reply) {
let sourceOpen = true
let errorLogged = false
// set trailer when stream ended
sendStreamTrailer(payload, res, reply)
eos(payload, { readable: true, writable: false }, function (err) {
sourceOpen = false
if (err != null) {
if (res.headersSent || reply.request.raw.aborted === true) {
if (!errorLogged) {
errorLogged = true
logStreamError(reply.log, err, reply)
}
res.destroy()
} else {
onErrorHook(reply, err)
}
}
// there is nothing to do if there is not an error
})
eos(res, function (err) {
if (sourceOpen) {
if (err != null && res.headersSent && !errorLogged) {
errorLogged = true
logStreamError(reply.log, err, res)
}
if (typeof payload.destroy === 'function') {
payload.destroy()
} else if (typeof payload.close === 'function') {
payload.close(noop)
} else if (typeof payload.abort === 'function') {
payload.abort()
} else {
reply.log.warn('stream payload does not end properly')
}
}
})
// streams will error asynchronously, and we want to handle that error
// appropriately, e.g. a 404 for a missing file. So we cannot use
// writeHead, and we need to resort to setHeader, which will trigger
// a writeHead when there is data to send.
if (!res.headersSent) {
for (const key in reply[kReplyHeaders]) {
res.setHeader(key, reply[kReplyHeaders][key])
}
} else {
reply.log.warn('response will send, but you shouldn\'t use res.writeHead in stream mode')
}
payload.pipe(res)
}
Domain
Subdomains
Defined In
Called By
Source
Frequently Asked Questions
What does sendStream() do?
sendStream() is a function in the fastify codebase, defined in lib/reply.js.
Where is sendStream() defined?
sendStream() is defined in lib/reply.js at line 756.
What does sendStream() call?
sendStream() calls 3 function(s): logStreamError, onErrorHook, sendStreamTrailer.
What calls sendStream()?
sendStream() is called by 1 function(s): onSendEnd.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free