AutoArchive._infrastructure.service — AutoArchive Developer Manual (ver. 2.0.2)

# AutoArchive._infrastructure.service

Support framework for registering and accessing services.

## Modules

### iservice_component

`IServiceComponent` interface.

class AutoArchive._infrastructure.service.iservice_component.IServiceComponent(applicationContext, serviceAccessor)

  Bases: `object`

  Interface for service components.

  Parameters

    - serviceAccessor (`IServiceAccessor`) – Can be used to get/register services.

    - applicationContext (`ApplicationContext`) – Application context.

  abstract destroyServices()

    Destroys all services owned by this component.

### iservice

`IService` interface.

class AutoArchive._infrastructure.service.iservice.IService

  Bases: `object`

  Interface for component’s services.

  See also: `ServiceAccessor`.

### iservice_identification

`IServiceIdentification` interface.

class AutoArchive._infrastructure.service.iservice_identification.IServiceIdentification

  Bases: `object`

  Identifies a service.

  Note

  Implementations should be static classes.

  abstract property interface

    Gets interface type of the service.

    Return type

      `type{``object``}`

  abstract property providerIdentificationInterface

    Gets interface type for accessing information about providers of this service.

    Return type

      `type{``object``}`

### _service_accessor

`ServiceAccessor`.

class AutoArchive._infrastructure.service._service_accessor.ServiceAccessor

  Bases: `object`

  Access to services.

  A service can be made available by registering via this interface. Registered classes has to implement `IService`.

  getOrCreateService(serviceIdentification, providerIdentification, *args)

    Provides access to registered services interfaces.

    See also: `registerInterface()`.

    Parameters

      - serviceIdentification (`IServiceIdentification`) – Identification of the service that shall be created.

      - providerIdentification (`serviceIdentification.providerIdentificationInterface`) – Corresponding service provider identification object. It should be one of the instances returned by `getProvidersIdentifications()`. For services with a single provider (implementation) it can be `None`.

      - args – Service specific arguments.

    Returns

      Instance of a service provider of the particular service.

    Return type

      `serviceIdentification.interface`

    Raises

      KeyError – If `serviceIdentification` is not registered.

  getProvidersIdentifications(serviceIdentification)

    Returns providers identifications for the given service.

    Parameters

      serviceIdentification (`IServiceIdentification`) – Identification of the service.

    Returns

      Service providers.

    Return type

      `iterable<serviceIdentification.providerIdentificationInterface>`

    Raises

      KeyError – If `serviceIdentification` is not registered.

  registerService(serviceIdentification, providerClass, providerIdentification=None)

    Registers a service.

    See also: `unregisterService()`, `getOrCreateService()`.

    Parameters

      - serviceIdentification (`IServiceIdentification`) – Identification of the service that shall be registered.

      - providerClass (`type{` `serviceIdentification.interface`, `IService``}`) – Provider of the service.

      - providerIdentification (`serviceIdentification.providerIdentificationInterface`) – Corresponding service provider identification object.

    Raises

      - TypeError – If `providerClass` does not implement `serviceIdentification.interface`. If `providerIdentification` does not implement `serviceIdentification.providerIdentificationInterface`.

      - KeyError – If `serviceIdentification` is already registered with `providerClass` or `providerIdentification`.

  unregisterService(serviceIdentification)

    Unregisters a service with all its providers.

    All serviceType instances all destroyed first.

    See also: `registerService()`, `getOrCreateService()`.

    Parameters

      serviceIdentification (`IServiceIdentification`) – Identification of the service that shall be registered.

    Raises

      KeyError – If `serviceIdentification` is not registered.