polardbxengine/extra/IS/consensus/include/learner_server.h

58 lines
1.5 KiB
C++

/************************************************************************
*
* Copyright (c) 2016 Alibaba.com, Inc. All Rights Reserved
* $Id: learner_server.h,v 1.0 05/08/2017 3:37:56 PM jarry.zj(jarry.zj@alibaba-inc.com) $
*
************************************************************************/
/**
* @file learner_server.h
* @author jarry.zj(jarry.zj@alibaba-inc.com)
* @date 05/08/2017 3:37:56 PM
* @version 1.0
* @brief
*
**/
#ifndef CONSENSUS_INCLUDE_LEARNER_SERVER_H_
#define CONSENSUS_INCLUDE_LEARNER_SERVER_H_
#include "paxos_server.h"
namespace alisql {
class SingleLeader;
class LearnerServer : public RemoteServer {
public:
LearnerServer(uint64_t serverId);
virtual ~LearnerServer() {}
virtual void stop(void *);
virtual void sendMsg(void *);
virtual void connect(void *);
virtual void disconnect(void *);
virtual uint64_t getMatchIndex() const {return matchIndex;}
virtual uint64_t getAppliedIndex() const {return appliedIndex.load();}
virtual uint64_t getLastLogIndex();
virtual void onConnectCb();
/* functions not used */
virtual void fillInfo(void *) {}
virtual void beginRequestVote(void *) {}
virtual void beginLeadership(void *) {}
virtual void stepDown(void *) {}
virtual uint64_t getLastAckEpoch() const {return 0;}
virtual void setLastAckEpoch(uint64_t epoch) {}
virtual bool haveVote() const{return true;}
/* TODO:
virtual bool isCaughtUp() const;
*/
SingleLeader* singleLeader;
uint64_t connectTimeout;
};
}
#endif /* CONSENSUS_INCLUDE_LEARNER_SERVER_H_ */