summaryrefslogtreecommitdiffstats
path: root/libs/storage
diff options
context:
space:
mode:
authorKenny Root <kroot@google.com>2010-10-08 09:21:39 -0700
committerKenny Root <kroot@google.com>2010-10-11 17:22:03 -0700
commitaf9d667ccf3e24058214cf4cc0a8aa8bc5100e3c (patch)
treec59adbe6d27cf236d6920f689dd237a115fef3f9 /libs/storage
parentce2f1909c74a1b90995f06a865d21260b062300b (diff)
downloadframeworks_base-af9d667ccf3e24058214cf4cc0a8aa8bc5100e3c.zip
frameworks_base-af9d667ccf3e24058214cf4cc0a8aa8bc5100e3c.tar.gz
frameworks_base-af9d667ccf3e24058214cf4cc0a8aa8bc5100e3c.tar.bz2
OBB: rearrange to be entirely asynchronous
Rearrange structure of MountService handling of OBBs to be entirely asynchronous so we don't rely on locking as much. We still need the locking to support dumpsys which has been improved to output all the data structures for OBBs. Added more tests to cover more of the error return codes. Oh and fix a logic inversion bug. Change-Id: I34f541192dbbb1903b24825889b8fa8f43e6e2a9
Diffstat (limited to 'libs/storage')
-rw-r--r--libs/storage/IMountService.cpp5
-rw-r--r--libs/storage/IObbActionListener.cpp7
2 files changed, 7 insertions, 5 deletions
diff --git a/libs/storage/IMountService.cpp b/libs/storage/IMountService.cpp
index 3ad9319..f36e2a3 100644
--- a/libs/storage/IMountService.cpp
+++ b/libs/storage/IMountService.cpp
@@ -430,13 +430,14 @@ public:
}
void mountObb(const String16& filename, const String16& key,
- const sp<IObbActionListener>& token)
+ const sp<IObbActionListener>& token, int32_t nonce)
{
Parcel data, reply;
data.writeInterfaceToken(IMountService::getInterfaceDescriptor());
data.writeString16(filename);
data.writeString16(key);
data.writeStrongBinder(token->asBinder());
+ data.writeInt32(nonce);
if (remote()->transact(TRANSACTION_mountObb, data, &reply) != NO_ERROR) {
LOGD("mountObb could not contact remote\n");
return;
@@ -448,7 +449,7 @@ public:
}
}
- void unmountObb(const String16& filename, const bool force, const sp<IObbActionListener>& token)
+ void unmountObb(const String16& filename, const bool force)
{
Parcel data, reply;
data.writeInterfaceToken(IMountService::getInterfaceDescriptor());
diff --git a/libs/storage/IObbActionListener.cpp b/libs/storage/IObbActionListener.cpp
index 5bfece7..eaa211e 100644
--- a/libs/storage/IObbActionListener.cpp
+++ b/libs/storage/IObbActionListener.cpp
@@ -30,7 +30,7 @@ public:
: BpInterface<IObbActionListener>(impl)
{ }
- virtual void onObbResult(const String16& filename, const String16& status) { }
+ virtual void onObbResult(const String16& filename, const int32_t nonce, const int32_t state) { }
};
IMPLEMENT_META_INTERFACE(ObbActionListener, "IObbActionListener");
@@ -44,8 +44,9 @@ status_t BnObbActionListener::onTransact(
case TRANSACTION_onObbResult: {
CHECK_INTERFACE(IObbActionListener, data, reply);
String16 filename = data.readString16();
- String16 state = data.readString16();
- onObbResult(filename, state);
+ int32_t nonce = data.readInt32();
+ int32_t state = data.readInt32();
+ onObbResult(filename, nonce, state);
reply->writeNoException();
return NO_ERROR;
} break;