3
3
// SPDX-License-Identifier: Apache-2.0
4
4
5
5
/* eslint-disable require-jsdoc */
6
- /* global Promise */
6
+ /* global Promise, Map, QuicTransport, Uint8Array */
7
7
8
8
'use strict' ;
9
9
@@ -24,7 +24,7 @@ export class QuicChannel extends EventDispatcher {
24
24
super ( ) ;
25
25
this . _signaling = signaling ;
26
26
this . _ended = false ;
27
- this . _quicStreams = new Map ( ) ; // Key is publication or subscription ID.
27
+ this . _quicStreams = new Map ( ) ; // Key is publication or subscription ID.
28
28
this . _quicTransport = new QuicTransport ( url ) ;
29
29
}
30
30
@@ -57,9 +57,23 @@ export class QuicChannel extends EventDispatcher {
57
57
async createSendStream ( sessionId ) {
58
58
Logger . info ( 'Create stream.' ) ;
59
59
await this . _quicTransport . ready ;
60
- const quicStream = this . _quicTransport . createSendStream ( ) ;
61
- const publicationId = await this . _initializePublication ( ) ;
62
- // Send publication ID to quicStream.
60
+ // TODO: Creating quicStream and initializing publication concurrently.
61
+ const quicStream = await this . _quicTransport . createSendStream ( ) ;
62
+ const publicationId = await this . _initializePublication ( ) ;
63
+ const writer = quicStream . writable . getWriter ( ) ;
64
+ await writer . ready ;
65
+ writer . write ( this . uuidToUint8Array ( publicationId ) ) ;
66
+ }
67
+
68
+ uuidToUint8Array ( uuidString ) {
69
+ if ( uuidString . length != 32 ) {
70
+ throw new TypeError ( 'Incorrect UUID.' ) ;
71
+ }
72
+ const uuidArray = new Uint8Array ( 16 ) ;
73
+ for ( let i = 0 ; i < 16 ; i ++ ) {
74
+ uuidArray [ i ] = parseInt ( uuidString . substring ( i * 2 , i * 2 + 2 ) , 16 ) ;
75
+ }
76
+ return uuidArray ;
63
77
}
64
78
65
79
/**
0 commit comments