std::string TPath::BaseName() const { char *dup = strdup(Path.c_str()); PORTO_ASSERT(dup != nullptr); char *p = basename(dup); std::string out(p); free(dup); return out; }
std::vector<std::shared_ptr<TContainer> > TContainerHolder::List(bool all) const { std::vector<std::shared_ptr<TContainer> > ret; for (auto c : Containers) { PORTO_ASSERT(c.first == c.second->GetName()); if (!all && c.second->IsPortoRoot()) continue; ret.push_back(c.second); } return ret; }
TError TNetwork::Prepare() { PORTO_ASSERT(Qdisc == nullptr); PORTO_ASSERT(Tclass == nullptr); PORTO_ASSERT(Filter == nullptr); PORTO_ASSERT(Links.size() == 0); auto lock = ScopedLock(); TError error = OpenLinks(Links); if (error) return error; for (auto link : Links) { TError error = PrepareLink(link); if (error) return error; } Qdisc = std::make_shared<TQdisc>(shared_from_this(), rootHandle, defClass); Filter = std::make_shared<TFilter>(shared_from_this(), Qdisc); Tclass = std::make_shared<TTclass>(shared_from_this(), Qdisc, defClass); return TError::Success(); }
void TContainerHolder::Unlink(TScopedLock &holder_lock, std::shared_ptr<TContainer> c) { for (auto name: c->GetChildren()) { std::shared_ptr<TContainer> child; if (Get(name, child)) continue; Unlink(holder_lock, child); } c->Destroy(holder_lock); TError error = IdMap.Put(c->GetId()); PORTO_ASSERT(!error); Containers.erase(c->GetName()); Statistics->Created--; }
TNlLink::TNlLink(std::shared_ptr<TNl> sock, const std::string &name) { Nl = sock; Link = rtnl_link_alloc(); PORTO_ASSERT(Link); rtnl_link_set_name(Link, name.c_str()); }
gid_t GetPortoGroupId() { PORTO_ASSERT(PortoGroup); return PortoGroup; }
TCgroup TSubsystem::Cgroup(const std::string &name) const { PORTO_ASSERT(name[0] == '/'); return TCgroup(this, name); }
TCgroup TCgroup::Child(const std::string& name) const { PORTO_ASSERT(name[0] != '/'); if (IsRoot()) return TCgroup(Subsystem, "/" + name); return TCgroup(Subsystem, Name + "/" + name); }
void TClient::FinishRequest() { PORTO_ASSERT(CurrentClient == this); CurrentClient = nullptr; }
void TClient::StartRequest() { RequestStartMs = GetCurrentTimeMs(); PORTO_ASSERT(CurrentClient == nullptr); CurrentClient = this; }