/**
* BlueCove - Java library for Bluetooth
*
* Java docs licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0
* (c) Copyright 2001, 2002 Motorola, Inc. ALL RIGHTS RESERVED.
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
* @version $Id$
*/
package javax.bluetooth;
import java.io.IOException;
import javax.microedition.io.Connection;
/**
* The <code>L2CAPConnectionNotifier</code> interface provides
* an L2CAP connection notifier.
* <P>
* To create a server connection, the protocol must be
* <code>btl2cap</code>. The target contains "localhost:" and the UUID of the
* service. The parameters are ReceiveMTU and TransmitMTU, the same parameters
* used to define a client connection. Here is an example of a valid server connection
* string:<BR>
* <code>btl2cap://localhost:3B9FA89520078C303355AAA694238F07;ReceiveMTU=512;TransmitMTU=512</code><BR>
* <P>
* A call to Connector.open() with this string will return a
* <code>javax.bluetooth.L2CAPConnectionNotifier</code> object. An
* <code>L2CAPConnection</code> object is obtained from the
* <code>L2CAPConnectionNotifier</code> by calling the method
* <code>acceptAndOpen()</code>.
*
*/
public interface L2CAPConnectionNotifier extends Connection {
/**
* Waits for a client to connect to this L2CAP service. Upon connection
* returns an <code>L2CAPConnection</code> that can be used to communicate
* with this client.
*
* <P>
* A service record associated with this connection will be added to the
* SDDB associated with this <code>L2CAPConnectionNotifier</code> object if
* one does not exist in the SDDB. This method will put the local device in
* connectable mode so that it may respond to connection attempts by
* clients.
*
* <P>
* The following checks are done to verify that any modifications made by
* the application to the service record after it was created by
* <code>Connector.open()</code> have not created an invalid service record.
* If any of these checks fail, then a
* <code>ServiceRegistrationException</code> is thrown.
* <UL>
* <LI>ServiceClassIDList and ProtocolDescriptorList, the mandatory service
* attributes for a <code>btl2cap</code> service record, must be present in
* the service record.
* <LI>L2CAP must be in the ProtocolDescriptorList.
* <LI>The PSM value must not have changed in the service record.
* </UL>
* <P>
* This method will not ensure that the service record created 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.
* <P>
* Note : once an application invokes <code>close()</code> on any
* <code>L2CAPConnectionNotifier</code>, <code>SessionNotifier</code>, or
* <code>StreamConnectionNotifer</code> instance, all pending
* <code>acceptAndOpen()</code> methods that have been invoked previously on
* that instance MUST throw <code>InterruptedIOException</code>. This
* mechanism provides an application with the means to cancel any
* outstanding <code>acceptAndOpen()</code> method calls.
*
* @return a connection to communicate with the client
*
* @exception IOException
* if the notifier is closed before
* <code>acceptAndOpen()</code> is called
*
* @exception ServiceRegistrationException
* if the structure of the associated service record is
* invalid or if the service record could not be added
* successfully to the local SDDB. The structure of service
* record is invalid if the service record is missing any
* mandatory service attributes, or has changed any of the
* values described above which are fixed and cannot be
* changed. Failures to add the record to the SDDB could be
* due to insufficient disk space, database locks, etc.
*
* @exception BluetoothStateException
* if the server device could not be placed in connectable
* mode because the device user has configured the device to
* be non-connectable.
*
*/
public L2CAPConnection acceptAndOpen() throws IOException;
}