libzypp 17.37.17
sockaddr.cpp
Go to the documentation of this file.
1#include "sockaddr.h"
2#include <sys/un.h>
3
4namespace zyppng {
5
6 UnixSockAddr::UnixSockAddr(const std::string &path , bool abstract ) : _data( std::make_shared<struct sockaddr_un>() )
7 {
8 memset( _data.get(), 0, size() );
9
10 _data->sun_family = AF_UNIX;
11 if ( path.size() ) {
12 const auto align = abstract ? 1 : 0;
13 path.copy( _data->sun_path + align, sizeof( _data->sun_path ) - align - 1 );
14 }
15 }
16
18 {
19 return reinterpret_cast<sockaddr *>(_data.get());
20 }
21
22 std::size_t UnixSockAddr::size() const
23 {
24 return sizeof(struct sockaddr_un);
25 }
26
28 {
29 return _data->sun_path[0];
30 }
31
32}
bool isAbstract() const
Definition sockaddr.cpp:27
std::size_t size() const override
Definition sockaddr.cpp:22
sockaddr * nativeSockAddr() const override
Definition sockaddr.cpp:17
UnixSockAddr(const std::string &path, bool abstract)
Definition sockaddr.cpp:6
std::shared_ptr< struct sockaddr_un > _data
Definition sockaddr.h:50
Definition Arch.h:364