de.avetana.bluetooth.obex
Class OBEXConnection

java.lang.Object
  extended by de.avetana.bluetooth.obex.OBEXConnection
All Implemented Interfaces:
CommandHandler, ClientSession

public class OBEXConnection
extends java.lang.Object
implements ClientSession, CommandHandler


Field Summary
protected static int ABORT
           
protected static int CLOSE
           
protected static int CONNECT
           
protected static int DISCONNECT
           
protected static int GET
           
protected  int mtu
           
protected static int PUT
           
protected static int SESSION
           
protected static int SETPATH
           
 
Constructor Summary
OBEXConnection(StreamConnection con)
           
 
Method Summary
 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.
 Authenticator getAuthenticator()
           
 long getConnectionID()
          Retrieves the connection ID that is being used in the present connection.
 int getMTU()
           
 RemoteDevice getRemoteDevice()
           
protected  void handleAuthResponse(byte[] authResp, Authenticator authenticator)
           
protected static byte[] hsToByteArray(HeaderSet hs)
           
protected static HeaderSetImpl parseHeaders(byte[] data, int offset)
           
 Operation put(HeaderSet headers)
          Performs an OBEX PUT operation.
 byte[] receiveCommand()
           
 void sendCommand(int commId, byte[] data)
           
 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.
 HeaderSet setPath(HeaderSet headers, boolean backup, boolean create)
          Completes an OBEX SETPATH operation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CONNECT

protected static final int CONNECT
See Also:
Constant Field Values

DISCONNECT

protected static final int DISCONNECT
See Also:
Constant Field Values

CLOSE

protected static final int CLOSE
See Also:
Constant Field Values

PUT

protected static final int PUT
See Also:
Constant Field Values

GET

protected static final int GET
See Also:
Constant Field Values

SETPATH

protected static final int SETPATH
See Also:
Constant Field Values

SESSION

protected static final int SESSION
See Also:
Constant Field Values

ABORT

protected static final int ABORT
See Also:
Constant Field Values

mtu

protected int mtu
Constructor Detail

OBEXConnection

public OBEXConnection(StreamConnection con)
               throws java.io.IOException
Throws:
java.io.IOException
Method Detail

close

public void close()
           throws java.io.IOException
Throws:
java.io.IOException

getRemoteDevice

public RemoteDevice getRemoteDevice()
                             throws java.io.IOException
Throws:
java.io.IOException

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 CommandHandler
Specified by:
createHeaderSet in interface ClientSession
Returns:
a new javax.obex.HeaderSet object
See Also:
HeaderSet

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

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

connect

public HeaderSet connect(HeaderSet headers)
                  throws java.io.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:
java.io.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

handleAuthResponse

protected void handleAuthResponse(byte[] authResp,
                                  Authenticator authenticator)
                           throws java.io.IOException
Parameters:
authResp -
authenticator -
Throws:
java.io.IOException

disconnect

public HeaderSet disconnect(HeaderSet headers)
                     throws java.io.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:
java.io.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

setPath

public HeaderSet setPath(HeaderSet headers,
                         boolean backup,
                         boolean create)
                  throws java.io.IOException
Description copied from interface: ClientSession
Completes an OBEX SETPATH operation. 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:
java.io.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

delete

public HeaderSet delete(HeaderSet headers)
                 throws java.io.IOException
Description copied from interface: ClientSession
Performs an OBEX DELETE operation. 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:
java.io.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

get

public Operation get(HeaderSet headers)
              throws java.io.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. 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:
java.io.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

put

public Operation put(HeaderSet headers)
              throws java.io.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. 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:
java.io.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

sendCommand

public void sendCommand(int commId,
                        byte[] data)
                 throws java.io.IOException
Specified by:
sendCommand in interface CommandHandler
Throws:
java.io.IOException

receiveCommand

public byte[] receiveCommand()
                      throws java.io.IOException
Specified by:
receiveCommand in interface CommandHandler
Throws:
java.io.IOException

hsToByteArray

protected static byte[] hsToByteArray(HeaderSet hs)
                               throws java.io.IOException
Throws:
java.io.IOException

parseHeaders

protected static HeaderSetImpl parseHeaders(byte[] data,
                                            int offset)

getMTU

public int getMTU()
Specified by:
getMTU in interface CommandHandler

getAuthenticator

public Authenticator getAuthenticator()
Specified by:
getAuthenticator in interface CommandHandler