# Package madkit.kernel

Provides classes that are fundamental to the design of MaDKit applications.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  Gatekeeper | This interface is implemented by objects which are used to verify if an agent is allowed to play a certain role in a group.
  MadkitOption | Every regular MaDKit Options implements this interface.

- Class Summary
  Class | Description
  --- | ---
  AbstractAgent | The super class of all MaDKit agents, v 5.
  Activator<A extends AbstractAgent> | This class defines a tool for scheduling mechanism.
  Agent | The super class of all MaDKit threaded agents, v 5.
  AgentAddress | Identifies an agent within the artificial society.
  AgentLogger | This class defines a logger specialized for MaDKit agents.
  ConversationID | This class represents the conversation ID to which a message belongs.
  KernelAddress | This class represents a unique identifier for MaDKit kernel.
  Madkit | MaDKit 5 booter class.
  MadkitClassLoader | The MadkitClassLoader is the class loader used by MaDKit.
  Message | The generic MaDKit message class.
  Probe<A extends AbstractAgent> | This class defines a watcher's generic probe.
  Scheduler | This class defines a generic threaded scheduler agent.
  Watcher | This class defines a generic watcher agent.

- Enum Summary
  Enum | Description
  --- | ---
  AbstractAgent.ReturnCode | This class enumerates all the return codes which could be obtained with essential methods of the `AbstractAgent` and `Agent` classes.
  AbstractAgent.State | An agent state.
  Madkit.BooleanOption | Option used to activate or disable features on startup.
  Madkit.LevelOption | MaDKit options valued with a string representing a `Level` value.
  Madkit.Option | MaDKit options which are valued with a string representing parameters.
  Scheduler.SimulationState | A simulation state.

- Exception Summary
  Exception | Description
  --- | ---
  KernelException | Thrown to indicate that the agent is trying to use a method while not launched or already dead.

## Package madkit.kernel Description

Provides classes that are fundamental to the design of MaDKit applications. This package is the heart of MaDKit. Especially, it contains the agent main classes: `AbstractAgent` and `Agent`. `AbstractAgent` is not threaded while `Agent` is. The former is useful to develop simulation applications and the later could be used where you need autonomy of execution.

Since:
  MaDKit 1.0
Version:
  5.0
Author:
  Fabien Michel, Olivier Gutknecht, Jacques Ferber

Fabien Michel, Olivier Gutknecht, Jacques Ferber - February 12 2016