#
# Configuration parameter for the current node used when running STEM distributed
#
#

# The class providing messaging between cluster nodes. Various implementations
# can be provided to support a range of hardware configurations
MESSENGERCLASS=org.eclipse.stem.graphsynchronizer.impl.NetworkMessenger

# Whether to use binary serialization when serializing the EMF graphs. 
# If set to TRUE, be careful to ensure that the binary format (i.e. EMF version) is 
# the same between all running instances.
#
# All nodes must set this flag to the same value

BINARYSERIALIZATION=TRUE

# Whether to compress the messages using the ZIP algorithm
# All nodes must set this flag to the same value
USEZIP=FALSE

# The rank of this node 0 <= NODERANK < NUMNODES
NODERANK=0

# The total number of nodes
NUMNODES=2


#=========================================================================================
# Other parameters needed to initialize a particular messenger can be 
# entered here. They are passed to the initialize(Properties) method
# of the Messenger.
#

# For the network messenger. The other remote hosts, separate addresses using semi-colon. 
# The total number of addresses must match NUMNODES-1
REMOTEHOSTS=9.1.67.75

# The port number all hosts are expected to accept connections on
PORT=1211
