Skip to content

Commit

Permalink
Multi parts (#485)
Browse files Browse the repository at this point in the history
* Remove Foward Declaration in pika_server.cc

* Add ClientThread userdefined handle
  • Loading branch information
whoiami authored and Axlgrep committed May 15, 2019
1 parent 4f1a936 commit 7666574
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 5 deletions.
31 changes: 30 additions & 1 deletion include/pika_repl_client.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,40 @@
#include "pink/include/pink_conn.h"
#include "pink/include/client_thread.h"
#include "pink/include/thread_pool.h"
#include "slash/include/slash_status.h"

class ReplClientHandle : public pink::ClientHandle {
public:
// void CronHandle() const override {
// std::cout << "HandleCronHandle" << std::endl;
// }
// void FdTimeoutHandle(int fd, const std::string& ip_port) const override {
// std::cout << "FdTimeoutHandle ip_port" << std::endl;
// }
// void FdClosedHandle(int fd, const std::string& ip_port) const override {
// std::cout << "FdClosedHandle " << fd << " ip_port " << ip_port << std::endl;
// }
// bool AccessHandle(std::string& ip) const override {
// // ban 127.0.0.1 if you want to test this routine
// if (ip.find("127.0.0.2") != std::string::npos) {
// std::cout << "AccessHandle " << ip << std::endl;
// return false;
// }
// return true;
// }
// int CreateWorkerSpecificData(void** data) const override {
// return 0;
// }
// int DeleteWorkerSpecificData(void* data) const override {
// return 0;
// }
};

class PikaReplClient {
public:
PikaReplClient(int cron_interval, int keepalive_timeout);
~PikaReplClient();
void Write(const std::string& ip, const int port, const std::string& msg);
slash::Status Write(const std::string& ip, const int port, const std::string& msg);
void ThreadPollSchedule(pink::TaskFunc func, void*arg);
int Start();
private:
Expand All @@ -37,6 +65,7 @@ class PikaReplClient {
int cron_interval_;
int keepalive_timeout_;
pink::ClientThread* client_thread_;
pink::ClientHandle* handle_;
};

#endif
8 changes: 5 additions & 3 deletions src/pika_repl_client.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@
PikaReplClient::PikaReplClient(int cron_interval, int keepalive_timeout)
: cron_interval_(cron_interval),
keepalive_timeout_(keepalive_timeout) {
client_thread_ = new pink::ClientThread(&conn_factory_, cron_interval_, keepalive_timeout_);
handle_ = new ReplClientHandle();
client_thread_ = new pink::ClientThread(&conn_factory_, cron_interval_, keepalive_timeout_, handle_, NULL);
client_thread_->set_thread_name("PikaReplClient");
}

PikaReplClient::~PikaReplClient() {
client_thread_->StopThread();
delete client_thread_;
}

Expand All @@ -26,6 +28,6 @@ int PikaReplClient::Start() {
return res;
}

void PikaReplClient::Write(const std::string& ip, const int port, const std::string& msg) {
client_thread_->Write(ip, port, msg);
slash::Status PikaReplClient::Write(const std::string& ip, const int port, const std::string& msg) {
return client_thread_->Write(ip, port, msg);
}

0 comments on commit 7666574

Please sign in to comment.