org.red5.server.api

## Interface IClient

All Superinterfaces:
  AttributeStoreMXBean, IAttributeStore

All Known Implementing Classes:
  Client

    public interface IClient
    extends IAttributeStore

The client object represents a single client. One client may have multiple connections to different scopes on the same host. In some ways the client object is like a HTTP session. You can create IClient objects with `IClientRegistry.newClient(Object[])` NOTE: I removed session, since client serves the same purpose as a client with attributes

Author:
  The Red5 Project (red5@osflash.org), Luke Hubbard (luke@codegent.com)

### Field Summary

Fields
`static String` `ID` The key used to store the client object in a http session.

### Method Summary

Methods
`void` `checkBandwidth()` Performs a bandwidth checking routine.
`Map<String,Object>` `checkBandwidthUp(Object[] params)` Performs a bandwidth checking callback for the client.
`void` `disconnect()` Closes all the connections.
`Set<IConnection>` `getConnections()` Get a set of connections.
`Set<IConnection>` `getConnections(IScope scope)` Get a set of connections of a given scope.
`long` `getCreationTime()` Get the creation time for this client object.
`String` `getId()` Get the unique ID for this client.
`Collection<String>` `getPermissions(IConnection conn)` Return the permissions in a given context.
`Collection<IScope>` `getScopes()` Get a set of scopes the client is connected to.
`boolean` `hasPermission(IConnection conn, String permissionName)` Check if the client has a permission in the given context.
`boolean` `isBandwidthChecked()` Returns whether or not a bandwidth check has been requested.
`void` `setId(String id)` Sets the clients id
`void` `setPermissions(IConnection conn, Collection<String> permissions)` Set the permissions for this client in a given context.

### Methods inherited from interface org.red5.server.api.IAttributeStore

`getAttribute, getAttribute, getAttributeNames, getAttributes, hasAttribute, removeAttribute, removeAttributes, setAttribute, setAttributes, setAttributes`

### Field Detail

#### ID

    static final String ID

The key used to store the client object in a http session.

See Also:
  Constant Field Values

### Method Detail

#### setId

    void setId(String id)

Sets the clients id

Parameters:
  `id` - client id

#### getId

    String getId()

Get the unique ID for this client. This will be generated by the server if not passed upon connection from client-side Flex/Flash app. To assign a custom ID to the client use `params` object of `IApplication.appConnect(IConnection, Object[])` method, that contains 2nd all the rest values you pass to `NetConnection.connect` method. Example: At client side: `NetConnection.connect( "http://localhost/killerapp/", "user123" );` then at server side: `public boolean appConnect( IConnection connection, Object[] params ){
try { connection.getClient().setId( (String) params[0] ); } catch(Exception e){
log.error("{}", e); } }`

Returns:
  client id

#### getCreationTime

    long getCreationTime()

Get the creation time for this client object.

Returns:
  Creation time in milliseconds

#### getScopes

    Collection<IScope> getScopes()

Get a set of scopes the client is connected to.

Returns:
  Set of scopes

#### getConnections

    Set<IConnection> getConnections()

Get a set of connections.

Returns:
  Set of connections

#### getConnections

    Set<IConnection> getConnections(IScope scope)

Get a set of connections of a given scope.

Parameters:
  `scope` - scope to get connections for
Returns:
  Set of connections to the passed scope

#### disconnect

    void disconnect()

Closes all the connections.

#### setPermissions

    void setPermissions(IConnection conn,
                      Collection<String> permissions)

Set the permissions for this client in a given context.

Parameters:
  `conn` - Connection specifying the context to set the permissions for.
  `permissions` - Permissions the client has in this context or `null` for no permissions.

#### getPermissions

    Collection<String> getPermissions(IConnection conn)

Return the permissions in a given context.

Parameters:
  `conn` - Connection specifying the context to get the permissions for.
Returns:
  Permission names.

#### hasPermission

    boolean hasPermission(IConnection conn,
                        String permissionName)

Check if the client has a permission in the given context.

Parameters:
  `conn` - Connection specifying the context to check the permissions for.
  `permissionName` - Name of the permission to check.
Returns:
  `true` if the client has the permission, otherwise `false`

#### checkBandwidth

    void checkBandwidth()

Performs a bandwidth checking routine. Information may be found here: http://www.adobe.com/devnet/flashmediaserver/articles/dynamic_stream_switching_04.html

#### checkBandwidthUp

    Map<String,Object> checkBandwidthUp(Object[] params)

Performs a bandwidth checking callback for the client. Information may be found here: http://www.adobe.com/devnet/flashmediaserver/articles/dynamic_stream_switching_04.html

#### isBandwidthChecked

    boolean isBandwidthChecked()

Returns whether or not a bandwidth check has been requested.

Returns:
  true if requested and false otherwise