From 8258ebdf128ef70a96fcaaa294167e39f1b5e94e Mon Sep 17 00:00:00 2001 From: Lixin Yue Date: Tue, 2 Mar 2010 17:21:09 +0800 Subject: Add ABORT support to Obex lib --- obex/javax/obex/ServerRequestHandler.java | 7 +++++++ obex/javax/obex/ServerSession.java | 32 +++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) (limited to 'obex') diff --git a/obex/javax/obex/ServerRequestHandler.java b/obex/javax/obex/ServerRequestHandler.java index d93e5b6..0882572 100644 --- a/obex/javax/obex/ServerRequestHandler.java +++ b/obex/javax/obex/ServerRequestHandler.java @@ -197,6 +197,13 @@ public class ServerRequestHandler { } /** + * Called when a ABORT request is received. + */ + public int onAbort(HeaderSet request, HeaderSet reply) { + return ResponseCodes.OBEX_HTTP_NOT_IMPLEMENTED; + } + + /** * Called when a PUT request is received. *

* If this method is not implemented by the class that extends this class, diff --git a/obex/javax/obex/ServerSession.java b/obex/javax/obex/ServerSession.java index 503d440..a4b9759 100644 --- a/obex/javax/obex/ServerSession.java +++ b/obex/javax/obex/ServerSession.java @@ -115,6 +115,9 @@ public final class ServerSession extends ObexSession implements Runnable { case ObexHelper.OBEX_OPCODE_SETPATH: handleSetPathRequest(); break; + case ObexHelper.OBEX_OPCODE_ABORT: + handleAbortRequest(); + break; case -1: done = true; @@ -145,6 +148,35 @@ public final class ServerSession extends ObexSession implements Runnable { } /** + * Handles a ABORT request from a client. This method will read the rest of + * the request from the client. Assuming the request is valid, it will + * create a HeaderSet object to pass to the + * ServerRequestHandler object. After the handler processes the + * request, this method will create a reply message to send to the server. + * + * @throws IOException if an error occurred at the transport layer + */ + private void handleAbortRequest() throws IOException { + int code = ResponseCodes.OBEX_HTTP_OK; + HeaderSet request = new HeaderSet(); + HeaderSet reply = new HeaderSet(); + + int length = mInput.read(); + length = (length << 8) + mInput.read(); + if (length > ObexHelper.MAX_PACKET_SIZE_INT) { + code = ResponseCodes.OBEX_HTTP_REQ_TOO_LARGE; + } else { + for (int i = 3; i < length; i++) { + mInput.read(); + } + code = mListener.onAbort(request, reply); + Log.v(TAG, "onAbort request handler return value- " + code); + code = validateResponseCode(code); + } + sendResponse(code, null); + } + + /** * Handles a PUT request from a client. This method will provide a * ServerOperation object to the request handler. The * ServerOperation object will handle the rest of the request. -- cgit v1.1