Package org.apache.sling.distribution.agent.spi

## Interface DistributionAgent

    @ConsumerType
    public interface DistributionAgent

A distribution agent is responsible for handling `DistributionRequest`s. This means executing actions of e.g.: a specific `DistributionRequestType`s on specific path(s) which will resume pulling resources from a certain Sling instance and / or pushing resources to other instances.

### Method Summary

All Methods Instance Methods Abstract Methods
`@NotNull org.apache.sling.distribution.DistributionResponse` `execute​(@NotNull org.apache.sling.api.resource.ResourceResolver resourceResolver, @NotNull org.apache.sling.distribution.DistributionRequest distributionRequest)` Perform a `DistributionRequest` to distribute content from a source instance to a target instance.
`@NotNull DistributionLog` `getLog()` Get the agent log
`@Nullable DistributionQueue` `getQueue​(@NotNull String name)` Get the agent queue with the given name
`@NotNull Iterable<String>` `getQueueNames()` Retrieves the names of the queues for this agent.
`@NotNull DistributionAgentState` `getState()` returns the state of the agent

### Method Detail

#### getQueueNames

    @NotNull
    @NotNull Iterable<String> getQueueNames()

Retrieves the names of the queues for this agent.

Returns:
  the list of queue names

#### getQueue

    @Nullable
    @Nullable DistributionQueue getQueue​(@NotNull
                                         @NotNull String name)

Get the agent queue with the given name

Parameters:
  `name` - a queue name
Returns:
  a `DistributionQueue` with the given name bound to this agent, if it exists, `null` otherwise

#### getLog

    @NotNull
    @NotNull DistributionLog getLog()

Get the agent log

Returns:
  the log for this agent

#### getState

    @NotNull
    @NotNull DistributionAgentState getState()

returns the state of the agent

Returns:
  the agent state

#### execute

    @NotNull
    @NotNull org.apache.sling.distribution.DistributionResponse execute​(@NotNull
                                                                        @NotNull org.apache.sling.api.resource.ResourceResolver resourceResolver,
                                                                        @NotNull
                                                                        @NotNull org.apache.sling.distribution.DistributionRequest distributionRequest)
                                                                 throws DistributionException

Perform a `DistributionRequest` to distribute content from a source instance to a target instance. The content to be sent will be assembled according to the information contained in the request. A `DistributionResponse` holding the `DistributionRequestState` of the provided request will be returned. Synchronous `DistributionAgent`s will usually block until the execution has finished while asynchronous agents will usually return the response as soon as the content to be distributed has been assembled and scheduled for distribution.

Parameters:
  `distributionRequest` - the distribution request
  `resourceResolver` - the resource resolver used for authorizing the request,
Returns:
  a `DistributionResponse`
Throws:
  `DistributionException` - if any error happens during the execution of the request or if the authentication fails