Skip to main content

simple_someip/server/
service_info.rs

1//! Service and event group information
2
3use std::net::SocketAddrV4;
4
5/// Information about a SOME/IP service being provided
6#[derive(Debug, Clone)]
7pub struct ServiceInfo {
8    /// Service ID
9    pub service_id: u16,
10    /// Instance ID
11    pub instance_id: u16,
12    /// Major version
13    pub major_version: u8,
14    /// Minor version
15    pub minor_version: u32,
16    /// Event groups this service provides
17    pub event_groups: Vec<EventGroupInfo>,
18}
19
20/// Information about an event group
21#[derive(Debug, Clone)]
22pub struct EventGroupInfo {
23    /// Event group ID
24    pub event_group_id: u16,
25    /// Events in this group (event IDs)
26    pub event_ids: Vec<u16>,
27}
28
29impl EventGroupInfo {
30    /// Create a new event group
31    #[must_use]
32    pub fn new(event_group_id: u16, event_ids: Vec<u16>) -> Self {
33        Self {
34            event_group_id,
35            event_ids,
36        }
37    }
38}
39
40/// A subscriber to an event group
41#[derive(Debug, Clone)]
42pub struct Subscriber {
43    /// Remote address of the subscriber
44    pub address: SocketAddrV4,
45    /// Event group they're subscribed to
46    pub event_group_id: u16,
47    /// Service ID
48    pub service_id: u16,
49    /// Instance ID
50    pub instance_id: u16,
51}
52
53impl Subscriber {
54    /// Create a new subscriber
55    pub fn new(
56        address: SocketAddrV4,
57        service_id: u16,
58        instance_id: u16,
59        event_group_id: u16,
60    ) -> Self {
61        Self {
62            address,
63            event_group_id,
64            service_id,
65            instance_id,
66        }
67    }
68}