Package org.apache.catalina.tribes.membership.cloud

# Class CloudMembershipProvider

java.lang.Object
org.apache.catalina.tribes.membership.MembershipProviderBase
org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider

All Implemented Interfaces:
  `ChannelListener`, `Heartbeat`, `MembershipProvider`

Direct Known Subclasses:
  `DNSMembershipProvider`, `KubernetesMembershipProvider`

public abstract class CloudMembershipProvider extends MembershipProviderBase implements Heartbeat, ChannelListener

## Field Summary

Fields
Modifier and Type
Field
Description
`protected int`
`connectionTimeout`
`protected static final String`
`CUSTOM_ENV_PREFIX`
`protected long`
`expirationTime`
`protected Map<String,String>`
`headers`
`protected String`
`localIp`
`protected MessageDigest`
`md5`
`protected int`
`port`
`protected int`
`readTimeout`
`protected static final StringManager`
`sm`
`protected Instant`
`startTime`
`protected StreamProvider`
`streamProvider`
`protected String`
`url`

### Fields inherited from class org.apache.catalina.tribes.membership.MembershipProviderBase

`executor, membership, membershipListener, service`

## Constructor Summary

Constructors
Constructor
Description
`CloudMembershipProvider()`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`accept(Serializable msg, Member sender)`
Invoked by the channel to determine if the listener will process this message or not.
`protected abstract Member[]`
`fetchMembers()`
Fetch current cluster members from the cloud orchestration.
`protected static String`
`getEnv(String... keys)`
Get value of environment variable.
`protected String`
`getNamespace()`
Get the Kubernetes namespace, or "tomcat" if the Kubernetes environment variable cannot be found (with a warning log about the missing namespace).
`void`
`heartbeat()`
Heartbeat invocation for resources cleanup etc
`void`
`init(Properties properties)`
Initialize the membership provider with the specified configuration.
`void`
`messageReceived(Serializable msg, Member sender)`
Receive a message from the channel
`void`
`start(int level)`
Start the membership provider.
`boolean`
`stop(int level)`
Stop the membership provider.
`protected void`
`updateMember(Member member, boolean add)`
Add or remove specified member.

### Methods inherited from class org.apache.catalina.tribes.membership.MembershipProviderBase

`getMember, getMembers, hasMembers, setMembershipListener, setMembershipService`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### sm

protected static final StringManager sm

### CUSTOM_ENV_PREFIX

protected static final String CUSTOM_ENV_PREFIX

See Also:
  - Constant Field Values

### url

protected String url

### streamProvider

protected StreamProvider streamProvider

### connectionTimeout

protected int connectionTimeout

### readTimeout

protected int readTimeout

### startTime

protected Instant startTime

### md5

protected MessageDigest md5

### headers

protected Map<String,String> headers

### localIp

protected String localIp

### port

protected int port

### expirationTime

protected long expirationTime

## Constructor Details

### CloudMembershipProvider

public CloudMembershipProvider()

## Method Details

### getEnv

protected static String getEnv(String... keys)
Get value of environment variable.

Parameters:
  `keys` - the environment variables
Returns:
  the env variables values, or null if not found

### getNamespace

protected String getNamespace()
Get the Kubernetes namespace, or "tomcat" if the Kubernetes environment variable cannot be found (with a warning log about the missing namespace).

Returns:
  the namespace

### init

public void init(Properties properties) throws IOException
Description copied from interface: `MembershipProvider`
Initialize the membership provider with the specified configuration.

Specified by:
  `init` in interface `MembershipProvider`
Overrides:
  `init` in class `MembershipProviderBase`
Parameters:
  `properties` - configuration
Throws:
  `IOException`

### start

public void start(int level) throws Exception
Description copied from interface: `MembershipProvider`
Start the membership provider.

Specified by:
  `start` in interface `MembershipProvider`
Parameters:
  `level` - the readiness level
  Channel.DEFAULT - will start all services
  Channel.MBR_RX_SEQ - starts the membership receiver
  Channel.MBR_TX_SEQ - starts the membership broadcaster
Throws:
  `Exception` - if an error occurs

### stop

public boolean stop(int level) throws Exception
Description copied from interface: `MembershipProvider`
Stop the membership provider.

Specified by:
  `stop` in interface `MembershipProvider`
Parameters:
  `level` - the readiness level
  Channel.DEFAULT - will stop all services
  Channel.MBR_RX_SEQ - stops the membership receiver
  Channel.MBR_TX_SEQ - stops the membership broadcaster
Returns:
  `true` if successful
Throws:
  `Exception` - if an error occurs

### heartbeat

public void heartbeat()
Description copied from interface: `Heartbeat`
Heartbeat invocation for resources cleanup etc

Specified by:
  `heartbeat` in interface `Heartbeat`

### fetchMembers

protected abstract Member[] fetchMembers()
Fetch current cluster members from the cloud orchestration.

Returns:
  the member array

### updateMember

protected void updateMember(Member member, boolean add)
Add or remove specified member.

Parameters:
  `member` - the member to add
  `add` - true if the member is added, false otherwise

### messageReceived

public void messageReceived(Serializable msg, Member sender)
Description copied from interface: `ChannelListener`
Receive a message from the channel

Specified by:
  `messageReceived` in interface `ChannelListener`
Parameters:
  `msg` - Serializable
  `sender` - - the source of the message

### accept

public boolean accept(Serializable msg, Member sender)
Description copied from interface: `ChannelListener`
Invoked by the channel to determine if the listener will process this message or not.

Specified by:
  `accept` in interface `ChannelListener`
Parameters:
  `msg` - Serializable
  `sender` - Member
Returns:
  boolean