platypush/platypush/schemas/system/_connection/_model.py

97 lines
2.3 KiB
Python

from dataclasses import dataclass, field
from socket import AddressFamily, SocketKind
from typing import Optional
@dataclass
class Connection:
"""
Network/UNIX socket data class.
"""
fd: int = field(
metadata={
'metadata': {
'description': 'File descriptor',
'example': 3,
},
}
)
family: AddressFamily = field(
metadata={
'metadata': {
'description': 'Socket family',
'example': AddressFamily.AF_INET.name,
}
}
)
type: SocketKind = field(
metadata={
'metadata': {
'description': 'Socket type',
'example': SocketKind.SOCK_STREAM.name,
}
}
)
local_address: str = field(
metadata={
'metadata': {
'description': 'Local address, as an IP address for network '
'connections and a socket path for a UNIX socket',
'example': '192.168.1.2',
}
}
)
local_port: Optional[int] = field(
metadata={
'metadata': {
'description': 'Local port, if this is a TCP/UDP connection, '
'otherwise null',
'example': 12345,
}
}
)
remote_address: Optional[str] = field(
metadata={
'metadata': {
'description': 'Remote address, if this is a network '
'connection, otherwise null',
'example': '192.168.1.1',
}
}
)
remote_port: Optional[int] = field(
metadata={
'metadata': {
'description': 'Local port, if this is a TCP/UDP connection, '
'otherwise null',
'example': 443,
}
}
)
status: Optional[str] = field(
metadata={
'metadata': {
'description': 'Connection status, if this is a network '
'connection, otherise null',
'example': 'ESTABLISHED',
}
}
)
pid: Optional[int] = field(
metadata={
'metadata': {
'description': 'ID of the process that owns the connection',
'example': 4321,
}
}
)