| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more contributor license |
| * agreements. See the NOTICE file distributed with this work for additional information regarding |
| * copyright ownership. The ASF licenses this file to You 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.apache.geode.distributed.internal.membership.gms.interfaces; |
| |
| import java.util.Map; |
| import java.util.Set; |
| |
| import org.apache.geode.distributed.DistributedMember; |
| import org.apache.geode.distributed.internal.DistributionMessage; |
| import org.apache.geode.distributed.internal.membership.InternalDistributedMember; |
| import org.apache.geode.distributed.internal.membership.NetView; |
| import org.apache.geode.distributed.internal.membership.QuorumChecker; |
| |
| public interface Messenger extends Service { |
| /** |
| * adds a handler for the given class/interface of messages |
| */ |
| <T> void addHandler(Class<T> c, MessageHandler<T> h); |
| |
| /** |
| * sends an asynchronous message when the membership view may not have been established. Returns |
| * destinations that did not receive the message due to no longer being in the view |
| */ |
| Set<InternalDistributedMember> send(DistributionMessage m, NetView alternateView); |
| |
| /** |
| * sends an asynchronous message. Returns destinations that did not receive the message due to no |
| * longer being in the view |
| */ |
| Set<InternalDistributedMember> send(DistributionMessage m); |
| |
| /** |
| * sends an asynchronous message. Returns destinations that did not receive the message due to no |
| * longer being in the view. Does not guarantee delivery of the message (no retransmissions) |
| */ |
| Set<InternalDistributedMember> sendUnreliably(DistributionMessage m); |
| |
| /** |
| * returns the endpoint ID for this member |
| */ |
| InternalDistributedMember getMemberID(); |
| |
| /** |
| * check to see if a member ID has already been used |
| */ |
| boolean isOldMembershipIdentifier(DistributedMember id); |
| |
| /** |
| * retrieves the quorum checker that is used during auto-reconnect attempts |
| */ |
| QuorumChecker getQuorumChecker(); |
| |
| /** |
| * test whether multicast is not only turned on but is working |
| * |
| * @return true multicast is enabled and working |
| */ |
| boolean testMulticast(long timeout) throws InterruptedException; |
| |
| /** |
| * For the state-flush algorithm we need to be able to record the state of outgoing messages to |
| * the given member. If multicast is being used for region operations we also need to record its |
| * state. |
| * |
| * @param member the target member |
| * @param state messaging state is stored in this map |
| * @param includeMulticast whether to record multicast state |
| */ |
| void getMessageState(InternalDistributedMember member, Map<String, Long> state, |
| boolean includeMulticast); |
| |
| /** |
| * The flip-side of getMessageState, this method takes the state it recorded and waits for |
| * messages from the given member to be received. |
| * |
| * @param member the member flushing operations to this member |
| * @param state the state of that member's outgoing messaging to this member |
| */ |
| void waitForMessageState(InternalDistributedMember member, Map<String, Long> state) |
| throws InterruptedException; |
| |
| /** |
| * Get the public key of member. |
| * |
| * @return byte[] public key for member |
| */ |
| byte[] getPublicKey(InternalDistributedMember mbr); |
| |
| /** |
| * Set public key of member. |
| * |
| */ |
| |
| void setPublicKey(byte[] publickey, InternalDistributedMember mbr); |
| |
| /** |
| * Set cluster key in local member.Memebr calls when it gets cluster key in join response |
| * |
| */ |
| void setClusterSecretKey(byte[] clusterSecretKey); |
| |
| /** |
| * To retrieve the cluster key. This needs to send cluster key to new memebr. |
| * |
| * @return byte[] cluster key |
| */ |
| byte[] getClusterSecretKey(); |
| |
| /** |
| * To set requestId in request. This requestId comes back in response to match the request. |
| * |
| * @return int request id |
| */ |
| int getRequestId(); |
| |
| /** |
| * Initialize the cluster key, this happens when member becomes coordinator. |
| */ |
| void initClusterKey(); |
| } |