@@ -2,16 +2,15 @@ import { Http3WebTransport } from './transport.js'
22import { ReadableStream } from 'node:stream/web'
33import { Http3WTSession } from './session.js'
44import { isIPv4 } from 'net'
5+ // @ts -ignore
56import { defer } from './utils.js'
67
78/**
89 * @typedef {import('./types').WebTransportSession } WebTransportSession
910 * @typedef {import('./types').NativeHttp3WTSession } NativeHttp3WTSession
1011 * @typedef {import('./types').Http3ServerEventHandler } Http3ServerEventHandler
1112 * @typedef {import('./types').Http3WTServerSessionVisitorEvent } Http3WTServerSessionVisitorEvent
12- * @typedef {import('./types').Http3ServerListeningEvent } Http3ServerListeningEvent
13- * @typedef {import('./types').Http3ServerCloseEvent } Http3ServerCloseEvent
14- * @typedef {import('./types').Http3ServerErrorEvent } Http3ServerErrorEvent
13+ * @typedef {import('./types').ServerStatusEvent } ServerStatusEvent
1514 */
1615
1716/**
@@ -31,6 +30,9 @@ export class Http3Server extends Http3WebTransport {
3130 /** @type {Record<string, ReadableStreamController<any>> } */
3231 this . sessionController = { }
3332
33+ this . port = null
34+ this . host = null
35+
3436 this . _ready = defer ( )
3537 this . ready = this . _ready . promise
3638
@@ -54,16 +56,16 @@ export class Http3Server extends Http3WebTransport {
5456 /**
5557 * @returns {{ port: number, host: string, family: 'IPv4' | 'IPv6' } | null }
5658 */
57- address ( ) {
58- if ( this . transportInt . port == null ) {
59- console . info ( 'returning numll ' )
59+ address ( ) {
60+ if ( this . port == null || this . host == null ) {
61+ console . info ( 'returning null ' )
6062 return null
6163 }
6264
6365 return {
64- port : this . transportInt . port ,
65- host : this . transportInt . host ,
66- family : isIPv4 ( this . transportInt . host ) ? 'IPv4' : 'IPv6'
66+ port : this . port ,
67+ host : this . host ,
68+ family : isIPv4 ( this . host ) ? 'IPv4' : 'IPv6'
6769 }
6870 }
6971
@@ -100,28 +102,48 @@ export class Http3Server extends Http3WebTransport {
100102 }
101103
102104 /**
103- * @param {Http3ServerErrorEvent } evt
104105 */
105- onHttp3ServerError ( evt ) {
106+ onServerError ( ) {
106107 this . _ready . reject ( )
107108 }
108109
109110 /**
110- * @param {Http3ServerListeningEvent } evt
111111 */
112- onHttp3ServerListening ( evt ) {
112+ onServerListening ( ) {
113113 this . _ready . resolve ( )
114114 }
115115
116116 /**
117- * @param {Http3ServerCloseEvent } evt
118117 */
119- onHttp3ServerClose ( evt ) {
118+ onServerClose ( ) {
120119 this . _closed . resolve ( )
121120 }
122121
123122 /**
124- * @param {Http3WTServerSessionVisitorEvent | Http3ServerErrorEvent | Http3ServerListeningEvent | Http3ServerCloseEvent } args
123+ * @param {ServerStatusEvent } evt
124+ */
125+ onServerStatus ( evt ) {
126+ if ( evt . host ) this . host = evt . host
127+ if ( evt . port ) this . port = evt . port
128+
129+ switch ( evt . status ) {
130+ case 'close' :
131+ this . onServerClose ( )
132+ break
133+ case 'listening' :
134+ this . onServerListening ( )
135+ break
136+ case 'error' :
137+ this . onServerListening ( )
138+ break
139+ default : {
140+ throw new Error ( 'unknown status' )
141+ }
142+ }
143+ }
144+
145+ /**
146+ * @param {Http3WTServerSessionVisitorEvent | ServerStatusEvent } args
125147 */
126148 customCallback ( args ) {
127149 // console.log('incoming callback server', args)
@@ -130,16 +152,9 @@ export class Http3Server extends Http3WebTransport {
130152 case 'Http3WTSessionVisitor' :
131153 this . onHttp3WTSessionVisitor ( args )
132154 break
133- case 'Http3ServerListening' :
134- this . onHttp3ServerListening ( args )
135- break
136- case 'Http3ServerClose' :
137- this . onHttp3ServerClose ( args )
155+ case 'ServerStatus' :
156+ this . onServerStatus ( args )
138157 break
139- case 'Http3ServerError' :
140- this . onHttp3ServerError ( args )
141- break
142-
143158 default : {
144159 throw new Error ( 'unknown purpose' )
145160 }
0 commit comments