in lightning-integration/lightning-integration-jgroups/src/main/java/org/apache/directmemory/lightning/jgroups/LightningJGroupsMembershipListener.java [95:142]
private Runnable handleMemberJoin( View view )
{
List<Address> members = view.getMembers();
// Quote from JGroups documentation:
// *Note that the first member of a view is the coordinator (the one who
// emits new views).*
Address coordinator = members.get( 0 );
if ( channel.getAddress().equals( coordinator ) )
{
final ClassDefinitionContainer container = serializer.getClassDefinitionContainer();
final List<Address> receivers = findNewMembers( view );
try
{
final byte[] byteBuffer = Util.objectToByteBuffer( container );
return new Runnable()
{
@Override
public void run()
{
for ( Address receiver : receivers )
{
try
{
channel.send( receiver, byteBuffer );
}
catch ( Exception e )
{
throw new LightningClusterException(
"Could not send ClassDefinitionContainer to address "
+ receiver, e );
}
}
}
};
}
catch ( Exception e )
{
throw new LightningClusterException( "Could not serialize ClassDefinitionContainer", e );
}
}
return null;
}