1use std::sync::Arc;
2
3use ndn_packet::Name;
4
5pub struct IpcServer<F> {
14 face: Arc<F>,
15 prefix: Name,
16}
17
18impl<F> IpcServer<F> {
19 pub fn new(face: Arc<F>, prefix: Name) -> Self {
20 Self { face, prefix }
21 }
22
23 pub fn face(&self) -> &F {
24 &self.face
25 }
26
27 pub fn prefix(&self) -> &Name {
28 &self.prefix
29 }
30}
31
32#[cfg(test)]
33mod tests {
34 use super::*;
35 use bytes::Bytes;
36 use ndn_faces::local::InProcFace;
37 use ndn_packet::NameComponent;
38 use ndn_transport::{Face, FaceId};
39
40 #[test]
41 fn new_and_accessors() {
42 let (face, _rx) = InProcFace::new(FaceId(2), 8);
43 let prefix = Name::from_components([NameComponent::generic(Bytes::from_static(b"svc"))]);
44 let server = IpcServer::new(Arc::new(face), prefix.clone());
45 assert_eq!(server.prefix(), &prefix);
46 assert_eq!(server.face().id(), FaceId(2));
47 }
48}