Amazon Kinesis Webrtc C SDK
Loading...
Searching...
No Matches
Signaling.h
Go to the documentation of this file.
1/*******************************************
2Signaling internal include file
3*******************************************/
4#ifndef __KINESIS_VIDEO_WEBRTC_SIGNALING_CLIENT__
5#define __KINESIS_VIDEO_WEBRTC_SIGNALING_CLIENT__
6
7#pragma once
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13// Request id header name
14#define SIGNALING_REQUEST_ID_HEADER_NAME KVS_REQUEST_ID_HEADER_NAME ":"
15
16// Signaling client from custom data conversion
17#define SIGNALING_CLIENT_FROM_CUSTOM_DATA(h) ((PSignalingClient) (h))
18#define CUSTOM_DATA_FROM_SIGNALING_CLIENT(p) ((UINT64) (p))
19
20// Grace period for refreshing the ICE configuration
21#define ICE_CONFIGURATION_REFRESH_GRACE_PERIOD (30 * HUNDREDS_OF_NANOS_IN_A_SECOND)
22
23// Termination timeout
24#define SIGNALING_CLIENT_SHUTDOWN_TIMEOUT ((2 + SIGNALING_SERVICE_API_CALL_TIMEOUT_IN_SECONDS) * HUNDREDS_OF_NANOS_IN_A_SECOND)
25
26// Signaling client state literal definitions
27#define SIGNALING_CLIENT_STATE_UNKNOWN_STR "Unknown"
28#define SIGNALING_CLIENT_STATE_NEW_STR "New"
29#define SIGNALING_CLIENT_STATE_GET_CREDENTIALS_STR "Get Security Credentials"
30#define SIGNALING_CLIENT_STATE_DESCRIBE_STR "Describe Channel"
31#define SIGNALING_CLIENT_STATE_CREATE_STR "Create Channel"
32#define SIGNALING_CLIENT_STATE_GET_ENDPOINT_STR "Get Channel Endpoint"
33#define SIGNALING_CLIENT_STATE_GET_ICE_CONFIG_STR "Get ICE Server Configuration"
34#define SIGNALING_CLIENT_STATE_READY_STR "Ready"
35#define SIGNALING_CLIENT_STATE_CONNECTING_STR "Connecting"
36#define SIGNALING_CLIENT_STATE_CONNECTED_STR "Connected"
37#define SIGNALING_CLIENT_STATE_DISCONNECTED_STR "Disconnected"
38#define SIGNALING_CLIENT_STATE_DELETE_STR "Delete"
39#define SIGNALING_CLIENT_STATE_DELETED_STR "Deleted"
40#define SIGNALING_CLIENT_STATE_DESCRIBE_MEDIA_STR "Describe Media Storage"
41#define SIGNALING_CLIENT_STATE_JOIN_SESSION_STR "Join Session"
42#define SIGNALING_CLIENT_STATE_JOIN_SESSION_WAITING_STR "Join Session Waiting"
43#define SIGNALING_CLIENT_STATE_JOIN_SESSION_CONNECTED_STR "Join Session Connected"
44
45// Error refreshing ICE server configuration string
46#define SIGNALING_ICE_CONFIG_REFRESH_ERROR_MSG "Failed refreshing ICE server configuration with status code 0x%08x."
47
48// Error reconnecting to the signaling service
49#define SIGNALING_RECONNECT_ERROR_MSG "Failed to reconnect with status code 0x%08x."
50
51// Max error string length
52#define SIGNALING_MAX_ERROR_MESSAGE_LEN 512
53
54// Async ICE config refresh delay in case if the signaling is not yet in READY state
55#define SIGNALING_ASYNC_ICE_CONFIG_REFRESH_DELAY (50 * HUNDREDS_OF_NANOS_IN_A_MILLISECOND)
56
57// Max libWebSockets protocol count. IMPORTANT: Ensure it's 1 + PROTOCOL_INDEX_WSS
58#define LWS_PROTOCOL_COUNT 2
59
63#define SIGNALING_CLOCKSKEW_HASH_TABLE_BUCKET_LENGTH 2
64#define SIGNALING_CLOCKSKEW_HASH_TABLE_BUCKET_COUNT MIN_HASH_BUCKET_COUNT // 16
65
66// API call latency calculation
67#define SIGNALING_API_LATENCY_CALCULATION(pClient, time, isCpApi) \
68 MUTEX_LOCK((pClient)->diagnosticsLock); \
69 if (isCpApi) { \
70 (pClient)->diagnostics.cpApiLatency = \
71 EMA_ACCUMULATOR_GET_NEXT((pClient)->diagnostics.cpApiLatency, SIGNALING_GET_CURRENT_TIME((pClient)) - (time)); \
72 } else { \
73 (pClient)->diagnostics.dpApiLatency = \
74 EMA_ACCUMULATOR_GET_NEXT((pClient)->diagnostics.dpApiLatency, SIGNALING_GET_CURRENT_TIME((pClient)) - (time)); \
75 } \
76 MUTEX_UNLOCK((pClient)->diagnosticsLock);
77
78#define SIGNALING_UPDATE_ERROR_COUNT(pClient, status) \
79 if ((pClient) != NULL && STATUS_FAILED(status)) { \
80 ATOMIC_INCREMENT(&(pClient)->diagnostics.numberOfErrors); \
81 }
82
83#define IS_CURRENT_TIME_CALLBACK_SET(pClient) ((pClient) != NULL && ((pClient)->signalingClientCallbacks.getCurrentTimeFn != NULL))
84
85#define SIGNALING_GET_CURRENT_TIME(pClient) \
86 (IS_CURRENT_TIME_CALLBACK_SET((pClient)) \
87 ? ((pClient)->signalingClientCallbacks.getCurrentTimeFn((pClient)->signalingClientCallbacks.customData)) \
88 : GETTIME())
89
90#define DEFAULT_CREATE_SIGNALING_CLIENT_RETRY_ATTEMPTS 7
91
92#define SIGNALING_STATE_MACHINE_NAME (PCHAR) "SIGNALING"
93
94static const ExponentialBackoffRetryStrategyConfig DEFAULT_SIGNALING_STATE_MACHINE_EXPONENTIAL_BACKOFF_RETRY_CONFIGURATION = {
95 /* Exponential wait times with this config will look like following -
96 ************************************
97 * Retry Count * Wait time *
98 * **********************************
99 * 1 * 100ms + jitter *
100 * 2 * 200ms + jitter *
101 * 3 * 400ms + jitter *
102 * 4 * 800ms + jitter *
103 * 5 * 1600ms + jitter *
104 * 6 * 3200ms + jitter *
105 * 7 * 6400ms + jitter *
106 * 8 * 10000ms + jitter *
107 * 9 * 10000ms + jitter *
108 * 10 * 10000ms + jitter *
109 ************************************
110 jitter = random number between [0, wait time)
111 */
112 KVS_INFINITE_EXPONENTIAL_RETRIES, /* max retry count */
113 10000, /* max retry wait time in milliseconds */
114 100, /* factor determining exponential curve in milliseconds */
115 DEFAULT_KVS_MIN_TIME_TO_RESET_RETRY_STATE_MILLISECONDS, /* minimum time in milliseconds to reset retry state */
116 FULL_JITTER, /* use full jitter variant */
117 0 /* jitter value unused for full jitter variant */
118};
119
120// Forward declaration
122
123// Testability hooks functions
124typedef STATUS (*SignalingApiCallHookFunc)(UINT64);
125
129typedef struct {
130 // Public client info structure
132
133 // V1 features
134 CHAR cacheFilePath[MAX_PATH_LEN + 1];
135
136 //
137 // Below members will be used for direct injection for tests hooks
138 //
139
140 // Injected connect timeout
142
143 // Custom data to be passed to the hooks
145
146 // API pre and post ingestion points
163
164 // Runs on the receive worker right before messageReceivedFn would be invoked.
166
167 // Retry strategy used for signaling state machine
171
175typedef struct {
176 volatile ATOMIC_BOOL terminated;
178 MUTEX lock;
179 CVAR await;
181
191#if defined _WIN32 || defined _WIN64 || defined __CYGWIN__
192#define SIGNALING_CURRENT_THREAD_ID() ((SIZE_T) GetCurrentThreadId())
193#else
194#define SIGNALING_CURRENT_THREAD_ID() ((SIZE_T) GETTID())
195#endif
196
206
246
250typedef struct {
251 // Current version of the structure
252 UINT32 version;
253
254 // Current service call result
255 volatile SIZE_T result;
256
257 // Sent message result
258 volatile SIZE_T messageResult;
259
260 // Client is ready to connect to signaling channel
261 volatile ATOMIC_BOOL clientReady;
262
263 // Shutting down the entire client
264 volatile ATOMIC_BOOL shutdown;
265
266 // Wss is connected
267 volatile ATOMIC_BOOL connected;
268
269 // The channel is being deleted
270 volatile ATOMIC_BOOL deleting;
271
272 // The channel is deleted
273 volatile ATOMIC_BOOL deleted;
274
275 // Having state machine logic rely on call result of SERVICE_CALL_RESULT_SIGNALING_RECONNECT_ICE
276 // to transition to ICE config state is not enough in Async update mode when
277 // connect is in progress as the result of connect will override the result
278 // of SERVICE_CALL_RESULT_SIGNALING_RECONNECT_ICE indicating state transition
279 // if it comes first forcing the state machine to loop back to connected state.
280 volatile ATOMIC_BOOL refreshIceConfig;
281
282 // Indicates that there is another thread attempting to grab the service lock
283 volatile ATOMIC_BOOL serviceLockContention;
284
285 volatile ATOMIC_BOOL offerReceived;
286
287 // Stored Client info
289
290 // Stored callbacks
292
293 // AWS credentials provider
294 PAwsCredentialProvider pCredentialProvider;
295
296 // Channel info
298
299 // Returned signaling channel description
301
302 // Returned media storage session
304
305 // Signaling endpoint
307
308 // Signaling endpoint
310
311 // Media storage endpoint
313
314 // Number of Ice Server objects
316
317 // Returned Ice configurations
319
320 // The state machine
321 PStateMachine pStateMachine;
322
323 // Current AWS credentials
324 PAwsCredentials pAwsCredentials;
325
326 // Service call context
327 ServiceCallContext serviceCallContext;
328
329 // Interlocking the state transitions
331
332 // Sync mutex for connected condition variable
334
335 // Conditional variable for Connected state
337
338 // Sync mutex for sending condition variable
339 MUTEX sendLock;
340
341 // Conditional variable for sending interlock
343
344 // Sync mutex for receiving response to the message condition variable
346
347 // Conditional variable for receiving response to the sent message
349
350 // Indicates when the ICE configuration has been retrieved
352
353 // Indicates when the ICE configuration is considered expired
355
356 // Ongoing listener call info
358
359 // Listener thread for the socket
361
362 // Restarted thread handler
364
365 // In-flight receive worker count. Incremented in receiveLwsMessage() BEFORE the
366 // THREAD_CREATE/threadpoolContextPush (and rolled back if that fails), under
367 // receiveWorkerLock together with the shutdown check; decremented in
368 // receiveLwsMessageWrapper() on exit. Incrementing after the hand-off would let
369 // a fast worker decrement first and wrap the counter. terminateOngoingOperations()
370 // waits for this to reach zero on the shutdown path before the client can be freed.
371 volatile SIZE_T receiveWorkerCount;
374
375 // Receive workers currently executing receiveLwsMessageWrapper(). Protected by receiveWorkerLock.
377
378 // Number of reconnectHandler() threads currently alive. Protected by
379 // reconnecterTracker.lock. Two can overlap: the WSS callback spawns a new one
380 // when the connection drops again while the previous one is still finishing
381 // (e.g. in JOIN_SESSION after CONNECTED, or in its CleanUp).
382 // reconnecterTracker.terminated is published only when this drops to zero.
384
385 // Every reconnectHandler() thread currently running, one node per thread, linked by the thread itself on
386 // entry and unlinked on exit. Protected by reconnecterTracker.lock. A single "latest thread id" slot is not
387 // enough: while two reconnect threads overlap, the older one still runs stateChangeFn / errorReportFn, and a
388 // freeSignalingClient() call from there has to be recognised as well or it waits for its own thread.
389 // Counted threads that have not reached their prologue yet are absent from the list, which is fine: a thread
390 // that has not started cannot be inside a callback.
392
393 // Thread id of the running lwsListenerHandler(). Only meaningful while
394 // listenerTracker.terminated is FALSE; reset to 0 before the listener publishes
395 // its termination. Written only by the listener thread itself.
396 volatile SIZE_T listenerThreadTid;
397
398 // Generic websocket context - can be used by any implementation
400
401 // Generic websocket protocols array - can be used by any implementation
402 // + 1 for the null terminator protocol
404
405 // Generic websocket connection objects - can be used by any implementation
407
408 // Set by wakeLwsServiceEventLoop(), consumed by the service thread on LWS_CALLBACK_EVENT_WAIT_CANCELLED
410
411 // List of the ongoing messages
412 PStackQueue pMessageQueue;
413
414 // Message queue lock
416
417 // LWS needs to be locked
419
420 // Serialized access to LWS service call
422
423 // Re-entrant lock for diagnostics/stats
425
426 // Internal diagnostics object
428
429 // Clock skew correction applied to every signed request, HTTPS and WSS alike: the most recent server
430 // Date minus device time, or 0 when within MIN_CLOCK_SKEW_TIME_TO_CORRECT. Protected by diagnosticsLock.
432
433 // Correction the last signed request used. Signed requests are serialized by the state machine's
434 // stateLock, so this always belongs to the request whose response is being processed.
435 // Protected by diagnosticsLock.
437
438 // Set when the last request was rejected for its timestamp and re-signing it with the newly measured
439 // correction can succeed, so the state machine retries the same state without backoff.
440 volatile ATOMIC_BOOL clockSkewRetryPending;
441
442 // Immediate clock skew retries the current API call has used, at most MAX_CLOCK_SKEW_RETRIES_PER_CALL.
443 // Reset on every state transition except those retries.
444 volatile SIZE_T clockSkewRetryCount;
445
446 // Tracking when was the Last time the APIs were called
457
460
461 // mutex for join session wait condition variable
463
464 // Conditional variable for join storage session wait state
467
468// Public handle to and from object converters
469#define TO_SIGNALING_CLIENT_HANDLE(p) ((SIGNALING_CLIENT_HANDLE) (p))
470#define FROM_SIGNALING_CLIENT_HANDLE(h) (IS_VALID_SIGNALING_CLIENT_HANDLE(h) ? (PSignalingClient) (h) : NULL)
471
474
482
486
490
492
493UINT64 signalingGetCurrentTime(UINT64);
494
498
499// waitForAllThreads: TRUE only from freeSignaling(). Blocks until every SDK-owned thread (reconnect, listener,
500// receive workers) has exited because the client is about to be freed. All other callers pass FALSE and get the
501// bounded best-effort quiesce, even when another thread has already set shutdown: that caller may itself be one of
502// the threads freeSignaling() is waiting for, and the unbounded wait would then wait on itself. The callers return at
503// their entry once shutdown is set (fetch and delete refuse, disconnect reports success), but one can pass its check
504// just before freeSignaling() sets the flag and still arrive here; the parameter, not the flag, decides the wait so
505// that window cannot turn into a self-wait.
506STATUS terminateOngoingOperations(PSignalingClient, BOOL waitForAllThreads);
507
508STATUS describeChannel(PSignalingClient, UINT64);
509STATUS createChannel(PSignalingClient, UINT64);
511STATUS getIceConfig(PSignalingClient, UINT64);
515STATUS deleteChannel(PSignalingClient, UINT64);
517
521
522#ifdef __cplusplus
523}
524#endif
525#endif /* __KINESIS_VIDEO_WEBRTC_SIGNALING_CLIENT__ */
STATUS freeClientRetryStrategy(PSignalingClient)
Definition Signaling.c:494
STATUS signalingRemoveOngoingMessage(PSignalingClient, PCHAR)
Definition Signaling.c:1062
STATUS signalingSendMessageSync(PSignalingClient, PSignalingMessage)
Definition Signaling.c:633
STATUS uninitializeThreadTracker(PThreadTracker)
Definition Signaling.c:1176
struct __LwsCallInfo * PLwsCallInfo
Definition Signaling.h:121
STATUS getIceConfig(PSignalingClient, UINT64)
Definition Signaling.c:1437
STATUS createSignalingSync(PSignalingClientInfoInternal, PChannelInfo, PSignalingClientCallbacks, PAwsCredentialProvider, PSignalingClient *)
Definition Signaling.c:48
STATUS configureRetryStrategyForSignalingStateMachine(PSignalingClient)
Definition Signaling.c:470
STATUS signalingGetIceConfigInfo(PSignalingClient, UINT32, PIceConfigInfo *)
Definition Signaling.c:694
STATUS describeMediaStorageConf(PSignalingClient, UINT64)
Definition Signaling.c:1610
struct SignalingDiagnostics PSignalingDiagnostics
STATUS setupDefaultRetryStrategyForSignalingStateMachine(PSignalingClient)
Definition Signaling.c:450
STATUS terminateOngoingOperations(PSignalingClient, BOOL waitForAllThreads)
Definition Signaling.c:513
STATUS signalingDeleteSync(PSignalingClient)
Definition Signaling.c:830
struct SignalingClientInfoInternal * PSignalingClientInfoInternal
STATUS validateSignalingClientInfo(PSignalingClient, PSignalingClientInfoInternal)
Definition Signaling.c:886
STATUS describeChannel(PSignalingClient, UINT64)
Definition Signaling.c:1219
STATUS refreshIceConfiguration(PSignalingClient)
Definition Signaling.c:966
STATUS createChannel(PSignalingClient, UINT64)
Definition Signaling.c:1285
struct ThreadTracker * PThreadTracker
STATUS validateIceConfiguration(PSignalingClient)
Definition Signaling.c:934
#define LWS_PROTOCOL_COUNT
Definition Signaling.h:58
STATUS signalingGetOngoingMessage(PSignalingClient, PCHAR, PCHAR, PSignalingMessage *)
Definition Signaling.c:1106
STATUS signalingDisconnectSync(PSignalingClient)
Definition Signaling.c:800
STATUS connectSignalingChannel(PSignalingClient, UINT64)
Definition Signaling.c:1520
STATUS awaitForThreadTermination(PThreadTracker, UINT64)
Definition Signaling.c:1193
STATUS joinStorageSession(PSignalingClient, UINT64)
Definition Signaling.c:1565
struct __SignalingThreadNode * PSignalingThreadNode
struct __SignalingThreadNode SignalingThreadNode
STATUS deleteChannel(PSignalingClient, UINT64)
Definition Signaling.c:1478
STATUS(* SignalingApiCallHookFunc)(UINT64)
Definition Signaling.h:124
STATUS signalingFetchSync(PSignalingClient)
Definition Signaling.c:716
STATUS signalingGetMetrics(PSignalingClient, PSignalingClientMetrics)
Definition Signaling.c:1683
STATUS signalingConnectSync(PSignalingClient)
Definition Signaling.c:761
STATUS validateSignalingCallbacks(PSignalingClient, PSignalingClientCallbacks)
Definition Signaling.c:867
STATUS freeSignaling(PSignalingClient *)
Definition Signaling.c:335
STATUS signalingStoreOngoingMessage(PSignalingClient, PSignalingMessage)
Definition Signaling.c:1036
STATUS signalingGetIceConfigInfoCount(PSignalingClient, PUINT32)
Definition Signaling.c:675
STATUS getChannelEndpoint(PSignalingClient, UINT64)
Definition Signaling.c:1327
UINT64 signalingGetCurrentTime(UINT64)
Definition Signaling.c:1677
STATUS initializeThreadTracker(PThreadTracker)
Definition Signaling.c:1156
struct SignalingClient * PSignalingClient
#define MAX_ICE_CONFIG_COUNT
Definition Include.h:807
#define MAX_SIGNALING_ENDPOINT_URI_LEN
Definition Include.h:630
struct SignalingClientCallbacks * PSignalingClientCallbacks
struct ChannelInfo * PChannelInfo
struct SignalingMessage * PSignalingMessage
struct IceConfigInfo * PIceConfigInfo
struct SignalingClientMetrics * PSignalingClientMetrics
ICE configuration information struct.
Definition Include.h:1694
Definition Include.h:1703
Signaling channel description returned from the service.
Definition Include.h:1778
Register Signaling client callbacks.
Definition Include.h:1766
Definition Signaling.h:129
CHAR cacheFilePath[MAX_PATH_LEN+1]
Definition Signaling.h:134
SignalingApiCallHookFunc describePreHookFn
Definition Signaling.h:147
SignalingApiCallHookFunc connectPostHookFn
Definition Signaling.h:156
SignalingApiCallHookFunc getEndpointPostHookFn
Definition Signaling.h:152
SignalingClientInfo signalingClientInfo
Definition Signaling.h:131
SignalingApiCallHookFunc getIceConfigPreHookFn
Definition Signaling.h:153
SignalingApiCallHookFunc getIceConfigPostHookFn
Definition Signaling.h:154
UINT64 hookCustomData
Definition Signaling.h:144
SignalingApiCallHookFunc deletePreHookFn
Definition Signaling.h:161
SignalingApiCallHookFunc joinSessionPreHookFn
Definition Signaling.h:157
KvsRetryStrategy signalingStateMachineRetryStrategy
Definition Signaling.h:168
SignalingApiCallHookFunc describeMediaStorageConfPostHookFn
Definition Signaling.h:160
KvsRetryStrategyCallbacks signalingStateMachineRetryStrategyCallbacks
Definition Signaling.h:169
SignalingApiCallHookFunc describePostHookFn
Definition Signaling.h:148
SignalingApiCallHookFunc createPreHookFn
Definition Signaling.h:149
SignalingApiCallHookFunc connectPreHookFn
Definition Signaling.h:155
SignalingApiCallHookFunc receiveMessagePreCallbackHookFn
Definition Signaling.h:165
SignalingApiCallHookFunc getEndpointPreHookFn
Definition Signaling.h:151
SignalingApiCallHookFunc deletePostHookFn
Definition Signaling.h:162
UINT64 connectTimeout
Definition Signaling.h:141
SignalingApiCallHookFunc describeMediaStorageConfPreHookFn
Definition Signaling.h:159
SignalingApiCallHookFunc createPostHookFn
Definition Signaling.h:150
SignalingApiCallHookFunc joinSessionPostHookFn
Definition Signaling.h:158
Populate Signaling client with client ID and application log level.
Definition Include.h:1603
Definition Signaling.h:250
volatile ATOMIC_BOOL deleted
Definition Signaling.h:273
MUTEX diagnosticsLock
Definition Signaling.h:424
PAwsCredentials pAwsCredentials
Definition Signaling.h:324
SignalingClientInfoInternal clientInfo
Definition Signaling.h:288
MUTEX sendLock
Definition Signaling.h:339
UINT64 describeTime
Definition Signaling.h:447
CVAR connectedCvar
Definition Signaling.h:336
volatile SIZE_T clockSkewRetryCount
Definition Signaling.h:444
ServiceCallContext serviceCallContext
Definition Signaling.h:327
PChannelInfo pChannelInfo
Definition Signaling.h:297
volatile ATOMIC_BOOL connected
Definition Signaling.h:267
volatile ATOMIC_BOOL deleting
Definition Signaling.h:270
CVAR sendCvar
Definition Signaling.h:342
UINT64 offerReceivedTime
Definition Signaling.h:455
CVAR jssWaitCvar
Definition Signaling.h:465
CHAR channelEndpointWebrtc[MAX_SIGNALING_ENDPOINT_URI_LEN+1]
Definition Signaling.h:312
UINT32 reconnectThreadCount
Definition Signaling.h:383
PLwsCallInfo pOngoingCallInfo
Definition Signaling.h:357
MUTEX connectedLock
Definition Signaling.h:333
volatile ATOMIC_BOOL offerReceived
Definition Signaling.h:285
UINT64 offerSentTime
Definition Signaling.h:456
MUTEX offerSendReceiveTimeLock
Definition Signaling.h:458
UINT64 connectTime
Definition Signaling.h:452
UINT32 iceConfigCount
Definition Signaling.h:315
INT64 clockSkewCorrection
Definition Signaling.h:431
UINT32 version
Definition Signaling.h:252
PVOID currentWsi[2]
Definition Signaling.h:406
UINT64 deleteTime
Definition Signaling.h:451
volatile ATOMIC_BOOL refreshIceConfig
Definition Signaling.h:280
CHAR channelEndpointWss[MAX_SIGNALING_ENDPOINT_URI_LEN+1]
Definition Signaling.h:306
SignalingChannelDescription channelDescription
Definition Signaling.h:300
INT64 appliedClockSkewCorrection
Definition Signaling.h:436
volatile SIZE_T receiveWorkerCount
Definition Signaling.h:371
UINT64 getIceConfigTime
Definition Signaling.h:450
CVAR receiveWorkerCvar
Definition Signaling.h:373
PVOID pWebsocketContext
Definition Signaling.h:399
volatile ATOMIC_BOOL shutdown
Definition Signaling.h:264
UINT64 joinSessionTime
Definition Signaling.h:459
MUTEX receiveLock
Definition Signaling.h:345
MediaStorageConfig mediaStorageConfig
Definition Signaling.h:303
PSignalingThreadNode pActiveReceiveWorkers
Definition Signaling.h:376
CHAR channelEndpointHttps[MAX_SIGNALING_ENDPOINT_URI_LEN+1]
Definition Signaling.h:309
volatile ATOMIC_BOOL clockSkewRetryPending
Definition Signaling.h:440
MUTEX lwsServiceLock
Definition Signaling.h:418
UINT64 answerTime
Definition Signaling.h:454
volatile SIZE_T listenerThreadTid
Definition Signaling.h:396
volatile ATOMIC_BOOL serviceLockContention
Definition Signaling.h:283
MUTEX jssWaitLock
Definition Signaling.h:462
UINT64 iceConfigTime
Definition Signaling.h:351
UINT64 iceConfigExpiration
Definition Signaling.h:354
CVAR receiveCvar
Definition Signaling.h:348
MUTEX stateLock
Definition Signaling.h:330
ThreadTracker reconnecterTracker
Definition Signaling.h:363
UINT64 getEndpointTime
Definition Signaling.h:449
SignalingDiagnostics diagnostics
Definition Signaling.h:427
UINT64 describeMediaTime
Definition Signaling.h:453
PStateMachine pStateMachine
Definition Signaling.h:321
ThreadTracker listenerTracker
Definition Signaling.h:360
PAwsCredentialProvider pCredentialProvider
Definition Signaling.h:294
MUTEX receiveWorkerLock
Definition Signaling.h:372
volatile ATOMIC_BOOL clientReady
Definition Signaling.h:261
MUTEX messageQueueLock
Definition Signaling.h:415
IceConfigInfo iceConfigs[MAX_ICE_CONFIG_COUNT]
Definition Signaling.h:318
PSignalingThreadNode pActiveReconnectThreads
Definition Signaling.h:391
UINT64 createTime
Definition Signaling.h:448
volatile ATOMIC_BOOL writableRequested[2]
Definition Signaling.h:409
PStackQueue pMessageQueue
Definition Signaling.h:412
volatile SIZE_T messageResult
Definition Signaling.h:258
MUTEX lwsSerializerLock
Definition Signaling.h:421
SignalingClientCallbacks signalingClientCallbacks
Definition Signaling.h:291
PVOID signalingProtocols[2+1]
Definition Signaling.h:403
volatile SIZE_T result
Definition Signaling.h:255
Definition Signaling.h:207
UINT64 dpApiLatency
Definition Signaling.h:229
UINT32 stateMachineRetryCount
Definition Signaling.h:244
volatile SIZE_T numberOfMessagesReceived
Definition Signaling.h:209
UINT64 getSignalingChannelEndpointEndTime
Definition Signaling.h:217
UINT64 offerToAnswerTime
Definition Signaling.h:240
UINT64 connectTime
Definition Signaling.h:227
UINT64 fetchClientTime
Definition Signaling.h:238
UINT64 connectStartTime
Definition Signaling.h:224
UINT64 joinSessionToOfferRecvTime
Definition Signaling.h:242
UINT64 connectCallTime
Definition Signaling.h:236
PHashTable pEndpointToClockSkewHashMap
Definition Signaling.h:243
volatile SIZE_T numberOfErrors
Definition Signaling.h:211
UINT64 getIceConfigCallTime
Definition Signaling.h:235
UINT64 createCallTime
Definition Signaling.h:233
UINT64 createTime
Definition Signaling.h:226
volatile SIZE_T iceRefreshCount
Definition Signaling.h:210
volatile SIZE_T numberOfReconnects
Definition Signaling.h:213
UINT64 getTokenEndTime
Definition Signaling.h:221
UINT64 describeCallTime
Definition Signaling.h:231
UINT64 getTokenStartTime
Definition Signaling.h:220
UINT64 connectClientTime
Definition Signaling.h:239
volatile SIZE_T numberOfRuntimeErrors
Definition Signaling.h:212
UINT64 createClientTime
Definition Signaling.h:237
UINT64 getSignalingChannelEndpointStartTime
Definition Signaling.h:216
UINT64 createChannelStartTime
Definition Signaling.h:222
UINT64 joinSessionCallTime
Definition Signaling.h:241
UINT64 describeChannelStartTime
Definition Signaling.h:214
UINT64 getEndpointCallTime
Definition Signaling.h:234
UINT64 describeChannelEndTime
Definition Signaling.h:215
UINT64 getTokenCallTime
Definition Signaling.h:230
UINT64 connectEndTime
Definition Signaling.h:225
UINT64 describeMediaCallTime
Definition Signaling.h:232
UINT64 getIceServerConfigStartTime
Definition Signaling.h:218
UINT64 getIceServerConfigEndTime
Definition Signaling.h:219
UINT64 createChannelEndTime
Definition Signaling.h:223
UINT64 cpApiLatency
Definition Signaling.h:228
volatile SIZE_T numberOfMessagesSent
Definition Signaling.h:208
Definition Signaling.h:175
TID threadId
Definition Signaling.h:177
MUTEX lock
Definition Signaling.h:178
CVAR await
Definition Signaling.h:179
volatile ATOMIC_BOOL terminated
Definition Signaling.h:176
Definition LwsApiCalls.h:211
Definition Signaling.h:202
struct __SignalingThreadNode * pNext
Definition Signaling.h:204
SIZE_T tid
Definition Signaling.h:203