com.staros.replica.Replica Maven / Gradle / Ivy
// Copyright 2021-present StarRocks, Inc. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.staros.replica;
import com.staros.proto.ReplicaInfo;
import com.staros.proto.ReplicaRole;
import com.staros.proto.WorkerInfo;
// protected by shard manager's lock
public class Replica {
private final long workerId;
private ReplicaRole role;
public Replica(long workerId) {
this.workerId = workerId;
this.role = ReplicaRole.PRIMARY;
}
public ReplicaRole getRole() {
return role;
}
public void setRole(ReplicaRole role) {
this.role = role;
}
public long getWorkerId() {
return workerId;
}
public ReplicaInfo toProtobuf() {
WorkerInfo workerInfo = WorkerInfo.newBuilder()
.setWorkerId(workerId)
.build();
ReplicaInfo.Builder builder = ReplicaInfo.newBuilder();
builder.setWorkerInfo(workerInfo);
builder.setReplicaRole(role);
return builder.build();
}
public static Replica fromProtobuf(ReplicaInfo info) {
long workerId = info.getWorkerInfo().getWorkerId();
ReplicaRole role = info.getReplicaRole();
Replica replica = new Replica(workerId);
replica.setRole(role);
return replica;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy