Fork Vasum on GitHub Official Vasum Wiki on Tizen.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
lxcpp::ContainerImpl Class Reference

#include <container-impl.hpp>

+ Inheritance diagram for lxcpp::ContainerImpl:

Public Types

enum  State { State::STOPPED, State::STOPPING, State::STARTING, State::RUNNING }
 
typedef std::function< void(void)> Callback
 

Public Member Functions

 ContainerImpl (const std::string &name, const std::string &rootPath, const std::string &workPath)
 
 ~ContainerImpl ()
 
const std::string & getName () const
 Configuration. More...
 
const std::string & getRootPath () const
 
void setHostName (const std::string &hostname)
 
pid_t getGuardPid () const
 
pid_t getInitPid () const
 
const std::vector< std::string > & getInit ()
 
void setInit (const std::vector< std::string > &init)
 
void setLogger (const logger::LogType type, const logger::LogLevel level, const std::string &arg)
 
void setTerminalCount (const unsigned int count)
 
void addUIDMap (unsigned min, unsigned max, unsigned num)
 
void addGIDMap (unsigned min, unsigned max, unsigned num)
 
void start ()
 Execution actions. More...
 
void stop ()
 
void freeze ()
 
void unfreeze ()
 
void reboot ()
 
Container::State getState ()
 States. More...
 
void setStartedCallback (const Container::Callback &callback)
 
void setStoppedCallback (const Container::Callback &callback)
 
int attach (const std::vector< std::string > &argv, const uid_t uid, const gid_t gid, const std::string &ttyPath, const std::vector< gid_t > &supplementaryGids, const int capsToKeep, const std::string &workDirInContainer, const std::vector< std::string > &envToKeep, const std::vector< std::pair< std::string, std::string >> &envToSet)
 Other. More...
 
void console ()
 
void addInterfaceConfig (const std::string &hostif, const std::string &zoneif, InterfaceType type, const std::vector< InetAddr > &addrs, MacVLanMode mode)
 adds interface configration. More...
 
void addInetConfig (const std::string &ifname, const InetAddr &addr)
 
std::vector< std::string > getInterfaces () const
 Network interfaces (runtime) More...
 
NetworkInterfaceInfo getInterfaceInfo (const std::string &ifname) const
 
void createInterface (const std::string &hostif, const std::string &zoneif, InterfaceType type, MacVLanMode mode)
 
void moveInterface (const std::string &ifname)
 
void destroyInterface (const std::string &ifname)
 
void setUpInterface (const std::string &ifname)
 
void setDownInterface (const std::string &ifname)
 
void addInetAddr (const std::string &ifname, const InetAddr &addr)
 
void delInetAddr (const std::string &ifname, const InetAddr &addr)
 
void declareFile (const provision::File::Type type, const std::string &path, const int32_t flags, const int32_t mode)
 Provisioning. More...
 
const FileVectorgetFiles () const
 
void removeFile (const provision::File &item)
 
void declareMount (const std::string &source, const std::string &target, const std::string &type, const int64_t flags, const std::string &data)
 
const MountVectorgetMounts () const
 
void removeMount (const provision::Mount &item)
 
void declareLink (const std::string &source, const std::string &target)
 
const LinkVectorgetLinks () const
 
void removeLink (const provision::Link &item)
 
void addSubsystem (const std::string &name, const std::string &path)
 CGroups. More...
 
void addCGroup (const std::string &subsys, const std::string &grpname, const std::vector< CGroupParam > &comm, const std::vector< CGroupParam > &params)
 
void setEnv (const std::vector< std::pair< std::string, std::string >> &variables)
 Environment variables. More...
 
void setCaps (const int caps)
 Linux capabilities. More...
 
void setSystemProperty (const std::string &name, const std::string &value)
 System Property (sysctl) More...
 
void setRlimit (const std::string &type, const uint64_t hard, const uint64_t soft)
 Rlimit. More...
 
void setNamespaces (const int namespaces)
 Namespaces TODO Needed to implement application container. More...
 
void setUser (const int uid, const int gid, const std::vector< int > additionalGids)
 UID/GIDS TODO Needed to implement application container. More...
 
void addDevice (const std::string &path, const char type, const int64_t major, const int64_t minor, const std::string &permissions, const uint32_t fileMode, const uint32_t uid, const uint32_t gid)
 Device. More...
 
void addHook (const std::string &type, const std::vector< std::string > &hook, const std::vector< std::pair< std::string, std::string >> &env)
 Hooks. More...
 

Private Types

typedef std::unique_lock
< std::mutex > 
Lock
 

Private Member Functions

void onWorkFileEvent (const std::string &name, const uint32_t mask)
 
bool onGuardReady (const cargo::ipc::PeerID, std::shared_ptr< api::Void > &, cargo::ipc::MethodResult::Pointer)
 Guards tells that it's ready to receive commands. More...
 
bool onInitStopped (const cargo::ipc::PeerID, std::shared_ptr< api::ExitStatus > &data, cargo::ipc::MethodResult::Pointer)
 Guards tells that Init exited with some status. More...
 

Private Attributes

std::mutex mStateMutex
 
std::shared_ptr< ContainerConfigmConfig
 
cargo::ipc::epoll::ThreadDispatcher mDispatcher
 
std::shared_ptr
< cargo::ipc::Client
mClient
 
utils::Inotify mInotify
 
Container::Callback mStartedCallback
 
Container::Callback mStoppedCallback
 

Member Typedef Documentation

typedef std::function<void(void)> lxcpp::Container::Callback
inherited
typedef std::unique_lock<std::mutex> lxcpp::ContainerImpl::Lock
private

Member Enumeration Documentation

enum lxcpp::Container::State
stronginherited
Enumerator
STOPPED 
STOPPING 
STARTING 
RUNNING 

Constructor & Destructor Documentation

lxcpp::ContainerImpl::ContainerImpl ( const std::string &  name,
const std::string &  rootPath,
const std::string &  workPath 
)
lxcpp::ContainerImpl::~ContainerImpl ( )

Member Function Documentation

void lxcpp::ContainerImpl::addCGroup ( const std::string &  subsys,
const std::string &  grpname,
const std::vector< CGroupParam > &  comm,
const std::vector< CGroupParam > &  params 
)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::addDevice ( const std::string &  path,
const char  type,
const int64_t  major,
const int64_t  minor,
const std::string &  permissions,
const uint32_t  fileMode,
const uint32_t  uid,
const uint32_t  gid 
)
virtual

Device.

Implements lxcpp::Container.

void lxcpp::ContainerImpl::addGIDMap ( unsigned  min,
unsigned  max,
unsigned  num 
)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::addHook ( const std::string &  type,
const std::vector< std::string > &  hook,
const std::vector< std::pair< std::string, std::string >> &  env 
)
virtual

Hooks.

Implements lxcpp::Container.

void lxcpp::ContainerImpl::addInetAddr ( const std::string &  ifname,
const InetAddr addr 
)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::addInetConfig ( const std::string &  ifname,
const InetAddr addr 
)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::addInterfaceConfig ( const std::string &  hostif,
const std::string &  zoneif,
InterfaceType  type,
const std::vector< InetAddr > &  addrs,
MacVLanMode  mode 
)
virtual

adds interface configration.

throws NetworkException if zoneif name already on list

Implements lxcpp::Container.

void lxcpp::ContainerImpl::addSubsystem ( const std::string &  name,
const std::string &  path 
)
virtual

CGroups.

Implements lxcpp::Container.

void lxcpp::ContainerImpl::addUIDMap ( unsigned  min,
unsigned  max,
unsigned  num 
)
virtual

Implements lxcpp::Container.

int lxcpp::ContainerImpl::attach ( const std::vector< std::string > &  argv,
const uid_t  uid,
const gid_t  gid,
const std::string &  ttyPath,
const std::vector< gid_t > &  supplementaryGids,
const int  capsToKeep,
const std::string &  workDirInContainer,
const std::vector< std::string > &  envToKeep,
const std::vector< std::pair< std::string, std::string >> &  envToSet 
)
virtual

Other.

Implements lxcpp::Container.

void lxcpp::ContainerImpl::console ( )
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::createInterface ( const std::string &  hostif,
const std::string &  zoneif,
InterfaceType  type,
MacVLanMode  mode 
)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::declareFile ( const provision::File::Type  type,
const std::string &  path,
const int32_t  flags,
const int32_t  mode 
)
virtual

Provisioning.

Implements lxcpp::Container.

void lxcpp::ContainerImpl::declareLink ( const std::string &  source,
const std::string &  target 
)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::declareMount ( const std::string &  source,
const std::string &  target,
const std::string &  type,
const int64_t  flags,
const std::string &  data 
)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::delInetAddr ( const std::string &  ifname,
const InetAddr addr 
)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::destroyInterface ( const std::string &  ifname)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::freeze ( )
virtual

Implements lxcpp::Container.

const FileVector & lxcpp::ContainerImpl::getFiles ( ) const
virtual

Implements lxcpp::Container.

pid_t lxcpp::ContainerImpl::getGuardPid ( ) const
virtual

Implements lxcpp::Container.

const std::vector< std::string > & lxcpp::ContainerImpl::getInit ( )
virtual

Implements lxcpp::Container.

pid_t lxcpp::ContainerImpl::getInitPid ( ) const
virtual

Implements lxcpp::Container.

NetworkInterfaceInfo lxcpp::ContainerImpl::getInterfaceInfo ( const std::string &  ifname) const
virtual

Implements lxcpp::Container.

std::vector< std::string > lxcpp::ContainerImpl::getInterfaces ( ) const
virtual

Network interfaces (runtime)

Implements lxcpp::Container.

const LinkVector & lxcpp::ContainerImpl::getLinks ( ) const
virtual

Implements lxcpp::Container.

const MountVector & lxcpp::ContainerImpl::getMounts ( ) const
virtual

Implements lxcpp::Container.

const std::string & lxcpp::ContainerImpl::getName ( ) const
virtual

Configuration.

Implements lxcpp::Container.

const std::string & lxcpp::ContainerImpl::getRootPath ( ) const
virtual

Implements lxcpp::Container.

Container::State lxcpp::ContainerImpl::getState ( )
virtual

States.

Implements lxcpp::Container.

void lxcpp::ContainerImpl::moveInterface ( const std::string &  ifname)
virtual

Implements lxcpp::Container.

bool lxcpp::ContainerImpl::onGuardReady ( const cargo::ipc::PeerID  ,
std::shared_ptr< api::Void > &  ,
cargo::ipc::MethodResult::Pointer  methodResult 
)
private

Guards tells that it's ready to receive commands.

This is a method handler, not signal to avoid races.

bool lxcpp::ContainerImpl::onInitStopped ( const cargo::ipc::PeerID  ,
std::shared_ptr< api::ExitStatus > &  data,
cargo::ipc::MethodResult::Pointer  methodResult 
)
private

Guards tells that Init exited with some status.

Init could have been:

  • stopped with stop()
  • exited by itself
void lxcpp::ContainerImpl::onWorkFileEvent ( const std::string &  name,
const uint32_t  mask 
)
private
void lxcpp::ContainerImpl::reboot ( )
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::removeFile ( const provision::File item)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::removeLink ( const provision::Link item)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::removeMount ( const provision::Mount item)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::setCaps ( const int  caps)
virtual

Linux capabilities.

Implements lxcpp::Container.

void lxcpp::ContainerImpl::setDownInterface ( const std::string &  ifname)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::setEnv ( const std::vector< std::pair< std::string, std::string >> &  variables)
virtual

Environment variables.

Implements lxcpp::Container.

void lxcpp::ContainerImpl::setHostName ( const std::string &  hostname)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::setInit ( const std::vector< std::string > &  init)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::setLogger ( const logger::LogType  type,
const logger::LogLevel  level,
const std::string &  arg 
)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::setNamespaces ( const int  namespaces)
virtual

Namespaces TODO Needed to implement application container.

Implements lxcpp::Container.

void lxcpp::ContainerImpl::setRlimit ( const std::string &  type,
const uint64_t  hard,
const uint64_t  soft 
)
virtual

Rlimit.

Implements lxcpp::Container.

void lxcpp::ContainerImpl::setStartedCallback ( const Container::Callback callback)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::setStoppedCallback ( const Container::Callback callback)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::setSystemProperty ( const std::string &  name,
const std::string &  value 
)
virtual

System Property (sysctl)

Implements lxcpp::Container.

void lxcpp::ContainerImpl::setTerminalCount ( const unsigned int  count)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::setUpInterface ( const std::string &  ifname)
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::setUser ( const int  uid,
const int  gid,
const std::vector< int >  additionalGids 
)
virtual

UID/GIDS TODO Needed to implement application container.

Implements lxcpp::Container.

void lxcpp::ContainerImpl::start ( )
virtual

Execution actions.

Implements lxcpp::Container.

void lxcpp::ContainerImpl::stop ( )
virtual

Implements lxcpp::Container.

void lxcpp::ContainerImpl::unfreeze ( )
virtual

Implements lxcpp::Container.

Member Data Documentation

std::shared_ptr<cargo::ipc::Client> lxcpp::ContainerImpl::mClient
private
std::shared_ptr<ContainerConfig> lxcpp::ContainerImpl::mConfig
private
cargo::ipc::epoll::ThreadDispatcher lxcpp::ContainerImpl::mDispatcher
private
utils::Inotify lxcpp::ContainerImpl::mInotify
private
Container::Callback lxcpp::ContainerImpl::mStartedCallback
private
std::mutex lxcpp::ContainerImpl::mStateMutex
mutableprivate
Container::Callback lxcpp::ContainerImpl::mStoppedCallback
private

The documentation for this class was generated from the following files: