Skip to content
This repository was archived by the owner on Oct 25, 2024. It is now read-only.

Commit 22ac527

Browse files
authored
Add IsSessionReady(). (#18)
It allows developer to query whether a session is negotiated and ready for first writing.
1 parent 2cfc102 commit 22ac527

File tree

4 files changed

+14
-5
lines changed

4 files changed

+14
-5
lines changed

quic_transport/api/owt/quic/quic_transport_session_interface.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ class OWT_EXPORT QuicTransportSessionInterface {
2222
virtual void OnCanCreateNewOutgoingStream(bool unidirectional) = 0;
2323
};
2424
virtual ~QuicTransportSessionInterface() = default;
25-
virtual const char* ConnectionId() = 0;
25+
virtual const char* ConnectionId() const = 0;
2626
virtual void SetVisitor(Visitor* visitor) = 0;
27+
virtual bool IsSessionReady() const = 0;
2728
virtual QuicTransportStreamInterface* CreateBidirectionalStream() = 0;
2829
// Get connection stats.
2930
virtual const ConnectionStats& GetStats() = 0;

quic_transport/api/owt/quic/quic_transport_stream_interface.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ class OWT_EXPORT QuicTransportStreamInterface {
2020
virtual ~Visitor() = default;
2121
// Called when new data is available.
2222
virtual void OnCanRead() = 0;
23-
// Called when stream is ready to write.
23+
// Called when stream is ready to write new data. It doesn't called before
24+
// first write. Before first write, please check IsSessionReady().
25+
// TODO: Add OnSessionReady to QuicTransportSessionInterface::Visitor.
2426
virtual void OnCanWrite() = 0;
2527
// Called when final incoming data is read.
2628
virtual void OnFinRead() = 0;

quic_transport/impl/quic_transport_owt_server_session.cc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,17 @@ QuicTransportOwtServerSession::~QuicTransportOwtServerSession() {
6060
}
6161
}
6262

63-
const char* QuicTransportOwtServerSession::ConnectionId() {
63+
const char* QuicTransportOwtServerSession::ConnectionId() const {
6464
const std::string& connection_id_str = connection_id().ToString();
6565
char* id = new char[connection_id_str.size() + 1];
6666
strcpy(id, connection_id_str.c_str());
6767
return id;
6868
}
6969

70+
bool QuicTransportOwtServerSession::IsSessionReady() const {
71+
return ::quic::QuicTransportServerSession::IsSessionReady();
72+
}
73+
7074
QuicTransportStreamInterface*
7175
QuicTransportOwtServerSession::CreateBidirectionalStream() {
7276
if (runner_->BelongsToCurrentThread()) {
@@ -93,7 +97,7 @@ QuicTransportStreamInterface*
9397
QuicTransportOwtServerSession::CreateBidirectionalStreamOnCurrentThread() {
9498
std::unique_ptr<::quic::QuicTransportStream> stream =
9599
std::make_unique<::quic::QuicTransportStream>(
96-
GetNextOutgoingUnidirectionalStreamId(), this, this);
100+
GetNextOutgoingBidirectionalStreamId(), this, this);
97101
std::unique_ptr<QuicTransportStreamImpl> stream_impl =
98102
std::make_unique<QuicTransportStreamImpl>(stream.get(), runner_,
99103
event_runner_);
@@ -182,5 +186,6 @@ const ConnectionStats& QuicTransportOwtServerSession::GetStats() {
182186
stats_.estimated_bandwidth = stats.estimated_bandwidth.ToBitsPerSecond();
183187
return stats_;
184188
}
189+
185190
} // namespace quic
186191
} // namespace owt

quic_transport/impl/quic_transport_owt_server_session.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ class QuicTransportOwtServerSession
5353
void SetVisitor(
5454
owt::quic::QuicTransportSessionInterface::Visitor* visitor) override;
5555
// Caller needs to free the connection ID returned.
56-
const char* ConnectionId() override;
56+
const char* ConnectionId() const override;
57+
bool IsSessionReady() const override;
5758
QuicTransportStreamInterface* CreateBidirectionalStream() override;
5859
const ConnectionStats& GetStats() override;
5960

0 commit comments

Comments
 (0)