-
Notifications
You must be signed in to change notification settings - Fork 60
/
Network.ts
70 lines (57 loc) · 1.63 KB
/
Network.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/**
* @license
* Copyright 2022-2024 Matter.js Authors
* SPDX-License-Identifier: Apache-2.0
*/
import { MatterError, NoProviderError } from "../MatterError.js";
import { MaybePromise } from "../util/Promises.js";
import { UdpChannel, UdpChannelOptions } from "./UdpChannel.js";
export class NetworkError extends MatterError {}
/**
* @see {@link MatterSpecification.v11.Core} § 11.11.4.4
* Duplicated from the GeneralDiagnostics cluster to avoid circular dependencies.
*/
export enum InterfaceType {
/**
* Indicates an interface of an unspecified type.
*/
Unspecified = 0,
/**
* Indicates a Wi-Fi interface.
*/
WiFi = 1,
/**
* Indicates a Ethernet interface.
*/
Ethernet = 2,
/**
* Indicates a Cellular interface.
*/
Cellular = 3,
/**
* Indicates a Thread interface.
*/
Thread = 4,
}
export type NetworkInterface = {
name: string;
type?: InterfaceType;
};
export type NetworkInterfaceDetails = {
mac: string;
ipV4: string[];
ipV6: string[];
};
export type NetworkInterfaceDetailed = NetworkInterface & NetworkInterfaceDetails;
export abstract class Network {
// TODO - remove this singleton
static get: () => Network = () => {
throw new NoProviderError("No provider configured");
};
abstract getNetInterfaces(configuration?: NetworkInterface[]): MaybePromise<NetworkInterface[]>;
abstract getIpMac(netInterface: string): MaybePromise<NetworkInterfaceDetails | undefined>;
abstract createUdpChannel(options: UdpChannelOptions): Promise<UdpChannel>;
async close() {
// Nothing to do
}
}