www

导航

zookeeper选举(三)-WorkerSender

Messenger.WorkerSender
发送投票信息工作线程

  class WorkerSender extends ZooKeeperThread {
            volatile boolean stop;
            QuorumCnxManager manager;

            WorkerSender(QuorumCnxManager manager) {
                super("WorkerSender");
                this.stop = false;
                this.manager = manager;
            }

            public void run() {
                while (!stop) {
                    try {
                        ToSend sendMsg = sendQueue.poll(3000, TimeUnit.MILLISECONDS);
                        if (sendMsg == null) continue;
                        process(sendMsg);
                    } catch (InterruptedException e) {
                        break;
                    }
                }
                LOG.info("WorkerSender is down");
            }

            void process(ToSend sendMsg) {
                ByteBuffer requestBuffer = buildMsg(sendMsg.state.ordinal(),
                        sendMsg.leader,
                        sendMsg.zxid,
                        sendMsg.electionEpoch,
                        sendMsg.peerEpoch);
                manager.toSend(sendMsg.sid, requestBuffer);
            }
        }
  

posted on 2020-09-30 15:38  www_practice  阅读(110)  评论(0编辑  收藏  举报