2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.controller.remote.rpc.registry.gossip;
10 import akka.actor.Address;
11 import com.google.common.base.Preconditions;
12 import java.io.Serializable;
13 import java.util.Collections;
14 import java.util.HashMap;
15 import java.util.HashSet;
18 import org.opendaylight.controller.remote.rpc.registry.gossip.Messages.BucketStoreMessages.ContainsBucketVersions;
19 import org.opendaylight.controller.remote.rpc.registry.gossip.Messages.BucketStoreMessages.ContainsBuckets;
23 * These messages are used by {@link org.opendaylight.controller.remote.rpc.registry.gossip.BucketStore} and
24 * {@link org.opendaylight.controller.remote.rpc.registry.gossip.Gossiper} actors.
26 public class Messages {
28 public static class BucketStoreMessages {
30 public static class GetAllBuckets implements Serializable {
31 private static final long serialVersionUID = 1L;
34 public static class GetBucketsByMembers implements Serializable {
35 private static final long serialVersionUID = 1L;
36 private final Set<Address> members;
38 public GetBucketsByMembers(Set<Address> members) {
39 Preconditions.checkArgument(members != null, "members can not be null");
40 this.members = members;
43 public Set<Address> getMembers() {
44 return new HashSet<>(members);
48 public static class ContainsBuckets<T extends Copier<T>> implements Serializable {
49 private static final long serialVersionUID = -4940160367495308286L;
51 private final Map<Address, Bucket<T>> buckets;
53 public ContainsBuckets(Map<Address, Bucket<T>> buckets) {
54 Preconditions.checkArgument(buckets != null, "buckets can not be null");
55 this.buckets = buckets;
58 public Map<Address, Bucket<T>> getBuckets() {
59 Map<Address, Bucket<T>> copy = new HashMap<>(buckets.size());
61 for (Map.Entry<Address, Bucket<T>> entry : buckets.entrySet()) {
63 if ( entry.getKey() == null || entry.getValue() == null ) {
66 copy.put(entry.getKey(), entry.getValue());
72 public static class GetAllBucketsReply<T extends Copier<T>> extends ContainsBuckets<T> implements Serializable {
73 private static final long serialVersionUID = 1L;
75 public GetAllBucketsReply(Map<Address, Bucket<T>> buckets) {
80 public static class GetBucketsByMembersReply<T extends Copier<T>> extends ContainsBuckets<T>
81 implements Serializable {
82 private static final long serialVersionUID = 1L;
84 public GetBucketsByMembersReply(Map<Address, Bucket<T>> buckets) {
89 public static class GetBucketVersions implements Serializable {
90 private static final long serialVersionUID = 1L;
93 public static class ContainsBucketVersions implements Serializable {
94 private static final long serialVersionUID = -8172148925383801613L;
96 Map<Address, Long> versions;
98 public ContainsBucketVersions(Map<Address, Long> versions) {
99 Preconditions.checkArgument(versions != null, "versions can not be null or empty");
101 this.versions = versions;
104 public Map<Address, Long> getVersions() {
105 return Collections.unmodifiableMap(versions);
110 public static class GetBucketVersionsReply extends ContainsBucketVersions implements Serializable {
111 private static final long serialVersionUID = 1L;
113 public GetBucketVersionsReply(Map<Address, Long> versions) {
118 public static class UpdateRemoteBuckets<T extends Copier<T>> extends ContainsBuckets<T>
119 implements Serializable {
120 private static final long serialVersionUID = 1L;
122 public UpdateRemoteBuckets(Map<Address, Bucket<T>> buckets) {
128 public static class GossiperMessages {
129 public static class Tick implements Serializable {
130 private static final long serialVersionUID = -4770935099506366773L;
133 public static final class GossipTick extends Tick {
134 private static final long serialVersionUID = 5803354404380026143L;
137 public static final class GossipStatus extends ContainsBucketVersions implements Serializable {
138 private static final long serialVersionUID = -593037395143883265L;
140 private final Address from;
142 public GossipStatus(Address from, Map<Address, Long> versions) {
147 public Address from() {
152 public static final class GossipEnvelope<T extends Copier<T>> extends ContainsBuckets<T>
153 implements Serializable {
154 private static final long serialVersionUID = 8346634072582438818L;
156 private final Address from;
157 private final Address to;
159 public GossipEnvelope(Address from, Address to, Map<Address, Bucket<T>> buckets) {
161 Preconditions.checkArgument(to != null, "Recipient of message must not be null");
166 public Address from() {
170 public Address to() {