bool RedisProxy::run(const HostAddress& addr) { if (isRunning()) { return false; } if (m_vipEnabled) { TcpSocket sock = TcpSocket::createTcpSocket(); Logger::log(Logger::Message, "connect to vip address(%s:%d)...", m_vipAddress, addr.port()); if (!sock.connect(HostAddress(m_vipAddress, addr.port()))) { Logger::log(Logger::Message, "set VIP [%s,%s]...", m_vipName, m_vipAddress); int ret = NonPortable::setVipAddress(m_vipName, m_vipAddress, 0); Logger::log(Logger::Message, "set_vip_address return %d", ret); } else { m_vipSocket = sock; m_vipEvent.set(eventLoop(), sock.socket(), EV_READ, vipHandler, this); m_vipEvent.active(); } } m_monitor->proxyStarted(this); Logger::log(Logger::Message, "Start the %s on port %d", APP_NAME, addr.port()); RedisCommand cmds[] = { {"HASHMAPPING", 11, -1, onHashMapping, NULL}, {"ADDKEYMAPPING", 13, -1, onAddKeyMapping, NULL}, {"DELKEYMAPPING", 13, -1, onDelKeyMapping, NULL}, {"SHOWMAPPING", 11, -1, onShowMapping, NULL}, {"POOLINFO", 8, -1, onPoolInfo, NULL}, {"SHUTDOWN", 8, -1, onShutDown, this} }; RedisCommandTable::instance()->registerCommand(cmds, sizeof(cmds)/sizeof(RedisCommand)); return TcpServer::run(addr); }
bool HostAddress::operator==(const HostAddress& other) const { return (other.ip() == ip() && other.port() == port()); }