All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.javax.obex.Operation Maven / Gradle / Ivy

Go to download

A library jar that provides APIs for Applications written for the Google Android Platform.

There is a newer version: 15-robolectric-12650502
Show newest version
/*
 * Copyright (c) 2008-2009, Motorola, Inc.
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * - Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 *
 * - Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 *
 * - Neither the name of the Motorola, Inc. nor the names of its contributors
 * may be used to endorse or promote products derived from this software
 * without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

package javax.obex;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * The Operation interface provides ways to manipulate a single
 * OBEX PUT or GET operation. The implementation of this interface sends OBEX
 * packets as they are built. If during the operation the peer in the operation
 * ends the operation, an IOException is thrown on the next read
 * from the input stream, write to the output stream, or call to
 * sendHeaders().
 * 

* Definition of methods inherited from ContentConnection * *

* getEncoding() will always return null.
* getLength() will return the length specified by the OBEX Length * header or -1 if the OBEX Length header was not included.
* getType() will return the value specified in the OBEX Type * header or null if the OBEX Type header was not included.
*

* How Headers are Handled *

* As headers are received, they may be retrieved through the * getReceivedHeaders() method. If new headers are set during the * operation, the new headers will be sent during the next packet exchange. *

* PUT example *

*

 * void putObjectViaOBEX(ClientSession conn, HeaderSet head, byte[] obj) throws IOException {
 *     // Include the length header
 *     head.setHeader(head.LENGTH, new Long(obj.length));
 *     // Initiate the PUT request
 *     Operation op = conn.put(head);
 *     // Open the output stream to put the object to it
 *     DataOutputStream out = op.openDataOutputStream();
 *     // Send the object to the server
 *     out.write(obj);
 *     // End the transaction
 *     out.close();
 *     op.close();
 * }
 * 
*

* GET example *

*

 * byte[] getObjectViaOBEX(ClientSession conn, HeaderSet head) throws IOException {
 *     // Send the initial GET request to the server
 *     Operation op = conn.get(head);
 *     // Retrieve the length of the object being sent back
 *     int length = op.getLength();
 *     // Create space for the object
 *     byte[] obj = new byte[length];
 *     // Get the object from the input stream
 *     DataInputStream in = trans.openDataInputStream();
 *     in.read(obj);
 *     // End the transaction
 *     in.close();
 *     op.close();
 *     return obj;
 * }
 * 
* *

Client PUT Operation Flow

For PUT operations, a call to * close() the OutputStream returned from * openOutputStream() or openDataOutputStream() will * signal that the request is done. (In OBEX terms, the End-Of-Body header * should be sent and the final bit in the request will be set.) At this point, * the reply from the server may begin to be processed. A call to * getResponseCode() will do an implicit close on the * OutputStream and therefore signal that the request is done. *

Client GET Operation Flow

For GET operation, a call to * openInputStream() or openDataInputStream() will * signal that the request is done. (In OBEX terms, the final bit in the request * will be set.) A call to getResponseCode() will cause an implicit * close on the InputStream. No further data may be read at this * point. * @hide */ public interface Operation { /** * Sends an ABORT message to the server. By calling this method, the * corresponding input and output streams will be closed along with this * object. No headers are sent in the abort request. This will end the * operation since close() will be called by this method. * @throws IOException if the transaction has already ended or if an OBEX * server calls this method */ void abort() throws IOException; /** * Returns the headers that have been received during the operation. * Modifying the object returned has no effect on the headers that are sent * or retrieved. * @return the headers received during this Operation * @throws IOException if this Operation has been closed */ HeaderSet getReceivedHeader() throws IOException; /** * Specifies the headers that should be sent in the next OBEX message that * is sent. * @param headers the headers to send in the next message * @throws IOException if this Operation has been closed or the * transaction has ended and no further messages will be exchanged * @throws IllegalArgumentException if headers was not created * by a call to ServerRequestHandler.createHeaderSet() * or ClientSession.createHeaderSet() * @throws NullPointerException if headers if null */ void sendHeaders(HeaderSet headers) throws IOException; /** * Returns the response code received from the server. Response codes are * defined in the ResponseCodes class. * @see ResponseCodes * @return the response code retrieved from the server * @throws IOException if an error occurred in the transport layer during * the transaction; if this object was created by an OBEX server */ int getResponseCode() throws IOException; String getEncoding(); long getLength(); int getHeaderLength(); String getType(); InputStream openInputStream() throws IOException; DataInputStream openDataInputStream() throws IOException; OutputStream openOutputStream() throws IOException; DataOutputStream openDataOutputStream() throws IOException; void close() throws IOException; int getMaxPacketSize(); public void noBodyHeader(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy