org.red5.server.api

## Interface IConnection

All Superinterfaces:
  AttributeStoreMXBean, IAttributeStore, ICastingAttributeStore, ICoreObject, IEventDispatcher, IEventHandler, IEventListener

All Known Subinterfaces:
  IRemotingConnection, IServiceCapableConnection, IStreamCapableConnection

All Known Implementing Classes:
  BaseConnection, BaseRTMPTConnection, RemotingConnection, RTMPConnection, RTMPMinaConnection, RTMPTConnection

    public interface IConnection
    extends ICoreObject, ICastingAttributeStore

The connection object. Each connection has an associated client and scope. Connections may be persistent, polling, or transient. The aim of this interface is to provide basic connection methods shared between different types of connections Future subclasses: RTMPConnection, RemotingConnection, AJAXConnection, HttpConnection, etc

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

### Nested Class Summary

Nested Classes
`static class` `IConnection.Encoding` AMF version types, either AMF0 or AMF3.

### Field Summary

Fields
`static String` `PERSISTENT` Persistent connection type, eg RTMP.
`static String` `POLLING` Polling connection type, eg RTMPT.
`static String` `TRANSIENT` Transient connection type, eg Remoting, HTTP, etc.

### Method Summary

Methods
`void` `close()` Close this connection.
`boolean` `connect(IScope scope)` Try to connect to the scope.
`boolean` `connect(IScope scope, Object[] params)` Try to connect to the scope with a list of connection parameters.
`Iterator<IBasicScope>` `getBasicScopes()` Get the basic scopes this connection has subscribed.
`IClient` `getClient()` Get the client object associated with this connection.
`long` `getClientBytesRead()` Return number of written bytes the client reports to have received.
`Map<String,Object>` `getConnectParams()` Return the parameters that were given in the call to "connect".
`long` `getDroppedMessages()` Total number of messages that have been dropped.
`IConnection.Encoding` `getEncoding()` Get the object encoding (AMF version) for this connection.
`String` `getHost()` Get the hostname that the client is connected to.
`int` `getLastPingTime()` Return roundtrip time of last ping command.
`String` `getPath()` Get the path for this connection.
`long` `getPendingMessages()` Total number of messages that are pending to be sent to the connection.
`long` `getReadBytes()` Total number of bytes read from the connection.
`long` `getReadMessages()` Total number of messages read from the connection.
`String` `getRemoteAddress()` Get the IP address the client is connected from.
`List<String>` `getRemoteAddresses()` Get the IP addresses the client is connected from.
`int` `getRemotePort()` Get the port the client is connected from.
`IScope` `getScope()` Get the scope this is connected to.
`String` `getSessionId()` Get the session id, this may be `null`.
`String` `getType()` Get the connection type.
`long` `getWrittenBytes()` Total number of bytes written to the connection.
`long` `getWrittenMessages()` Total number of messages written to the connection.
`void` `initialize(IClient client)` Initialize the connection.
`boolean` `isConnected()` Is the client connected to the scope.
`void` `ping()` Start measuring the roundtrip time for a packet on the connection.
`void` `setBandwidth(int mbits)` Sets the bandwidth using a mbit/s value.

### Methods inherited from interface org.red5.server.api.event.IEventDispatcher

`dispatchEvent`

### Methods inherited from interface org.red5.server.api.event.IEventHandler

`handleEvent`

### Methods inherited from interface org.red5.server.api.event.IEventListener

`notifyEvent`

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

`getBoolAttribute, getByteAttribute, getDoubleAttribute, getIntAttribute, getListAttribute, getLongAttribute, getMapAttribute, getSetAttribute, getShortAttribute, getStringAttribute`

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

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

### Field Detail

#### PERSISTENT

    static final String PERSISTENT

Persistent connection type, eg RTMP.

See Also:
  Constant Field Values

#### POLLING

    static final String POLLING

Polling connection type, eg RTMPT.

See Also:
  Constant Field Values

#### TRANSIENT

    static final String TRANSIENT

Transient connection type, eg Remoting, HTTP, etc.

See Also:
  Constant Field Values

### Method Detail

#### getType

    String getType()

Get the connection type.

Returns:
  string containing one of connection types

#### getEncoding

    IConnection.Encoding getEncoding()

Get the object encoding (AMF version) for this connection.

Returns:
  the used encoding.

#### initialize

    void initialize(IClient client)

Initialize the connection.

Parameters:
  `client` - Client object associated with connection

#### connect

    boolean connect(IScope scope)

Try to connect to the scope.

Parameters:
  `scope` - Scope object
Returns:
  `true` on success, `false` otherwise

#### connect

    boolean connect(IScope scope,
                  Object[] params)

Try to connect to the scope with a list of connection parameters.

Parameters:
  `params` - Connections parameters
  `scope` - Scope object
Returns:
  `true` on success, `false` otherwise

#### isConnected

    boolean isConnected()

Is the client connected to the scope. Result depends on connection type, `true` for persistent and polling connections, `false` for transient.

Returns:
  `true` if the connection is persistent or polling, otherwise `false`

#### close

    void close()

Close this connection. This will disconnect the client from the associated scope.

#### getConnectParams

    Map<String,Object> getConnectParams()

Return the parameters that were given in the call to "connect".

Returns:
  Connection parameters passed from client-side (Flex/Flash application)

#### getClient

    IClient getClient()

Get the client object associated with this connection.

Returns:
  Client object

#### getHost

    String getHost()

Get the hostname that the client is connected to. If they are connected to an IP, the IP address will be returned as a String.

Returns:
  String containing the hostname

#### getRemoteAddress

    String getRemoteAddress()

Get the IP address the client is connected from.

Returns:
  The IP address of the client

#### getRemoteAddresses

    List<String> getRemoteAddresses()

Get the IP addresses the client is connected from. If a client is connected through RTMPT and uses a proxy to connect, this will contain all hosts the client used to connect to the server.

Returns:
  The IP addresses of the client

#### getRemotePort

    int getRemotePort()

Get the port the client is connected from.

Returns:
  The port of the client

#### getPath

    String getPath()

Get the path for this connection. This is not updated if you switch scope.

Returns:
  path Connection path

#### getSessionId

    String getSessionId()

Get the session id, this may be `null`.

Returns:
  Session id

#### getReadBytes

    long getReadBytes()

Total number of bytes read from the connection.

Returns:
  Number of read bytes

#### getWrittenBytes

    long getWrittenBytes()

Total number of bytes written to the connection.

Returns:
  Number of written bytes

#### getReadMessages

    long getReadMessages()

Total number of messages read from the connection.

Returns:
  Number of read messages

#### getWrittenMessages

    long getWrittenMessages()

Total number of messages written to the connection.

Returns:
  Number of written messages

#### getDroppedMessages

    long getDroppedMessages()

Total number of messages that have been dropped.

Returns:
  Number of dropped messages

#### getPendingMessages

    long getPendingMessages()

Total number of messages that are pending to be sent to the connection.

Returns:
  Number of pending messages

#### getClientBytesRead

    long getClientBytesRead()

Return number of written bytes the client reports to have received. This is the last value of the BytesRead message received from a client.

Returns:
  number of written bytes received by the client
See Also:
  `BytesRead`

#### ping

    void ping()

Start measuring the roundtrip time for a packet on the connection.

#### getLastPingTime

    int getLastPingTime()

Return roundtrip time of last ping command.

Returns:
  roundtrip time in milliseconds

#### getScope

    IScope getScope()

Get the scope this is connected to.

Returns:
  The connected scope

#### getBasicScopes

    Iterator<IBasicScope> getBasicScopes()

Get the basic scopes this connection has subscribed. This list will contain the shared objects and broadcast streams the connection connected to.

Returns:
  List of basic scopes

#### setBandwidth

    void setBandwidth(int mbits)

Sets the bandwidth using a mbit/s value.

Parameters:
  `mbits` -