Merge "Dynamically update DatastoreContext properties"
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / main / java / org / opendaylight / controller / cluster / raft / RaftActorContextImpl.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.controller.cluster.raft;
10
11 import static com.google.common.base.Preconditions.checkState;
12 import akka.actor.ActorRef;
13 import akka.actor.ActorSelection;
14 import akka.actor.ActorSystem;
15 import akka.actor.Props;
16 import akka.actor.UntypedActorContext;
17 import java.util.Map;
18 import org.slf4j.Logger;
19
20 public class RaftActorContextImpl implements RaftActorContext {
21
22     private final ActorRef actor;
23
24     private final UntypedActorContext context;
25
26     private final String id;
27
28     private final ElectionTerm termInformation;
29
30     private long commitIndex;
31
32     private long lastApplied;
33
34     private ReplicatedLog replicatedLog;
35
36     private final Map<String, String> peerAddresses;
37
38     private final Logger LOG;
39
40     private ConfigParams configParams;
41
42     private boolean snapshotCaptureInitiated;
43
44     public RaftActorContextImpl(ActorRef actor, UntypedActorContext context,
45         String id,
46         ElectionTerm termInformation, long commitIndex,
47         long lastApplied, ReplicatedLog replicatedLog,
48         Map<String, String> peerAddresses, ConfigParams configParams,
49         Logger logger) {
50         this.actor = actor;
51         this.context = context;
52         this.id = id;
53         this.termInformation = termInformation;
54         this.commitIndex = commitIndex;
55         this.lastApplied = lastApplied;
56         this.replicatedLog = replicatedLog;
57         this.peerAddresses = peerAddresses;
58         this.configParams = configParams;
59         this.LOG = logger;
60     }
61
62     void setConfigParams(ConfigParams configParams) {
63         this.configParams = configParams;
64     }
65
66     @Override
67     public ActorRef actorOf(Props props){
68         return context.actorOf(props);
69     }
70
71     @Override
72     public ActorSelection actorSelection(String path){
73         return context.actorSelection(path);
74     }
75
76     @Override
77     public String getId() {
78         return id;
79     }
80
81     @Override
82     public ActorRef getActor() {
83         return actor;
84     }
85
86     @Override
87     public ElectionTerm getTermInformation() {
88         return termInformation;
89     }
90
91     @Override
92     public long getCommitIndex() {
93         return commitIndex;
94     }
95
96     @Override public void setCommitIndex(long commitIndex) {
97         this.commitIndex = commitIndex;
98     }
99
100     @Override
101     public long getLastApplied() {
102         return lastApplied;
103     }
104
105     @Override public void setLastApplied(long lastApplied) {
106         this.lastApplied = lastApplied;
107     }
108
109     @Override public void setReplicatedLog(ReplicatedLog replicatedLog) {
110         this.replicatedLog = replicatedLog;
111     }
112
113     @Override public ReplicatedLog getReplicatedLog() {
114         return replicatedLog;
115     }
116
117     @Override public ActorSystem getActorSystem() {
118         return context.system();
119     }
120
121     @Override public Logger getLogger() {
122         return this.LOG;
123     }
124
125     @Override public Map<String, String> getPeerAddresses() {
126         return peerAddresses;
127     }
128
129     @Override public String getPeerAddress(String peerId) {
130         return peerAddresses.get(peerId);
131     }
132
133     @Override public ConfigParams getConfigParams() {
134         return configParams;
135     }
136
137     @Override
138     public void setSnapshotCaptureInitiated(boolean snapshotCaptureInitiated) {
139         this.snapshotCaptureInitiated = snapshotCaptureInitiated;
140     }
141
142     @Override
143     public boolean isSnapshotCaptureInitiated() {
144         return snapshotCaptureInitiated;
145     }
146
147     @Override public void addToPeers(String name, String address) {
148         peerAddresses.put(name, address);
149     }
150
151     @Override public void removePeer(String name) {
152         peerAddresses.remove(name);
153     }
154
155     @Override public ActorSelection getPeerActorSelection(String peerId) {
156         String peerAddress = getPeerAddress(peerId);
157         if(peerAddress != null){
158             return actorSelection(peerAddress);
159         }
160         return null;
161     }
162
163     @Override public void setPeerAddress(String peerId, String peerAddress) {
164         LOG.info("Peer address for peer {} set to {}", peerId, peerAddress);
165         checkState(peerAddresses.containsKey(peerId), peerId + " is unknown");
166
167         peerAddresses.put(peerId, peerAddress);
168     }
169 }