diff options
author | Adam <Adam@anope.org> | 2014-11-24 14:27:23 -0500 |
---|---|---|
committer | Adam <Adam@anope.org> | 2014-11-24 14:27:23 -0500 |
commit | 42238034490fb5479d787bd1695750387d508200 (patch) | |
tree | c93c62e0e1c936e656ae5b9ee1b62380ce2a194c /modules/m_redis.cpp | |
parent | d492923610d9c9146b2a2b63de38deab2cfd4ca7 (diff) |
Rewrite serializable to have field level granularity
Represent serializable objects in a digraph, and as a result made most
object relationships implicitly defined, and use the graph to trace
references between objects to determine relationships. Edges may
also be marked as having a dependency of the object they point to,
which allows for automatic cleanup and deletion of most objects when
no longer needed.
Additionally, this allows not having to require in-memory copies of
everything when using external databases. db_sql has been rewritten
for this and now always requires a database to function. db_sql with
MySQL now requires InnoDB to make use of transactions and foreign
key constraints.
Diffstat (limited to 'modules/m_redis.cpp')
-rw-r--r-- | modules/m_redis.cpp | 35 |
1 files changed, 6 insertions, 29 deletions
diff --git a/modules/m_redis.cpp b/modules/m_redis.cpp index 1869cf0dc..195873952 100644 --- a/modules/m_redis.cpp +++ b/modules/m_redis.cpp @@ -167,13 +167,6 @@ class MyRedisService : public Provider this->Send(s, i, args); } - void SendCommand(RedisSocket *s, Interface *i, const Anope::string &str) - { - std::vector<Anope::string> args; - spacesepstream(str).GetTokens(args); - this->SendCommand(s, i, args); - } - void Send(Interface *i, const std::vector<std::pair<const char *, size_t> > &args) { if (!sock) @@ -200,7 +193,6 @@ class MyRedisService : public Provider this->SendCommand(i, args); } - public: bool BlockAndProcess() override { this->sock->ProcessWrite(); @@ -210,7 +202,7 @@ class MyRedisService : public Provider return !this->sock->interfaces.empty(); } - void Subscribe(Interface *i, const Anope::string &pattern) override + void Subscribe(Interface *i, const Anope::string &ch) override { if (sub == NULL) { @@ -218,12 +210,10 @@ class MyRedisService : public Provider sub->Connect(host, port); } - std::vector<Anope::string> args; - args.push_back("PSUBSCRIBE"); - args.push_back(pattern); + std::vector<Anope::string> args = { "SUBSCRIBE", ch }; this->SendCommand(sub, NULL, args); - sub->subinterfaces[pattern] = i; + sub->subinterfaces[ch] = i; } void Unsubscribe(const Anope::string &pattern) override @@ -279,11 +269,6 @@ void RedisSocket::OnConnect() this->provider->SendCommand(NULL, "CLIENT SETNAME Anope"); this->provider->SendCommand(NULL, "SELECT " + stringify(provider->db)); - - if (this != this->provider->sub) - { - this->provider->SendCommand(this, NULL, "CONFIG SET notify-keyspace-events KA"); - } } void RedisSocket::OnError(const Anope::string &error) @@ -469,17 +454,9 @@ bool RedisSocket::Read(const char *buffer, size_t l) if (this == provider->sub) { - if (r.multi_bulk.size() == 4) - { - /* pmessage - * pattern subscribed to - * __keyevent@0__:set - * key - */ - std::map<Anope::string, Interface *>::iterator it = this->subinterfaces.find(r.multi_bulk[1]->bulk); - if (it != this->subinterfaces.end()) - it->second->OnResult(r); - } + std::map<Anope::string, Interface *>::iterator it = this->subinterfaces.find(r.multi_bulk[1]->bulk); + if (it != this->subinterfaces.end()) + it->second->OnResult(r); } else { |