mirror of
https://github.com/anope/anope.git
synced 2026-07-06 15:53:13 +02:00
Added a new database format and sqlite support. Also moved db-convert to a module.
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
|
||||
static std::map<Anope::string, char> defaultFlags;
|
||||
|
||||
class FlagsChanAccess : public ChanAccess
|
||||
class FlagsChanAccess : public ChanAccess, public Serializable<FlagsChanAccess>
|
||||
{
|
||||
public:
|
||||
std::set<char> flags;
|
||||
@@ -65,6 +65,41 @@ class FlagsChanAccess : public ChanAccess
|
||||
|
||||
return Anope::string(buffer.begin(), buffer.end());
|
||||
}
|
||||
|
||||
Anope::string serialize_name() { return "FlagsChanAccess"; }
|
||||
serialized_data serialize()
|
||||
{
|
||||
serialized_data data;
|
||||
|
||||
data["provider"] << this->provider->name;
|
||||
data["ci"] << this->ci->name;
|
||||
data["mask"] << this->mask;
|
||||
data["creator"] << this->creator;
|
||||
data["last_seen"].setType(Serialize::DT_INT) << this->last_seen;
|
||||
data["created"].setType(Serialize::DT_INT) << this->created;
|
||||
data["flags"] << this->Serialize();
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
static void unserialize(SerializableBase::serialized_data &data)
|
||||
{
|
||||
service_reference<AccessProvider> aprovider(data["provider"].astr());
|
||||
ChannelInfo *ci = cs_findchan(data["ci"].astr());
|
||||
if (!aprovider || !ci)
|
||||
return;
|
||||
|
||||
FlagsChanAccess *access = new FlagsChanAccess(aprovider);
|
||||
access->provider = aprovider;
|
||||
access->ci = ci;
|
||||
data["mask"] >> access->mask;
|
||||
data["creator"] >> access->creator;
|
||||
data["last_seen"] >> access->last_seen;
|
||||
data["created"] >> access->created;
|
||||
access->Unserialize(data["flags"].astr());
|
||||
|
||||
ci->AddAccess(access);
|
||||
}
|
||||
};
|
||||
|
||||
class FlagsAccessProvider : public AccessProvider
|
||||
@@ -385,6 +420,8 @@ class CSFlags : public Module
|
||||
ModuleManager::Attach(i, this, 1);
|
||||
|
||||
this->OnReload();
|
||||
|
||||
Serializable<FlagsChanAccess>::Alloc.Register("FlagsChanAccess");
|
||||
}
|
||||
|
||||
void OnReload()
|
||||
|
||||
Reference in New Issue
Block a user