diff options
author | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
---|---|---|
committer | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
commit | 13d05bc8458758ee39cb829098241e89616717ee (patch) | |
tree | 22a4d1ce65f15952f07a3df5af4b462b4697cb3a /framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/group/impl/GroupStoreMessage.java | |
parent | 6139282e1e93c2322076de4b91b1c85d0bc4a8b3 (diff) |
ONOS checkin based on commit tag e796610b1f721d02f9b0e213cf6f7790c10ecd60
Change-Id: Ife8810491034fe7becdba75dda20de4267bd15cd
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.java | 184 |
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; + } +} |