def getContentResolver_query(self, uri, projection, selection, selectionArgs, sortOrder): request = content_provider_pb2.Request() uuid = str(uuid.uuid1()) request.uuid = uuid request.method = content_provider_pb2.Request.query request.uri = uri request.projection = projection request.selectionArgs.append(selectionArgs) request.sortOrder = sortOrder _data = request.SerializeToString() cond = threading.Condition() self.proxy_set[uuid] = cond cond.acquire() self.send_int(self.client, self.CONTENT_PROVIDER_RESPONSE) self.send(self.client, _data) cond.wait() cond.release() self.proxy_set.pop(uuid) response = self.result_set.pop(uuid) status = response.status if status != content_provider_pb2.Response.Ok: return None cursor = Cursor(uuid, self) return cursor
def handle_content_provider_request(self, pb): #pdb.set_trace() request = content_provider_pb2.Request() request.ParseFromString(pb) uuid = request.uuid contentprovider = self.contentprovider_set.get(request.uri) response = content_provider_pb2.Response() response.uuid = uuid response.status = content_provider_pb2.Response.Ok if contentprovider == None: response.status = content_provider_pb2.Response.UriNotFound _data = response.SerializeToString() self.send_int(self.client, self.CONTENT_PROVIDER_RESPONSE) self.send(self.client, _data) return _method = request.method uri = request.uri selection = request.selection selectionArgs = request.selectionArgs values = request.values projection = request.projection sortOrder = request.sortOrder if _method == content_provider_pb2.Request.delete: result = contentprovider.delete(uri, selection, selectionArgs) response.intResult = result elif _method == content_provider_pb2.Request.getType: result = contentprovider.getType(uri) response.stringResult = result elif _method == content_provider_pb2.Request.insert: result = contentprovider.insert(uri, values) response.stringResult = result elif _method == content_provider_pb2.Request.query: cursor = contentprovider.query(uri, projection, selection, selectionArgs, sortOrder) if cursor == None: response.status = content_provider_pb2.Response.MethodNotFound else: self.proxy_set[uuid] = cursor elif _method == content_provider_pb2.Request.update: result = contentprovider.update(uri, values, selection, selectionArgs) response.intResult = result else: response.status = content_provider_pb2.Response.MethodNotFound _data = response.SerializeToString() self.send_int(self.client, self.CONTENT_PROVIDER_RESPONSE) self.send(self.client, _data)
def getContentResolver_getType(self, uri): request = content_provider_pb2.Request() uuid = str(uuid.uuid1()) request.uuid = uuid request.method = content_provider_pb2.Request.getType request.uri = uri _data = request.SerializeToString() cond = threading.Condition() self.proxy_set[uuid] = cond cond.acquire() self.send_int(self.client, self.CONTENT_PROVIDER_RESPONSE) self.send(self.client, _data) cond.wait() cond.release() self.proxy_set.pop(uuid) response = self.result_set.pop(uuid) status = response.status if status != content_provider_pb2.Response.Ok: return None return response.stringResult
def getContentResolver_update(self, values, selection, selectionArgs): request = content_provider_pb2.Request() uuid = str(uuid.uuid1()) request.uuid = uuid request.method = content_provider_pb2.Request.update request.uri = uri request.values.update(values) request.selection = selection request.selectionArgs.append(selectionArgs) _data = request.SerializeToString() cond = threading.Condition() self.proxy_set[uuid] = cond cond.acquire() self.send_int(self.client, self.CONTENT_PROVIDER_RESPONSE) self.send(self.client, _data) cond.wait() cond.release() self.proxy_set.pop(uuid) response = self.result_set.pop(uuid) status = response.status if status != content_provider_pb2.Response.Ok: return 0 return response.intResult