# Class InstanceManager

java.lang.Object
org.apache.zookeeper.test.system.InstanceManager

All Implemented Interfaces:
  `AsyncCallback, AsyncCallback.ChildrenCallback, Watcher`

public class InstanceManager extends Object implements AsyncCallback.ChildrenCallback, Watcher
This class doles out assignments to InstanceContainers that are registered to a ZooKeeper znode. The znode will have four child nodes: * ready: this znode indicates that the InstanceManager is running * available: the children of this znode are ephemeral nodes representing running InstanceContainers * assignments: there will be a child under this znode for each available InstanceContainer. those znodes will have a child for each assigned instance * reports: there will be a child under this znode for each instance that is running. it will have the report string from the instance.

## Nested Class Summary

### Nested classes/interfaces inherited from interface AsyncCallback

`AsyncCallback.ACLCallback, AsyncCallback.AllChildrenNumberCallback, AsyncCallback.Children2Callback, AsyncCallback.ChildrenCallback, AsyncCallback.Create2Callback, AsyncCallback.DataCallback, AsyncCallback.EphemeralsCallback, AsyncCallback.MultiCallback, AsyncCallback.StatCallback, AsyncCallback.StringCallback, AsyncCallback.VoidCallback`

### Nested classes/interfaces inherited from interface Watcher

`Watcher.Event, Watcher.WatcherType`

## Constructor Summary

Constructors
Constructor
Description
`InstanceManager(ZooKeeper zk, String prefix)`

## Method Summary

Modifier and Type
Method
Description
`String`
`assignInstance(String name, Class<? extends Instance> clazz, String params, int weight)`
`void`
`close()`
`String`
`getStatus(String name, long timeout)`
`void`
`process(WatchedEvent event)`
`void`
`processResult(int rc, String path, Object ctx, List<String> children)`
Process the result of the asynchronous call.
`void`
`reconfigureInstance(String name, String params)`
`void`
`removeInstance(String name)`
`void`
`resetStatus(String name)`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### InstanceManager

public InstanceManager(ZooKeeper zk, String prefix) throws KeeperException, InterruptedException

Throws:
  `KeeperException`
  `InterruptedException`

## Method Details

### processResult

public void processResult(int rc, String path, Object ctx, List<String> children)
Description copied from interface: `AsyncCallback.ChildrenCallback`
Process the result of the asynchronous call.

On success, rc is `KeeperException.Code.OK`.

On failure, rc is set to the corresponding failure code in `KeeperException`.

- `KeeperException.Code.NONODE` - The node on given path doesn't exist for some API calls.

Specified by:
  `processResult` in interface `AsyncCallback.ChildrenCallback`
Parameters:
  `rc` - The return code or the result of the call.
  `path` - The path that we passed to asynchronous calls.
  `ctx` - Whatever context object that we passed to asynchronous calls.
  `children` - An unordered array of children of the node on given path.
See Also:
  - `ZooKeeper.getChildren(String, boolean, AsyncCallback.ChildrenCallback, Object)`
  - `ZooKeeper.getChildren(String, Watcher, AsyncCallback.ChildrenCallback, Object)`

### process

public void process(WatchedEvent event)

Specified by:
  `process` in interface `Watcher`

### assignInstance

public String assignInstance(String name, Class<? extends Instance> clazz, String params, int weight) throws NoAvailableContainers, DuplicateNameException, InterruptedException, KeeperException

Throws:
  `NoAvailableContainers`
  `DuplicateNameException`
  `InterruptedException`
  `KeeperException`

### reconfigureInstance

public void reconfigureInstance(String name, String params) throws NoAssignmentException, InterruptedException, KeeperException

Throws:
  `NoAssignmentException`
  `InterruptedException`
  `KeeperException`

### removeInstance

public void removeInstance(String name) throws InterruptedException, KeeperException

Throws:
  `InterruptedException`
  `KeeperException`

### resetStatus

public void resetStatus(String name) throws InterruptedException, KeeperException

Throws:
  `InterruptedException`
  `KeeperException`

### getStatus

public String getStatus(String name, long timeout) throws KeeperException, InterruptedException

Throws:
  `KeeperException`
  `InterruptedException`

### close

public void close() throws InterruptedException

Throws:
  `InterruptedException`