// Spectre 2 // // Douglas Thrift // // $Id$ #ifndef _Share_hpp_ #define _Share_hpp_ #include "Error.hpp" #include "Daemon.hpp" #ifdef MENES_PRAGMA_ONCE #pragma once #endif class Share { private: ext::String host, name, owner, user, group; public: Share::Share(const ext::String& host, const ext::String& name, const ext::String& owner = ext::String(), const ext::String& user = ext::String(), const ext::String& group = ext::String()) : host(host), name(name), owner(owner), user(user), group(group) {} static ext::RedBlackMap passwords; static api::ThreadMutex passwordsLock; const ext::String& getHost() const { return host; } const ext::String& getName() const { return name; } const ext::String& getOwner() const { return owner; } const ext::String& getUser() const { return user; } const ext::String& getGroup() const { return group; } ext::String getPassword() const; ext::String getUri() const { return "smb://" + operator ext::String(); } ext::String getService() const; ext::String getMount() const { return Spectre2::root + "/" + operator ext::String(); } bool mounted() const; bool mountable() const; operator ext::String() const { return host + "/" + name; } bool operator==(const Share& share) const { return operator ext::String() == share.operator ext::String(); } bool operator!=(const Share& share) const { return operator ext::String() != share.operator ext::String(); } bool operator<(const Share& share) const { return operator ext::String() < share.operator ext::String(); } }; inline ios::PrintWriter& operator<<(ios::PrintWriter& out, const Share& share) { return out << share.operator ext::String(); } #endif//_Share_hpp_