You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Oct 23, 2024. It is now read-only.
Copy file name to clipboardExpand all lines: doc/design/quic-programming-guide.md
+26-15Lines changed: 26 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,22 +3,24 @@
3
3
4
4
# Overview
5
5
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.
7
9
8
10
# Scope
9
11
10
12
This document describes the programming models and API interfaces for following usage scenarios.
11
13
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.
13
15
- Implementing client application that is capable of sending data to QUIC server or receiving data from it.
14
16
15
17
Description of the details of WebTransport is outside the scope of this document.
16
18
17
-
# Related Repos
19
+
# Related Repositories
18
20
19
21
Below are the repo locations of current SDK and server implementations:
20
22
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.
22
24
- 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.
23
25
- 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.
24
26
- 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:
31
33
32
34
There are a few components involved and their relationships with streaming using WebTransport are described as below:
33
35
34
-
## OWT QUIC C++ SDK
36
+
## OWT QUIC SDK
35
37
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.
37
39
38
40
## OWT Native SDK for Conference
39
41
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.
41
43
42
44
## OWT QUIC Conference Server
43
45
@@ -47,11 +49,11 @@ The OWT QUIC conference server implements the signaling protocol for WebTranspor
47
49
48
50
Used together with OWT QUIC conference server, to build Web-based QUIC applications. Useful when the QUIC streaming application is implemented using Web API.
49
51
50
-
# How to build OWT QUIC C++ SDK
52
+
# How to build OWT QUIC SDK
51
53
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.
53
55
54
-
# OWT QUIC C++ SDK API
56
+
# OWT QUIC SDK API
55
57
56
58
In this section we provide a detailed description of the APIs provided by OWT QUIC SDK.
57
59
@@ -73,7 +75,7 @@ The server API calling flow is shown in below diagram and table.
| 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; |
75
77
76
-
## OWT QUIC C++ SDK Client API Calling Flow
78
+
## OWT QUIC SDK Client API Calling Flow
77
79
78
80
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.
79
81
@@ -91,13 +93,13 @@ The client API calling flow is shown in below diagram and table. It's similar as
| 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; |
93
95
94
-
## Details of Callbacks and Data Structures of QUIC C++ SDK
96
+
## Details of Callbacks and Data Structures of QUIC SDK
95
97
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.
97
99
98
-
## Samples of QUIC C++ SDK
100
+
## Samples of QUIC SDK
99
101
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.
101
103
102
104
# OWT Native Conference SDK
103
105
@@ -121,6 +123,15 @@ Please see the conference sample application for more detailed usage.
121
123
122
124
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.
123
125
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
+
124
135
## How to use Pre-built Conference Server Binary
125
136
126
137
Steps to run Conference Server with pre-built binary:
0 commit comments