base_scheduler/
address_info_view.rs1use crate::{AddressInfo, SocketAddress, SocketProtocol, SocketType};
5
6pub trait AddressInfoView {
8 fn address(&self) -> SocketAddress;
10
11 fn socket_type(&self) -> SocketType;
12
13 fn protocol(&self) -> Option<SocketProtocol>;
15
16 fn to_address_info(&self) -> AddressInfo {
18 AddressInfo {
19 address: self.address(),
20 socket_type: self.socket_type(),
21 protocol: self.protocol(),
22 }
23 }
24}
25
26impl<T: AddressInfoView + ?Sized> AddressInfoView for &T {
27 fn address(&self) -> SocketAddress {
28 T::address(self)
29 }
30
31 fn socket_type(&self) -> SocketType {
32 T::socket_type(self)
33 }
34
35 fn protocol(&self) -> Option<SocketProtocol> {
36 T::protocol(self)
37 }
38}