X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2FElectionTermImpl.java;h=e123a64874e84b925fa456f145b28ab508b547ff;hp=e918f75273483cd11ab73a68bdc7ab36db8a59cf;hb=refs%2Fchanges%2F09%2F83009%2F6;hpb=789431e2c0c76d9d00bdc7599a08036e3720f170 diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ElectionTermImpl.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ElectionTermImpl.java index e918f75273..e123a64874 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ElectionTermImpl.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ElectionTermImpl.java @@ -1,47 +1,55 @@ /* - * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. + * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.controller.cluster.raft; -import java.util.concurrent.atomic.AtomicLong; - -public class ElectionTermImpl implements ElectionTerm{ - /** - * Identifier of the actor whose election term information this is - */ - private final String id; - - private AtomicLong currentTerm; +import org.opendaylight.controller.cluster.DataPersistenceProvider; +import org.opendaylight.controller.cluster.raft.persisted.UpdateElectionTerm; +import org.slf4j.Logger; - private String votedFor; +/** + * Implementation of ElectionTerm for the RaftActor. + */ +class ElectionTermImpl implements ElectionTerm { + private long currentTerm = 0; + private String votedFor = null; - public ElectionTermImpl(String id) { - this.id = id; + private final DataPersistenceProvider persistence; - // TODO: Read currentTerm from some persistent state - currentTerm = new AtomicLong(0); + private final Logger log; + private final String logId; - // TODO: Read votedFor from some file - votedFor = ""; + ElectionTermImpl(DataPersistenceProvider persistence, String logId, Logger log) { + this.persistence = persistence; + this.logId = logId; + this.log = log; } - public AtomicLong getCurrentTerm() { + @Override + public long getCurrentTerm() { return currentTerm; } + @Override public String getVotedFor() { return votedFor; } - public void update(AtomicLong currentTerm, String votedFor){ - this.currentTerm = currentTerm; - this.votedFor = votedFor; + @Override + public void update(long newTerm, String newVotedFor) { + log.debug("{}: Set currentTerm={}, votedFor={}", logId, newTerm, newVotedFor); + this.currentTerm = newTerm; + this.votedFor = newVotedFor; + } - // TODO : Write to some persistent state + @Override + public void updateAndPersist(long newTerm, String newVotedFor) { + update(newTerm, newVotedFor); + // FIXME : Maybe first persist then update the state + persistence.persist(new UpdateElectionTerm(this.currentTerm, this.votedFor), NoopProcedure.instance()); } }