Skip to content

Commit f73d4cc

Browse files
committed
feat(network):1.10.26, 添加getReceiveBuffer()方法
1 parent 88cffe4 commit f73d4cc

12 files changed

+41
-1
lines changed

modules/network/buffered_fd.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ class BufferedFd : public ByteStream {
7272
virtual bool send(const void *data_ptr, size_t data_size) override;
7373
virtual void bind(ByteStream *receiver) override { wp_receiver_ = receiver; }
7474
virtual void unbind() override { wp_receiver_ = nullptr; }
75+
virtual Buffer* getReceiveBuffer() { return &recv_buff_; }
7576

7677
//! 启动与关闭内部事件驱动机制
7778
bool enable();

modules/network/byte_stream.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ class ByteStream {
5151
//! 解除绑定
5252
virtual void unbind() = 0;
5353

54+
//! 获取接收缓冲
55+
//! WARN: 仅限当场使用,切勿将指针存起来
56+
virtual Buffer* getReceiveBuffer() = 0;
57+
5458
protected:
5559
virtual ~ByteStream() { }
5660
};

modules/network/stdio_stream.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class StdinStream : public ByteStream {
4545
virtual bool send(const void *, size_t) override { return false; }
4646
virtual void bind(ByteStream *receiver) override { buff_fd_.bind(receiver); }
4747
virtual void unbind() override { buff_fd_.unbind(); }
48+
virtual Buffer* getReceiveBuffer() override { return buff_fd_.getReceiveBuffer(); }
4849

4950
bool enable();
5051
bool disable();
@@ -66,6 +67,7 @@ class StdoutStream : public ByteStream {
6667
virtual bool send(const void *data_ptr, size_t data_size) override;
6768
virtual void bind(ByteStream *) override { }
6869
virtual void unbind() override { }
70+
virtual Buffer* getReceiveBuffer() override { return nullptr; }
6971

7072
bool enable();
7173
bool disable();
@@ -87,6 +89,7 @@ class StdioStream : public ByteStream {
8789
virtual bool send(const void *data_ptr, size_t data_size) override;
8890
virtual void bind(ByteStream *receiver) override { in_buff_fd_.bind(receiver); }
8991
virtual void unbind() override { in_buff_fd_.unbind(); }
92+
virtual Buffer* getReceiveBuffer() override { return in_buff_fd_.getReceiveBuffer(); }
9093

9194
bool enable();
9295
bool disable();

modules/network/tcp_client.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,13 @@ void TcpClient::unbind()
203203
d_->wp_receiver = nullptr;
204204
}
205205

206+
Buffer* TcpClient::getReceiveBuffer()
207+
{
208+
if (d_->sp_connection != nullptr)
209+
return d_->sp_connection->getReceiveBuffer();
210+
return nullptr;
211+
}
212+
206213
void TcpClient::onTcpConnected(TcpConnection *new_conn)
207214
{
208215
RECORD_SCOPE();

modules/network/tcp_client.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ class TcpClient : public ByteStream {
7676
virtual bool send(const void *data_ptr, size_t data_size) override;
7777
virtual void bind(ByteStream *receiver) override;
7878
virtual void unbind() override;
79+
virtual Buffer* getReceiveBuffer() override;
7980

8081
protected:
8182
void onTcpConnected(TcpConnection *new_conn);

modules/network/tcp_connection.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,13 @@ bool TcpConnection::send(const void *data_ptr, size_t data_size)
129129
return false;
130130
}
131131

132+
Buffer* TcpConnection::getReceiveBuffer()
133+
{
134+
if (sp_buffered_fd_ != nullptr)
135+
return sp_buffered_fd_->getReceiveBuffer();
136+
return nullptr;
137+
}
138+
132139
void TcpConnection::onSocketClosed()
133140
{
134141
LogInfo("%s", peer_addr_.toString().c_str());

modules/network/tcp_connection.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ class TcpConnection : public ByteStream {
6363
virtual void bind(ByteStream *receiver) override;
6464
virtual void unbind() override;
6565
virtual bool send(const void *data_ptr, size_t data_size) override;
66+
virtual Buffer* getReceiveBuffer() override;
6667

6768
protected:
6869
void onSocketClosed();

modules/network/tcp_server.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,14 @@ void* TcpServer::getContext(const ConnToken &client) const
209209
return nullptr;
210210
}
211211

212+
Buffer* TcpServer::getClientReceiveBuffer(const ConnToken &client)
213+
{
214+
auto conn = d_->conns.at(client);
215+
if (conn != nullptr)
216+
return conn->getReceiveBuffer();
217+
return nullptr;
218+
}
219+
212220
TcpServer::State TcpServer::state() const
213221
{
214222
return d_->state;

modules/network/tcp_server.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ class TcpServer {
9090
void setContext(const ConnToken &client, void *context, ContextDeleter &&deleter = nullptr);
9191
void* getContext(const ConnToken &client) const;
9292

93+
Buffer* getClientReceiveBuffer(const ConnToken &client);
94+
9395
State state() const;
9496

9597
protected:

modules/network/uart.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,11 @@ void Uart::unbind()
295295
buff_fd_.unbind();
296296
}
297297

298+
Buffer* Uart::getReceiveBuffer()
299+
{
300+
return buff_fd_.getReceiveBuffer();
301+
}
302+
298303
bool Uart::enable()
299304
{
300305
if (fd_.isNull()) {

modules/network/uart.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ class Uart : public ByteStream {
6161
virtual bool send(const void *data_ptr, size_t data_size) override;
6262
virtual void bind(ByteStream *receiver) override;
6363
virtual void unbind() override;
64+
virtual Buffer* getReceiveBuffer() override;
6465

6566
public:
6667
bool enable();

version.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@
2121
# TBOX版本号
2222
TBOX_VERSION_MAJOR := 1
2323
TBOX_VERSION_MINOR := 10
24-
TBOX_VERSION_REVISION := 25
24+
TBOX_VERSION_REVISION := 26

0 commit comments

Comments
 (0)