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 com.google.common.collect.ImmutableMap;
13 import com.google.common.collect.ImmutableSet;
14 import java.io.Serializable;
17 import org.opendaylight.controller.remote.rpc.registry.gossip.Messages.BucketStoreMessages.ContainsBucketVersions;
18 import org.opendaylight.controller.remote.rpc.registry.gossip.Messages.BucketStoreMessages.ContainsBuckets;
21 * These messages are used by {@link org.opendaylight.controller.remote.rpc.registry.gossip.BucketStore} and
22 * {@link org.opendaylight.controller.remote.rpc.registry.gossip.Gossiper} actors.
24 public class Messages {
26 public static class BucketStoreMessages {
28 public static final class GetAllBuckets implements Serializable {
29 private static final long serialVersionUID = 1L;
32 public static final class GetBucketsByMembers implements Serializable {
33 private static final long serialVersionUID = 1L;
34 private final Set<Address> members;
36 public GetBucketsByMembers(final Set<Address> members) {
37 Preconditions.checkArgument(members != null, "members can not be null");
38 this.members = ImmutableSet.copyOf(members);
41 public Set<Address> getMembers() {
46 public static class ContainsBuckets<T extends BucketData<T>> implements Serializable {
47 private static final long serialVersionUID = -4940160367495308286L;
49 private final Map<Address, Bucket<T>> buckets;
51 protected ContainsBuckets(final Map<Address, Bucket<T>> buckets) {
52 Preconditions.checkArgument(buckets != null, "buckets can not be null");
53 this.buckets = ImmutableMap.copyOf(buckets);
56 public final Map<Address, Bucket<T>> getBuckets() {
61 public static final class GetAllBucketsReply<T extends BucketData<T>> extends ContainsBuckets<T> {
62 private static final long serialVersionUID = 1L;
64 public GetAllBucketsReply(final Map<Address, Bucket<T>> buckets) {
69 public static final class GetBucketsByMembersReply<T extends BucketData<T>> extends ContainsBuckets<T> {
70 private static final long serialVersionUID = 1L;
72 public GetBucketsByMembersReply(final Map<Address, Bucket<T>> buckets) {
77 public static final class GetBucketVersions implements Serializable {
78 private static final long serialVersionUID = 1L;
81 public static class ContainsBucketVersions implements Serializable {
82 private static final long serialVersionUID = -8172148925383801613L;
84 Map<Address, Long> versions;
86 public ContainsBucketVersions(final Map<Address, Long> versions) {
87 Preconditions.checkArgument(versions != null, "versions can not be null or empty");
89 this.versions = ImmutableMap.copyOf(versions);
92 public Map<Address, Long> getVersions() {
97 public static final class GetBucketVersionsReply extends ContainsBucketVersions {
98 private static final long serialVersionUID = 1L;
100 public GetBucketVersionsReply(final Map<Address, Long> versions) {
105 public static final class UpdateRemoteBuckets<T extends BucketData<T>> extends ContainsBuckets<T> {
106 private static final long serialVersionUID = 1L;
108 public UpdateRemoteBuckets(final Map<Address, Bucket<T>> buckets) {
114 * Message sent from the gossiper to its parent, therefore not Serializable, requesting removal
115 * of a bucket corresponding to an address.
117 public static final class RemoveRemoteBucket {
118 private final Address address;
120 public RemoveRemoteBucket(final Address address) {
121 this.address = Preconditions.checkNotNull(address);
124 public Address getAddress() {
130 public static class GossiperMessages {
131 public static class Tick implements Serializable {
132 private static final long serialVersionUID = -4770935099506366773L;
135 public static final class GossipTick extends Tick {
136 private static final long serialVersionUID = 5803354404380026143L;
139 public static final class GossipStatus extends ContainsBucketVersions {
140 private static final long serialVersionUID = -593037395143883265L;
142 private final Address from;
144 public GossipStatus(final Address from, final Map<Address, Long> versions) {
149 public Address from() {
154 public static final class GossipEnvelope<T extends BucketData<T>> extends ContainsBuckets<T> {
155 private static final long serialVersionUID = 8346634072582438818L;
157 private final Address from;
158 private final Address to;
160 public GossipEnvelope(final Address from, final Address to, final Map<Address, Bucket<T>> buckets) {
162 Preconditions.checkArgument(to != null, "Recipient of message must not be null");
167 public Address from() {
171 public Address to() {