libzypp: zypp-core/zyppng/io/sockaddr.cpp Source File

libzypp 17.36.6

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
17 sockaddr *UnixSockAddr::nativeSockAddr() const
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
27 bool UnixSockAddr::isAbstract() const
28 {
29 return _data->sun_path[0];
30 }
31
32}
zyppng::UnixSockAddr::isAbstract
bool isAbstract() const
Definition sockaddr.cpp:27
zyppng::UnixSockAddr::size
std::size_t size() const override
Definition sockaddr.cpp:22
zyppng::UnixSockAddr::nativeSockAddr
sockaddr * nativeSockAddr() const override
Definition sockaddr.cpp:17
zyppng::UnixSockAddr::UnixSockAddr
UnixSockAddr(const std::string &path, bool abstract)
Definition sockaddr.cpp:6
zyppng::UnixSockAddr::_data
std::shared_ptr< struct sockaddr_un > _data
Definition sockaddr.h:50
std
Definition Arch.h:364
zyppng
Definition MediaCurl2.h:22
sockaddr.h