aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/group/impl/GroupStoreMessage.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/group/impl/GroupStoreMessage.java')
-rw-r--r--framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/group/impl/GroupStoreMessage.java184
1 files changed, 184 insertions, 0 deletions
diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/group/impl/GroupStoreMessage.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/group/impl/GroupStoreMessage.java
new file mode 100644
index 00000000..b82754b9
--- /dev/null
+++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/group/impl/GroupStoreMessage.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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
+ *
+ * http://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 org.onosproject.store.group.impl;
+
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.group.GroupBuckets;
+import org.onosproject.net.group.GroupDescription;
+import org.onosproject.net.group.GroupKey;
+import org.onosproject.net.group.GroupStore.UpdateType;
+
+/**
+ * Format of the Group store message that is used to
+ * communicate with the peer nodes in the cluster.
+ */
+public final class GroupStoreMessage {
+ private final DeviceId deviceId;
+ private final GroupKey appCookie;
+ private final GroupDescription groupDesc;
+ private final UpdateType updateType;
+ private final GroupBuckets updateBuckets;
+ private final GroupKey newAppCookie;
+ private final Type type;
+
+ /**
+ * Type of group store request.
+ */
+ public enum Type {
+ ADD,
+ UPDATE,
+ DELETE
+ }
+
+ private GroupStoreMessage(Type type,
+ DeviceId deviceId,
+ GroupKey appCookie,
+ GroupDescription groupDesc,
+ UpdateType updateType,
+ GroupBuckets updateBuckets,
+ GroupKey newAppCookie) {
+ this.type = type;
+ this.deviceId = deviceId;
+ this.appCookie = appCookie;
+ this.groupDesc = groupDesc;
+ this.updateType = updateType;
+ this.updateBuckets = updateBuckets;
+ this.newAppCookie = newAppCookie;
+ }
+
+ /**
+ * Creates a group store message for group ADD request.
+ *
+ * @param deviceId device identifier in which group to be added
+ * @param desc group creation parameters
+ * @return constructed group store message
+ */
+ public static GroupStoreMessage createGroupAddRequestMsg(DeviceId deviceId,
+ GroupDescription desc) {
+ return new GroupStoreMessage(Type.ADD,
+ deviceId,
+ null,
+ desc,
+ null,
+ null,
+ null);
+ }
+
+ /**
+ * Creates a group store message for group UPDATE request.
+ *
+ * @param deviceId the device ID
+ * @param appCookie the current group key
+ * @param updateType update (add or delete) type
+ * @param updateBuckets group buckets for updates
+ * @param newAppCookie optional new group key
+ * @return constructed group store message
+ */
+ public static GroupStoreMessage createGroupUpdateRequestMsg(DeviceId deviceId,
+ GroupKey appCookie,
+ UpdateType updateType,
+ GroupBuckets updateBuckets,
+ GroupKey newAppCookie) {
+ return new GroupStoreMessage(Type.UPDATE,
+ deviceId,
+ appCookie,
+ null,
+ updateType,
+ updateBuckets,
+ newAppCookie);
+ }
+
+ /**
+ * Creates a group store message for group DELETE request.
+ *
+ * @param deviceId the device ID
+ * @param appCookie the group key
+ * @return constructed group store message
+ */
+ public static GroupStoreMessage createGroupDeleteRequestMsg(DeviceId deviceId,
+ GroupKey appCookie) {
+ return new GroupStoreMessage(Type.DELETE,
+ deviceId,
+ appCookie,
+ null,
+ null,
+ null,
+ null);
+ }
+
+ /**
+ * Returns the device identifier of this group request.
+ *
+ * @return device identifier
+ */
+ public DeviceId deviceId() {
+ return deviceId;
+ }
+
+ /**
+ * Returns the application cookie associated with this group request.
+ *
+ * @return application cookie
+ */
+ public GroupKey appCookie() {
+ return appCookie;
+ }
+
+ /**
+ * Returns the group create parameters associated with this group request.
+ *
+ * @return group create parameters
+ */
+ public GroupDescription groupDesc() {
+ return groupDesc;
+ }
+
+ /**
+ * Returns the group buckets to be updated as part of this group request.
+ *
+ * @return group buckets to be updated
+ */
+ public GroupBuckets updateBuckets() {
+ return updateBuckets;
+ }
+
+ /**
+ * Returns the update group operation type.
+ *
+ * @return update operation type
+ */
+ public UpdateType updateType() {
+ return updateType;
+ }
+
+ /**
+ * Returns the new application cookie associated with this group operation.
+ *
+ * @return new application cookie
+ */
+ public GroupKey newAppCookie() {
+ return newAppCookie;
+ }
+
+ /**
+ * Returns the type of this group operation.
+ *
+ * @return group message type
+ */
+ public Type type() {
+ return type;
+ }
+}