-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
transport socket is not working for HTTP/SSE
TransportIoResult ConnectionImpl::doReadFromSocket() {
// Read from transport socket or directly from socket
// Use transport socket for reading if available
// TODO: Fix transport socket implementation for HTTP/SSE
// For now, check if this is a real transport socket (not RawTransportSocket)
if (transport_socket_ &&
dynamic_cast<RawTransportSocket*>(transport_socket_.get()) == nullptr) {
auto result = transport_socket_->doRead(read_buffer_);
return result;
}
void ConnectionImpl::doWrite() {
/**
* CORE WRITE FUNCTION - Writes data from write_buffer_ to socket
*
* Flow:
* 1. Check transport socket for any pending data (e.g., TLS handshake)
* 2. Write from write_buffer_ to socket
* 3. Continue writing until buffer empty or socket buffer full (EAGAIN)
*
* Called from:
* - onWriteReady() when socket becomes writable
* - write() when new data is added and socket is ready
*
* Thread safety: All operations in dispatcher thread
*/
if (state_ != ConnectionState::Open) {
return;
}
// Use transport socket for initial processing if available
// This is essential for stdio transport which manages pipe bridging
// TODO: Fix transport socket implementation for HTTP/SSE
if (transport_socket_ &&
dynamic_cast<RawTransportSocket*>(transport_socket_.get()) == nullptr) {
// Let transport process any pending operations
// For stdio, this ensures the bridge threads are active
Metadata
Metadata
Assignees
Labels
No labels