summaryrefslogtreecommitdiff
path: root/modules/m_redis.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2014-11-24 14:27:23 -0500
committerAdam <Adam@anope.org>2014-11-24 14:27:23 -0500
commit42238034490fb5479d787bd1695750387d508200 (patch)
treec93c62e0e1c936e656ae5b9ee1b62380ce2a194c /modules/m_redis.cpp
parentd492923610d9c9146b2a2b63de38deab2cfd4ca7 (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.cpp35
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
{