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

Commit 5841ada

Browse files
authored
Add build instructions for QUIC agent. (#1048)
1 parent 6c129c5 commit 5841ada

File tree

1 file changed

+26
-15
lines changed

1 file changed

+26
-15
lines changed

doc/design/quic-programming-guide.md

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,24 @@
33

44
# Overview
55

6-
OWT QUIC SDK and Client SDKs provides the APIs for enabling WebTransport for reliable data transmission over QUIC protocol with OWT Conference Server.
6+
OWT QUIC SDK and Client SDKs provides the APIs for enabling WebTransport over HTTP/3 for reliable data transmission with OWT Conference Server.
7+
8+
OWT conference server and C++ SDK only support WebTransport over HTTP/3. We don't have a plan to support WebTransport over other protocols.
79

810
# Scope
911

1012
This document describes the programming models and API interfaces for following usage scenarios.
1113

12-
- Deploying a QUIC conference server that is capable of forwarding data over QUIC channel.
14+
- Deploying a conference server that is capable of forwarding data over WebTransport.
1315
- Implementing client application that is capable of sending data to QUIC server or receiving data from it.
1416

1517
Description of the details of WebTransport is outside the scope of this document.
1618

17-
# Related Repos
19+
# Related Repositories
1820

1921
Below are the repo locations of current SDK and server implementations:
2022

21-
- OWT QUIC C++ SDK: [https://github.com/open-webrtc-toolkit/owt-deps-quic](https://github.com/open-webrtc-toolkit/owt-sdk-quic) This is the C++ implementation of Server-side and Client-side SDK, and is the base of enabling QUIC agent on server, and QUIC conference SDK on client.
23+
- OWT QUIC SDK: [https://github.com/open-webrtc-toolkit/owt-sdk-quic](https://github.com/open-webrtc-toolkit/owt-sdk-quic) This is the C++ implementation of Server-side and Client-side SDK, and is the base of enabling QUIC agent on server, and QUIC conference SDK on client.
2224
- OWT Conference server: [https://github.com/open-webrtc-toolkit/owt-server](https://github.com/open-webrtc-toolkit/owt-server/pull/113). This is the server repo that supports forwarding of QUIC streams.
2325
- OWT JavaScript SDK: [https://github.com/open-webrtc-toolkit/owt-client-javascript](https://github.com/open-webrtc-toolkit/owt-client-javascript) This is the repo for enabling QUIC client on browser.
2426
- OWT Native SDK: [https://github.com/open-webrtc-toolkit/owt-client-native](https://github.com/open-webrtc-toolkit/owt-client-native) This is the client SDK repo for enabling QUIC support using OWT conferencing API.
@@ -31,13 +33,13 @@ The topology of components is shown in below diagram:
3133

3234
There are a few components involved and their relationships with streaming using WebTransport are described as below:
3335

34-
## OWT QUIC C++ SDK
36+
## OWT QUIC SDK
3537

36-
This is the foundation of WebTransport implementation in OWT. It provides the APIs to create WebTransport over HTTP/3 clients and server forming a C/S architecture. Basically you can directly build your WebTransport applications using the QUIC C++ SDK client API if you're not using the OWT native SDK.
38+
This is the foundation of WebTransport implementation in OWT. It provides the APIs to create WebTransport over HTTP/3 clients and server forming a C/S architecture. Basically you can directly build your WebTransport applications using the QUIC SDK client API if you're not using the OWT native SDK.
3739

3840
## OWT Native SDK for Conference
3941

40-
The OWT conference SDK built upon OWT QUIC C++ SDK client API. It is used in combination with OWT QUIC conference server when you rely on OWT signaling protocol for WebTransport connection setup as well as stream forwarding.
42+
The OWT conference SDK built upon OWT QUIC SDK client API. It is used in combination with OWT QUIC conference server when you rely on OWT signaling protocol for WebTransport connection setup as well as stream forwarding.
4143

4244
## OWT QUIC Conference Server
4345

@@ -47,11 +49,11 @@ The OWT QUIC conference server implements the signaling protocol for WebTranspor
4749

4850
Used together with OWT QUIC conference server, to build Web-based QUIC applications. Useful when the QUIC streaming application is implemented using Web API.
4951

50-
# How to build OWT QUIC C++ SDK
52+
# How to build OWT QUIC SDK
5153

52-
Please follow [OWT QUIC C++ SDK build instruction](https://github.com/open-webrtc-toolkit/owt-deps-quic/blob/master/quic_transport/docs/build_instructions.md) to build the SDK.
54+
Please follow [OWT QUIC SDK build instruction](https://github.com/open-webrtc-toolkit/owt-sdk-quic/blob/master/quic_transport/docs/build_instructions.md) to build the SDK.
5355

54-
# OWT QUIC C++ SDK API
56+
# OWT QUIC SDK API
5557

5658
In this section we provide a detailed description of the APIs provided by OWT QUIC SDK.
5759

@@ -73,7 +75,7 @@ The server API calling flow is shown in below diagram and table.
7375
| 8 | Application creates WebTransportStream::Visitor instance and invokes WebTransportStreamInterface::SetVisitor(). |
7476
| 9 | Application reads the WebTransportStream when OnCanRead is invoked on the WebTransportStream::Visitor; or write to the WebTransportStream when OnCanWrite is invoked on the WebTransportStreamVisitor; |
7577

76-
## OWT QUIC C++ SDK Client API Calling Flow
78+
## OWT QUIC SDK Client API Calling Flow
7779

7880
The client API calling flow is shown in below diagram and table. It's similar as the server side calling flow except the WebTransportFactory creates a WebTransportClientInterface, instead of a WebTransportServerInterface, and client needs to call Connect() instead of Start() to get a WebTransportSession.
7981

@@ -91,13 +93,13 @@ The client API calling flow is shown in below diagram and table. It's similar as
9193
| 8 | Application creates WebTransportStream::Visitor instance and invokes WebTransportStreamInterface::SetVisitor(). |
9294
| 9 | Application reads the WebTransportStream when OnCanRead is invoked on the WebTransportStream::Visitor; or write to the WebTransportStream when OnCanWrite is invoked on the WebTransportStreamVisitor; |
9395

94-
## Details of Callbacks and Data Structures of QUIC C++ SDK
96+
## Details of Callbacks and Data Structures of QUIC SDK
9597

96-
Please refer to [QUIC C++ SDK APIs](https://github.com/open-webrtc-toolkit/owt-deps-quic/tree/master/quic_transport/api/owt/quic) for the detailed API list and document.
98+
Please refer to [QUIC SDK APIs](https://github.com/open-webrtc-toolkit/owt-sdk-quic/tree/main/web_transport/sdk/api/) for the detailed API list and document.
9799

98-
## Samples of QUIC C++ SDK
100+
## Samples of QUIC SDK
99101

100-
Please refer to [QUIC C++ SDK sample](https://github.com/open-webrtc-toolkit/owt-deps-quic/blob/master/quic_transport/impl/tests/quic_transport_owt_end_to_end_test.cc) on how to use the server and client APIs.
102+
Please refer to [QUIC SDK sample](https://github.com/open-webrtc-toolkit/owt-sdk-quic/blob/main/web_transport/sdk/impl/tests/web_transport_owt_end_to_end_test.cc) on how to use the server and client APIs.
101103

102104
# OWT Native Conference SDK
103105

@@ -121,6 +123,15 @@ Please see the conference sample application for more detailed usage.
121123

122124
Please follow [Conference Server build instructions](https://github.com/open-webrtc-toolkit/owt-server/blob/master/README.md) on how to build and deploy the conference server.
123125

126+
## Build Conference Server with QUIC agent
127+
128+
Because we don't have a good place to store pre-built QUIC SDK for public access, QUIC agent is not enabled by default. Additional flags are required to enable QUIC agent.
129+
130+
1. Download QUIC SDK from the URL specified [here](https://github.com/open-webrtc-toolkit/owt-server/blob/master/source/agent/addons/quic/quic_sdk_url). QUIC SDK is hosted on GitHub as an artifact. You will need to follow [this description](https://docs.github.com/en/rest/reference/actions#download-an-artifact) to make a REST request to GitHub. Or you can download the latest QUIC SDK from [GitHub Actions](https://github.com/open-webrtc-toolkit/owt-sdk-quic/actions) tab. Commits pushed to main branch have artifact for downloading.
131+
1. After running `installDeps.sh`, put headers to build/libdeps/build/include, and put libraries(.so file) to build/libdeps/build/lib.
132+
1. Append `-t quic` to the arguments for build.js.
133+
1. Append `-t quic-agent` to the arguments for pack.js.
134+
124135
## How to use Pre-built Conference Server Binary
125136

126137
Steps to run Conference Server with pre-built binary:

0 commit comments

Comments
 (0)