# Base package names for core Atomix primitives
_primitive_package_names = (
    'barrier',
    'collection',
    'counter',
    'election',
    'idgenerator',
    'iterator',
    'list',
    'lock',
    'map',
    'multimap',
    'multiset',
    'queue',
    'semaphore',
    'set',
    'transaction',
    'tree',
    'value',
    'workqueue',
)

# A list of all core primitive packages for dynamic class loading
PRIMITIVE_PACKAGES = ','.join(['io.atomix.primitive.session.impl'] + ['io.atomix.core.{primitive},io.atomix.core.{primitive}.impl'.format(primitive=primitive) for primitive in _primitive_package_names])

# Base package names for core Atomix protocols
_protocol_package_names = (
    'raft',
    'backup'
)

# A list of all core protocol packages for dynamic class loading
PROTOCOL_PACKAGES = ','.join(['io.atomix.primitive.partition.impl'] + ['io.atomix.protocols.{protocol},io.atomix.protocols.{protocol}.partition'.format(protocol=protocol) for protocol in _protocol_package_names] + ['io.atomix.protocols.gossip'])

# A list of all additional core packages used in dynamic class loading
CORE_PACKAGES = ','.join(['io.atomix.core.profile', 'io.atomix.core.profile.impl'])

# A list of all dynamically loadable Atomix packages
INCLUDE_PACKAGES = ','.join([PRIMITIVE_PACKAGES, PROTOCOL_PACKAGES, CORE_PACKAGES])

ALL_PACKAGES = '*'
