summary refs log blame commit diff
path: root/msg_socket2/src/lib.rs
blob: 00500bb40d8ad88d4a83cff00a8e86ad50461ab2 (plain) (tree)
1
2
3
                                             
                              
 


















                                                                      
          
       
            

           
                                     
 
                                                                    
                     


                                                                   
                       



                                                            
// SPDX-License-Identifier: MIT OR Apache-2.0
// Copyright 2020, Alyssa Ross

//! A library for sending messages over Unix domain sockets, including
//! file descriptors.
//!
//! The serialization and deserialization interface is a wrapper on
//! top of bincode and serde.  `Serializer` and `Deserializer` are
//! very large interfaces, so they have so far only been implemented
//! on-demand.  But, implementing other methods as required should be
//! extremely straightforward to do based on the methods that have
//! already been implemented.
//!
//! In addition to serialization and deserialization, the library
//! provides a `Socket` type.  This is a wrapper around a Unix
//! SOCK_SEQPACKET socket that automatically serializes outgoing
//! messages, and deserializes incoming ones.  This might be changed
//! to `UnixStream`, to remove the dependency on `sys_util`.

// TODO: document macros.

pub mod de;
mod error;
mod fd;
pub mod ser;
mod socket;

pub(crate) use ser::FdSerializerImpl;

pub use de::{DeserializeWithFds, Deserializer, DeserializerWithFds};
pub use error::Error;
use fd::Fd;
pub use msg_socket2_derive::{DeserializeWithFds, SerializeWithFds};
pub use ser::{FdSerializer, SerializeWithFds, Serializer};
pub use socket::Socket;

// Don't use ser and de re-exports, because they import from
// serde::ser and serde::de, so won't pick up derives.
pub use serde::{Deserialize, Serialize};