001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package org.apache.catalina.tribes;
019:
020: /**
021: * MembershipService Interface<br>
022: * The <code>MembershipService</code> interface is the membership component
023: * at the bottom layer, the IO layer (for layers see the javadoc for the {@link Channel} interface).<br>
024: * @author Filip Hanik
025: * @version $Revision: 467222 $, $Date: 2006-10-24 05:17:11 +0200 (mar., 24 oct. 2006) $
026: */
027:
028: public interface MembershipService {
029:
030: public static final int MBR_RX = Channel.MBR_RX_SEQ;
031: public static final int MBR_TX = Channel.MBR_TX_SEQ;
032:
033: /**
034: * Sets the properties for the membership service. This must be called before
035: * the <code>start()</code> method is called.
036: * The properties are implementation specific.
037: * @param properties - to be used to configure the membership service.
038: */
039: public void setProperties(java.util.Properties properties);
040:
041: /**
042: * Returns the properties for the configuration used.
043: */
044: public java.util.Properties getProperties();
045:
046: /**
047: * Starts the membership service. If a membership listeners is added
048: * the listener will start to receive membership events.
049: * Performs a start level 1 and 2
050: * @throws java.lang.Exception if the service fails to start.
051: */
052: public void start() throws java.lang.Exception;
053:
054: /**
055: * Starts the membership service. If a membership listeners is added
056: * the listener will start to receive membership events.
057: * @param level - level MBR_RX starts listening for members, level MBR_TX
058: * starts broad casting the server
059: * @throws java.lang.Exception if the service fails to start.
060: * @throws java.lang.IllegalArgumentException if the level is incorrect.
061: */
062: public void start(int level) throws java.lang.Exception;
063:
064: /**
065: * Starts the membership service. If a membership listeners is added
066: * the listener will start to receive membership events.
067: * @param level - level MBR_RX stops listening for members, level MBR_TX
068: * stops broad casting the server
069: * @throws java.lang.Exception if the service fails to stop
070: * @throws java.lang.IllegalArgumentException if the level is incorrect.
071: */
072:
073: public void stop(int level);
074:
075: /**
076: * @return true if the the group contains members
077: */
078: public boolean hasMembers();
079:
080: /**
081: *
082: * @param mbr Member
083: * @return Member
084: */
085: public Member getMember(Member mbr);
086:
087: /**
088: * Returns a list of all the members in the cluster.
089: */
090:
091: public Member[] getMembers();
092:
093: /**
094: * Returns the member object that defines this member
095: */
096: public Member getLocalMember(boolean incAliveTime);
097:
098: /**
099: * Return all members by name
100: */
101: public String[] getMembersByName();
102:
103: /**
104: * Return the member by name
105: */
106: public Member findMemberByName(String name);
107:
108: /**
109: * Sets the local member properties for broadcasting
110: */
111: public void setLocalMemberProperties(String listenHost,
112: int listenPort);
113:
114: /**
115: * Sets the membership listener, only one listener can be added.
116: * If you call this method twice, the last listener will be used.
117: * @param listener The listener
118: */
119: public void setMembershipListener(MembershipListener listener);
120:
121: /**
122: * removes the membership listener.
123: */
124: public void removeMembershipListener();
125:
126: /**
127: * Set a payload to be broadcasted with each membership
128: * broadcast.
129: * @param payload byte[]
130: */
131: public void setPayload(byte[] payload);
132:
133: public void setDomain(byte[] domain);
134:
135: }
|