com.intel.bluetooth.btgoep
Class Connection

java.lang.Object
  extended by com.intel.bluetooth.BluetoothConnectionAccessAdapter
      extended by com.intel.bluetooth.btgoep.Connection
All Implemented Interfaces:
CreateConnection, BluetoothConnectionAccess, BluetoothConnectionNotifierServiceRecordAccess, Connection, ClientSession, SessionNotifier
Direct Known Subclasses:
Connection

public class Connection
extends BluetoothConnectionAccessAdapter
implements CreateConnection, ClientSession, SessionNotifier, BluetoothConnectionNotifierServiceRecordAccess

This class is Proxy for btgoep (OBEX over RFCOMM) Connection implementations for IBM J9 support

You need to configure -Dmicroedition.connection.pkgs=com.intel.bluetooth if not installing bluecove.jar to "%J9_HOME%\lib\jclMidp20\ext\

Your application should not use this class directly.

Rating red

Constructor Summary
Connection()
           
 
Method Summary
 Connection acceptAndOpen(ServerRequestHandler handler)
          Waits for a transport layer connection to be established and specifies the handler to handle the requests from the client.
 Connection acceptAndOpen(ServerRequestHandler handler, Authenticator auth)
          Waits for a transport layer connection to be established and specifies the handler to handle the requests from the client and the Authenticator to use to respond to authentication challenge and authentication response headers.
 void close()
           
 HeaderSet connect(HeaderSet headers)
          Completes an OBEX CONNECT operation.
 HeaderSet createHeaderSet()
          Creates a javax.obex.HeaderSet object.
 HeaderSet delete(HeaderSet headers)
          Performs an OBEX DELETE operation.
 HeaderSet disconnect(HeaderSet headers)
          Completes an OBEX DISCONNECT operation.
 Operation get(HeaderSet headers)
          Performs an OBEX GET operation.
 long getConnectionID()
          Retrieves the connection ID that is being used in the present connection.
protected  BluetoothConnectionAccess getImpl()
           
 ServiceRecord getServiceRecord()
           
 Operation put(HeaderSet headers)
          Performs an OBEX PUT operation.
 void setAuthenticator(Authenticator auth)
          Sets the Authenticator to use with this connection.
 void setConnectionID(long id)
          Sets the connection ID header to include in the request packets.
 void setParameters(String spec, int access, boolean timeout)
          Passes the parameters from the Connector.open() method to this object.
 Connection setParameters2(String spec, int access, boolean timeout)
          Passes the parameters from the Connector.open() method to this object.
 HeaderSet setPath(HeaderSet headers, boolean backup, boolean create)
          Completes an OBEX SETPATH operation.
 void updateServiceRecord(boolean acceptAndOpen)
           
 
Methods inherited from class com.intel.bluetooth.BluetoothConnectionAccessAdapter
encrypt, getBluetoothStack, getRemoteAddress, getRemoteDevice, getSecurityOpt, isClosed, markAuthenticated, setRemoteDevice, shutdown
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Connection

public Connection()
Method Detail

setParameters

public void setParameters(String spec,
                          int access,
                          boolean timeout)
                   throws IOException
Description copied from interface: CreateConnection
Passes the parameters from the Connector.open() method to this object. Protocol used by MIDP 1.0

Specified by:
setParameters in interface CreateConnection
Parameters:
spec - String The address passed to Connector.open()
access - int The type of access this Connection is granted (READ, WRITE, READ_WRITE)
timeout - boolean A boolean indicating wether or not the caller to Connector.open() wants timeout exceptions or not
Throws:
IOException - If an error occured opening and configuring serial port.
See Also:
Connector

setParameters2

public Connection setParameters2(String spec,
                                 int access,
                                 boolean timeout)
                          throws IOException
Description copied from interface: CreateConnection
Passes the parameters from the Connector.open() method to this object. Protocol used by MIDP 2.0

Specified by:
setParameters2 in interface CreateConnection
Parameters:
spec - String The address passed to Connector.open()
access - int The type of access this Connection is granted (READ, WRITE, READ_WRITE)
timeout - boolean A boolean indicating wether or not the caller to Connector.open() wants timeout exceptions or not
Throws:
IOException - If an error occured opening and configuring serial port.
See Also:
Connector

getImpl

protected BluetoothConnectionAccess getImpl()
Specified by:
getImpl in class BluetoothConnectionAccessAdapter

close

public void close()
           throws IOException
Specified by:
close in interface Connection
Throws:
IOException

connect

public HeaderSet connect(HeaderSet headers)
                  throws IOException
Description copied from interface: ClientSession
Completes an OBEX CONNECT operation. If the headers argument is null, no headers will be sent in the request. This method will never return null.

This method must be called and a successful response code of OBEX_HTTP_OK must be received before put(), get(), setPath(), delete(), or disconnect() may be called. Similarly, after a successful call to disconnect(), this method must be called before calling put(), get(), setPath(), delete(), or disconnect().

Specified by:
connect in interface ClientSession
Parameters:
headers - the headers to send in the CONNECT request
Returns:
the headers that were returned from the server
Throws:
IOException - if an error occurred in the transport layer; if the client is already in an operation; if this method had already been called with a successful response code of OBEX_HTTP_OK and calls to disconnect() have not returned a response code of OBEX_HTTP_OK; if the headers defined in headers exceed the max packet length

createHeaderSet

public HeaderSet createHeaderSet()
Description copied from interface: ClientSession
Creates a javax.obex.HeaderSet object. This object can be used to define header values in a request.

Specified by:
createHeaderSet in interface ClientSession
Returns:
a new javax.obex.HeaderSet object
See Also:
HeaderSet

delete

public HeaderSet delete(HeaderSet headers)
                 throws IOException
Description copied from interface: ClientSession
Performs an OBEX DELETE operation. If the headers argument is null, no headers will be sent in the request. This method will never return null.

Specified by:
delete in interface ClientSession
Parameters:
headers - the header to send in the DELETE request
Returns:
the headers returned by the server
Throws:
IOException - if an error occurred in the transport layer; if the client is already in an operation; if an OBEX connection does not exist because connect() has not been called; if disconnect() had been called and a response code of OBEX_HTTP_OK was received; if the headers defined in headers exceed the max packet length

disconnect

public HeaderSet disconnect(HeaderSet headers)
                     throws IOException
Description copied from interface: ClientSession
Completes an OBEX DISCONNECT operation. If the headers argument is null, no headers will be sent in the request. This method will end the session. A new session may be started by calling connect(). This method will never return null.

Specified by:
disconnect in interface ClientSession
Parameters:
headers - the header to send in the DISCONNECT request
Returns:
the headers returned by the server
Throws:
IOException - if an error occurred in the transport layer; if the client is already in an operation; if an OBEX connection does not exist because connect() has not been called; if disconnect() has been called and received a response code of OBEX_HTTP_OK after the last call to connect(); if the headers defined in headers exceed the max packet length

get

public Operation get(HeaderSet headers)
              throws IOException
Description copied from interface: ClientSession
Performs an OBEX GET operation. This method will send the OBEX headers provided to the server and return an Operation object to continue with the operation. The headers argument may be null. This method will never return null.

Specified by:
get in interface ClientSession
Parameters:
headers - the OBEX headers to send as part of the initial GET request
Returns:
the OBEX operation that will complete the GET request
Throws:
IOException - if an error occurred in the transport layer; if an OBEX connection does not exist because connect() has not been called; if disconnect() had been called and a response code of OBEX_HTTP_OK was received; if connect() has not been called; if the client is already in an operation;
See Also:
Operation

getConnectionID

public long getConnectionID()
Description copied from interface: ClientSession
Retrieves the connection ID that is being used in the present connection. This method will return -1 if no connection ID is being used.

Specified by:
getConnectionID in interface ClientSession
Returns:
the connection ID being used or -1 if no connection ID is being used

put

public Operation put(HeaderSet headers)
              throws IOException
Description copied from interface: ClientSession
Performs an OBEX PUT operation. This method will send the OBEX headers provided to the server and return an Operation object to continue with the PUT operation. The headers argument may be null. This method will never return null.

Specified by:
put in interface ClientSession
Parameters:
headers - the OBEX headers to send in the initial PUT request
Returns:
the operation object used to complete the PUT request
Throws:
IOException - if an error occurred in the transport layer; if an OBEX connection does not exist because connect() has not been called; if disconnect() had been called and a response code of OBEX_HTTP_OK was received; if connect() has not been called; if the client is already in an operation;
See Also:
Operation

setAuthenticator

public void setAuthenticator(Authenticator auth)
Description copied from interface: ClientSession
Sets the Authenticator to use with this connection. The Authenticator allows an application to respond to authentication challenge and authentication response headers. If no Authenticator is set, the response to an authentication challenge or authentication response header is implementation dependent.

Specified by:
setAuthenticator in interface ClientSession
Parameters:
auth - the Authenticator to use for this connection

setConnectionID

public void setConnectionID(long id)
Description copied from interface: ClientSession
Sets the connection ID header to include in the request packets. If a connection ID is set, it will be sent in each request to the server except for the CONNECT request. An application only needs to set the connection ID if it is trying to operate with different targets over the same transport layer connection. If a client receives a connection ID from the server, the implementation will continue to use that connection ID until the application changes it or until the connection is closed.

Specified by:
setConnectionID in interface ClientSession
Parameters:
id - the connection ID to use

setPath

public HeaderSet setPath(HeaderSet headers,
                         boolean backup,
                         boolean create)
                  throws IOException
Description copied from interface: ClientSession
Completes an OBEX SETPATH operation. If the headers argument is null, no headers will be sent in the request. This method will never return null.

Specified by:
setPath in interface ClientSession
Parameters:
headers - the headers to include in the SETPATH request
backup - if true, instructs the server to back up one directory before moving to the directory specified in name (similar to cd .. on PCs); if false, apply name to the current directory
create - if true, instructs the server to create the directory if it does not exist; if false, instruct the server to return an error code if the directory does not exist
Returns:
the headers that were returned from the server
Throws:
IOException - if an error occurred in the transport layer; if the client is already in an operation; if an OBEX connection does not exist because connect() has not been called; if disconnect() had been called and a response code of OBEX_HTTP_OK was received; if the headers defined in headers exceed the max packet length

acceptAndOpen

public Connection acceptAndOpen(ServerRequestHandler handler)
                         throws IOException
Description copied from interface: SessionNotifier
Waits for a transport layer connection to be established and specifies the handler to handle the requests from the client. No authenticator is associated with this connection, therefore, it is implementation dependent as to how an authentication challenge and authentication response header will be received and processed.

Additional Note for OBEX over Bluetooth

If this method is called on a SessionNotifier object that does not have a ServiceRecord in the SDDB, the ServiceRecord for this object will be added to the SDDB. This method requests the BCC to put the local device in connectable mode so that it will respond to connection attempts by clients.

The following checks are done to verify that the service record provided is valid. If any of these checks fail, then a ServiceRegistrationException is thrown.

This method will not ensure that ServiceRecord associated with this notifier is a completely valid service record. It is the responsibility of the application to ensure that the service record follows all of the applicable syntactic and semantic rules for service record correctness.

Note : once an application invokes close() on any SessionNotifier, L2CAPConnectionNotifier, or StreamConnectionNotifer instance, all pending acceptAndOpen() methods that have been invoked previously on that instance MUST throw InterruptedIOException. This mechanism provides an application with the means to cancel any outstanding acceptAndOpen() method calls.

Specified by:
acceptAndOpen in interface SessionNotifier
Parameters:
handler - the request handler that will respond to OBEX requests
Returns:
the connection to the client
Throws:
IOException - if an error occurs in the transport layer

acceptAndOpen

public Connection acceptAndOpen(ServerRequestHandler handler,
                                Authenticator auth)
                         throws IOException
Description copied from interface: SessionNotifier
Waits for a transport layer connection to be established and specifies the handler to handle the requests from the client and the Authenticator to use to respond to authentication challenge and authentication response headers.

Additional Note for OBEX over Bluetooth

If this method is called on a SessionNotifier object that does not have a ServiceRecord in the SDDB, the ServiceRecord for this object will be added to the SDDB. This method requests the BCC to put the local device in connectable mode so that it will respond to connection attempts by clients.

The following checks are done to verify that the service record provided is valid. If any of these checks fail, then a ServiceRegistrationException is thrown.

This method will not ensure that ServiceRecord associated with this notifier is a completely valid service record. It is the responsibility of the application to ensure that the service record follows all of the applicable syntactic and semantic rules for service record correctness.

Note : once an application invokes close() on any SessionNotifier, L2CAPConnectionNotifier, or StreamConnectionNotifer instance, all pending acceptAndOpen() methods that have been invoked previously on that instance MUST throw InterruptedIOException. This mechanism provides an application with the means to cancel any outstanding acceptAndOpen() method calls.

Specified by:
acceptAndOpen in interface SessionNotifier
Parameters:
handler - the request handler that will respond to OBEX requests
auth - the Authenticator to use with this connection; if null then no Authenticator will be used
Returns:
the connection to the client
Throws:
IOException - if an error occurs in the transport layer

getServiceRecord

public ServiceRecord getServiceRecord()
Specified by:
getServiceRecord in interface BluetoothConnectionNotifierServiceRecordAccess

updateServiceRecord

public void updateServiceRecord(boolean acceptAndOpen)
                         throws ServiceRegistrationException
Specified by:
updateServiceRecord in interface BluetoothConnectionNotifierServiceRecordAccess
Parameters:
acceptAndOpen - wrap validation in ServiceRegistrationException
Throws:
ServiceRegistrationException