WebSocketMetrics.fromJson constructor
Create WebSocket metrics from JSON Object WebSocket metrics.
Implementation
factory WebSocketMetrics.fromJson(Map<String, Object?> json) {
R extract<T, R>(
String key, R Function(T value) convert, R Function() fallback) {
if (json[key] case T value) {
try {
return convert(value);
} on Object {
return fallback();
}
} else {
return fallback();
}
}
return WebSocketMetrics(
timestamp: extract<int, DateTime>(
'timestamp',
DateTime.fromMillisecondsSinceEpoch,
DateTime.now,
),
readyState: extract<int, WebSocketReadyState>(
'readyState',
WebSocketReadyState.fromCode,
() => WebSocketReadyState.closed,
),
reconnectTimeout: extract<int, Duration>(
'reconnectTimeout',
(v) => Duration(milliseconds: v),
() => Duration.zero,
),
transferredSize: extract<String, BigInt>(
'transferredSize',
BigInt.parse,
() => BigInt.zero,
),
receivedSize: extract<String, BigInt>(
'receivedSize',
BigInt.parse,
() => BigInt.zero,
),
transferredCount: extract<String, BigInt>(
'transferredCount',
BigInt.parse,
() => BigInt.zero,
),
receivedCount: extract<String, BigInt>(
'receivedCount',
BigInt.parse,
() => BigInt.zero,
),
reconnects: (
successful: extract<int, int>(
'reconnectsSuccessful',
(v) => v,
() => 0,
),
total: extract<int, int>(
'reconnectsTotal',
(v) => v,
() => 0,
)
),
lastSuccessfulConnectionTime: extract<int, DateTime?>(
'lastSuccessfulConnectionTime',
DateTime.fromMillisecondsSinceEpoch,
() => null,
),
disconnects: extract<int, int>(
'disconnects',
(v) => v,
() => 0,
),
lastDisconnectTime: extract<int, DateTime?>(
'lastDisconnectTime',
DateTime.fromMillisecondsSinceEpoch,
() => null,
),
lastDisconnect: (
code: extract<int?, int?>(
'lastDisconnectCode',
(v) => v,
() => null,
),
reason: extract<String?, String?>(
'lastDisconnectReason',
(v) => v,
() => null,
),
),
lastUrl: extract<String?, String?>(
'lastUrl',
(v) => v,
() => null,
),
expectedReconnectTime: extract<int, DateTime?>(
'expectedReconnectTime',
DateTime.fromMillisecondsSinceEpoch,
() => null,
),
);
}