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
+29-29Lines changed: 29 additions & 29 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
4
4
# Overview
5
5
6
-
OWT QUIC SDK and Client SDKs provides the APIs for enabling QUIC Transport for reliable data transmission over QUIC protocol with OWT Conference Server.
6
+
OWT QUIC SDK and Client SDKs provides the APIs for enabling WebTransport for reliable data transmission over QUIC protocol with OWT Conference Server.
7
7
8
8
# Scope
9
9
@@ -12,7 +12,7 @@ This document describes the programming models and API interfaces for following
12
12
- Deploying a QUIC conference server that is capable of forwarding data over QUIC channel.
13
13
- Implementing client application that is capable of sending data to QUIC server or receiving data from it.
14
14
15
-
Description of the details of QUIC transport is outside the scope of this document.
15
+
Description of the details of WebTransport is outside the scope of this document.
16
16
17
17
# Related Repos
18
18
@@ -27,21 +27,21 @@ Below are the repo locations of current SDK and server implementations:
27
27
28
28
The topology of components is shown in below diagram:
29
29
30
-

30
+

31
31
32
-
There are a few components involved and their relationships with streaming using QuicTransport are described as below:
32
+
There are a few components involved and their relationships with streaming using WebTransport are described as below:
33
33
34
34
## OWT QUIC C++ SDK
35
35
36
-
This is the foundation of QUIC implementation in OWT. It provides the APIs to create QUIC transport clients and server forming a C/S architecture. Basically you can directly build your QUICTransport applications using the QUIC C++ SDK client API if you're not using the OWT native SDK.
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.
37
37
38
38
## OWT Native SDK for Conference
39
39
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 QUIC connection setup as well as stream forwarding.
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.
41
41
42
42
## OWT QUIC Conference Server
43
43
44
-
The OWT QUIC conference server implements the signaling protocol for QUIC connection setup, as well as QUIC stream forwarding.
44
+
The OWT QUIC conference server implements the signaling protocol for WebTransport connection setup, as well as QUIC stream forwarding.
45
45
46
46
## OWT QUIC JavaScript SDK
47
47
@@ -59,37 +59,37 @@ In this section we provide a detailed description of the APIs provided by OWT QU
59
59
60
60
The server API calling flow is shown in below diagram and table.
61
61
62
-

62
+

63
63
64
64
| Step # | API calling flow |
65
65
| --- | --- |
66
-
| 1 | Application calls the factory method of QuicTransportFactory::Create() to get an instance of QuicTransportFactory|
67
-
| 2 | Application calls QuicTransportFactory::CreateQuicTransportServer() on the QuicTransportFactory instance got in step #1, specifying the server port, certificate path either in the form of .pkcs12 or .pfx format. |
68
-
| 3 | Application Creates the Visitor instance of QuicTransportServerInterface|
69
-
| 4 | Application calls SetVisitor on the QuicTransportServerInterface instance got in step #2. |
70
-
| 5 | Application calls Start() method on the QuicTransportServerInterface instance got in step #2|
71
-
| 6 | OnSession() callback will be invoked once the quictransportserver gets a connection request from client, and an QuicTransportSession instance is passed from the callback. |
72
-
| 7 | Application calls CreateBidirectionalStream on the QuicTransportSession got in step 6 and get a QuicTransportStreamInterface instance. |
| 9 | Application reads the QuicTransportStream when OnCanRead is invoked on the QuicTransportStream::Visitor; or write to the QuicTransportStream when OnCanWrite is invoked on the QuicTransportStreamVisitor; |
66
+
| 1 | Application calls the factory method of WebTransportFactory::Create() to get an instance of WebTransportFactory|
67
+
| 2 | Application calls WebTransportFactory::CreateWebTransportServer() on the WebTransportFactory instance got in step #1, specifying the server port, certificate path either in the form of .pkcs12 or .pfx format. |
68
+
| 3 | Application Creates the Visitor instance of WebTransportServerInterface|
69
+
| 4 | Application calls SetVisitor on the WebTransportServerInterface instance got in step #2. |
70
+
| 5 | Application calls Start() method on the WebTransportServerInterface instance got in step #2|
71
+
| 6 | OnSession() callback will be invoked once the WebTransportserver gets a connection request from client, and an WebTransportSession instance is passed from the callback. |
72
+
| 7 | Application calls CreateBidirectionalStream on the WebTransportSession got in step 6 and get a WebTransportStreamInterface instance. |
| 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
75
76
76
## OWT QUIC C++ SDK Client API Calling Flow
77
77
78
-
The client API calling flow is shown in below diagram and table. It's similar as the server side calling flow except the QuicTransportFactory creates a QuicTransportClientInterface, instead of a QUICTransportServerInterface, and client needs to call Connect() instead of Start() to get a QuicTransportSession.
78
+
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
79
80
-

80
+

81
81
82
82
| Step # | API calling flow |
83
83
| --- | --- |
84
-
| 1 | Application calls the factory method of QuicTransportFactory::Create() to get an instance of QuicTransportFactory|
85
-
| 2 | Application calls QuicTransportFactory::CreateQuicTransportClient() on the QuicTransportFactory instance got in step #1, specifying the server URL to connect to. |
86
-
| 3 | Application Creates the Visitor instance of QuicTransportClientInterface|
87
-
| 4 | Application calls SetVisitor on the QuicTransportClientInterface instance got in step #2. |
88
-
| 5 | Application calls Connect() method on the QuicTransportClientInterface instance got in step #2, passing the URL of the server. |
89
-
| 6 | OnSession() callback will be invoked once the quictransportclient successfully connects to server, and an QuicTransportSession instance is passed from the callback. |
90
-
| 7 | Application calls CreateBidirectionalStream on the QuicTransportSession got in step 6 and get a QuicTransportStreamInterface instance. |
| 9 | Application reads the QuicTransportStream when OnCanRead is invoked on the QuicTransportStream::Visitor; or write to the QuicTransportStream when OnCanWrite is invoked on the QuicTransportStreamVisitor; |
84
+
| 1 | Application calls the factory method of WebTransportFactory::Create() to get an instance of WebTransportFactory|
85
+
| 2 | Application calls WebTransportFactory::CreateWebTransportClient() on the WebTransportFactory instance got in step #1, specifying the server URL to connect to. |
86
+
| 3 | Application Creates the Visitor instance of WebTransportClientInterface|
87
+
| 4 | Application calls SetVisitor on the WebTransportClientInterface instance got in step #2. |
88
+
| 5 | Application calls Connect() method on the WebTransportClientInterface instance got in step #2, passing the URL of the server. |
89
+
| 6 | OnSession() callback will be invoked once the WebTransportclient successfully connects to server, and an WebTransportSession instance is passed from the callback. |
90
+
| 7 | Application calls CreateBidirectionalStream on the WebTransportSession got in step 6 and get a WebTransportStreamInterface instance. |
| 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
93
94
94
## Details of Callbacks and Data Structures of QUIC C++ SDK
95
95
@@ -139,7 +139,7 @@ The Windows sample will be provided in OWT repo separately. More details will be
139
139
140
140
# How to Replace the Certificate for QUIC
141
141
142
-
OWT Conference Server is using a self-signed certificate during development phase, which would be only valid for 14 days. You can use a CA-signed certificate to avoid refreshing the certificate periodically. QUIC connection will fail if certificate is not valid or expires.
142
+
OWT Conference Server is using a self-signed certificate during development phase, which would be only valid for 14 days. You can use a CA-signed certificate to avoid refreshing the certificate periodically. WebTransport connection will fail if certificate is not valid or expires.
0 commit comments