Loading obex/javax/obex/ClientOperation.java +8 −2 Original line number Diff line number Diff line Loading @@ -269,7 +269,7 @@ public final class ClientOperation implements Operation, BaseStream { if (mPrivateOutput == null) { // there are 3 bytes operation headers and 3 bytes body headers // mPrivateOutput = new PrivateOutputStream(this, mMaxPacketSize - 6); mPrivateOutput = new PrivateOutputStream(this, getMaxPacketSize()); } mPrivateOutputOpen = true; Loading @@ -278,7 +278,13 @@ public final class ClientOperation implements Operation, BaseStream { } public int getMaxPacketSize() { return mMaxPacketSize - 6; return mMaxPacketSize - 6 - getHeaderLength(); } public int getHeaderLength() { // OPP may need it byte[] headerArray = ObexHelper.createHeader(mRequestHeader, false); return headerArray.length; } /** Loading obex/javax/obex/Operation.java +2 −0 Original line number Diff line number Diff line Loading @@ -163,6 +163,8 @@ public interface Operation { long getLength(); int getHeaderLength(); String getType(); InputStream openInputStream() throws IOException; Loading obex/javax/obex/ServerOperation.java +42 −16 Original line number Diff line number Diff line Loading @@ -124,12 +124,6 @@ public final class ServerOperation implements Operation, BaseStream { * It is a PUT request. */ mGetOperation = false; } else { /* * It is a GET request. */ mGetOperation = true; } /* * Determine if the final bit is set Loading @@ -140,6 +134,21 @@ public final class ServerOperation implements Operation, BaseStream { finalBitSet = true; mRequestFinished = true; } } else if ((request == 0x03) || (request == 0x83)) { /* * It is a GET request. */ mGetOperation = true; // For Get request, final bit set is decided by server side logic finalBitSet = false; if (request == 0x83) { mRequestFinished = true; } } else { throw new IOException("ServerOperation can not handle such request"); } int length = in.read(); length = (length << 8) + in.read(); Loading Loading @@ -216,12 +225,9 @@ public final class ServerOperation implements Operation, BaseStream { } // wait for get request finished !!!! while (mGetOperation && !finalBitSet) { while (mGetOperation && !mRequestFinished) { sendReply(ResponseCodes.OBEX_HTTP_CONTINUE); } if (finalBitSet && mGetOperation) { mRequestFinished = true; } } public boolean isValidBody() { Loading Loading @@ -333,6 +339,12 @@ public final class ServerOperation implements Operation, BaseStream { out.write(headerArray); } // For Get operation: if response code is OBEX_HTTP_OK, then this is the // last packet; so set finalBitSet to true. if (mGetOperation && type == ResponseCodes.OBEX_HTTP_OK) { finalBitSet = true; } if ((finalBitSet) || (headerArray.length < (mMaxPacketLength - 20))) { if (bodyLength > 0) { /* Loading Loading @@ -410,9 +422,10 @@ public final class ServerOperation implements Operation, BaseStream { } } else { if ((headerID == ObexHelper.OBEX_OPCODE_PUT_FINAL) || (headerID == ObexHelper.OBEX_OPCODE_GET_FINAL)) { if ((headerID == ObexHelper.OBEX_OPCODE_PUT_FINAL)) { finalBitSet = true; } else if (headerID == ObexHelper.OBEX_OPCODE_GET_FINAL) { mRequestFinished = true; } /* Loading Loading @@ -584,7 +597,20 @@ public final class ServerOperation implements Operation, BaseStream { } public int getMaxPacketSize() { return mMaxPacketLength - 6; return mMaxPacketLength - 6 - getHeaderLength(); } public int getHeaderLength() { long id = mListener.getConnectionId(); if (id == -1) { replyHeader.mConnectionID = null; } else { replyHeader.mConnectionID = ObexHelper.convertToByteArray(id); } byte[] headerArray = ObexHelper.createHeader(replyHeader, false); return headerArray.length; } /** Loading Loading @@ -623,7 +649,7 @@ public final class ServerOperation implements Operation, BaseStream { } if (mPrivateOutput == null) { mPrivateOutput = new PrivateOutputStream(this, mMaxPacketLength - 6); mPrivateOutput = new PrivateOutputStream(this, getMaxPacketSize()); } mPrivateOutputOpen = true; return mPrivateOutput; Loading Loading
obex/javax/obex/ClientOperation.java +8 −2 Original line number Diff line number Diff line Loading @@ -269,7 +269,7 @@ public final class ClientOperation implements Operation, BaseStream { if (mPrivateOutput == null) { // there are 3 bytes operation headers and 3 bytes body headers // mPrivateOutput = new PrivateOutputStream(this, mMaxPacketSize - 6); mPrivateOutput = new PrivateOutputStream(this, getMaxPacketSize()); } mPrivateOutputOpen = true; Loading @@ -278,7 +278,13 @@ public final class ClientOperation implements Operation, BaseStream { } public int getMaxPacketSize() { return mMaxPacketSize - 6; return mMaxPacketSize - 6 - getHeaderLength(); } public int getHeaderLength() { // OPP may need it byte[] headerArray = ObexHelper.createHeader(mRequestHeader, false); return headerArray.length; } /** Loading
obex/javax/obex/Operation.java +2 −0 Original line number Diff line number Diff line Loading @@ -163,6 +163,8 @@ public interface Operation { long getLength(); int getHeaderLength(); String getType(); InputStream openInputStream() throws IOException; Loading
obex/javax/obex/ServerOperation.java +42 −16 Original line number Diff line number Diff line Loading @@ -124,12 +124,6 @@ public final class ServerOperation implements Operation, BaseStream { * It is a PUT request. */ mGetOperation = false; } else { /* * It is a GET request. */ mGetOperation = true; } /* * Determine if the final bit is set Loading @@ -140,6 +134,21 @@ public final class ServerOperation implements Operation, BaseStream { finalBitSet = true; mRequestFinished = true; } } else if ((request == 0x03) || (request == 0x83)) { /* * It is a GET request. */ mGetOperation = true; // For Get request, final bit set is decided by server side logic finalBitSet = false; if (request == 0x83) { mRequestFinished = true; } } else { throw new IOException("ServerOperation can not handle such request"); } int length = in.read(); length = (length << 8) + in.read(); Loading Loading @@ -216,12 +225,9 @@ public final class ServerOperation implements Operation, BaseStream { } // wait for get request finished !!!! while (mGetOperation && !finalBitSet) { while (mGetOperation && !mRequestFinished) { sendReply(ResponseCodes.OBEX_HTTP_CONTINUE); } if (finalBitSet && mGetOperation) { mRequestFinished = true; } } public boolean isValidBody() { Loading Loading @@ -333,6 +339,12 @@ public final class ServerOperation implements Operation, BaseStream { out.write(headerArray); } // For Get operation: if response code is OBEX_HTTP_OK, then this is the // last packet; so set finalBitSet to true. if (mGetOperation && type == ResponseCodes.OBEX_HTTP_OK) { finalBitSet = true; } if ((finalBitSet) || (headerArray.length < (mMaxPacketLength - 20))) { if (bodyLength > 0) { /* Loading Loading @@ -410,9 +422,10 @@ public final class ServerOperation implements Operation, BaseStream { } } else { if ((headerID == ObexHelper.OBEX_OPCODE_PUT_FINAL) || (headerID == ObexHelper.OBEX_OPCODE_GET_FINAL)) { if ((headerID == ObexHelper.OBEX_OPCODE_PUT_FINAL)) { finalBitSet = true; } else if (headerID == ObexHelper.OBEX_OPCODE_GET_FINAL) { mRequestFinished = true; } /* Loading Loading @@ -584,7 +597,20 @@ public final class ServerOperation implements Operation, BaseStream { } public int getMaxPacketSize() { return mMaxPacketLength - 6; return mMaxPacketLength - 6 - getHeaderLength(); } public int getHeaderLength() { long id = mListener.getConnectionId(); if (id == -1) { replyHeader.mConnectionID = null; } else { replyHeader.mConnectionID = ObexHelper.convertToByteArray(id); } byte[] headerArray = ObexHelper.createHeader(replyHeader, false); return headerArray.length; } /** Loading Loading @@ -623,7 +649,7 @@ public final class ServerOperation implements Operation, BaseStream { } if (mPrivateOutput == null) { mPrivateOutput = new PrivateOutputStream(this, mMaxPacketLength - 6); mPrivateOutput = new PrivateOutputStream(this, getMaxPacketSize()); } mPrivateOutputOpen = true; return mPrivateOutput; Loading