summaryrefslogtreecommitdiff
path: root/location/LocationAPIClientBase.h
diff options
context:
space:
mode:
authorBaili Feng <bailif@codeaurora.org>2017-06-13 15:26:57 +0800
committerBaili Feng <bailif@codeaurora.org>2017-06-21 10:31:03 +0800
commitc0a300ca3aa72e91a03487d5c516854ea5d758cf (patch)
tree447e01b83f2d61c87b69e8a29fda254a5cf77050 /location/LocationAPIClientBase.h
parent1f3ac891ae0aee10a2415da7539d58e239cacf92 (diff)
downloadgps-c0a300ca3aa72e91a03487d5c516854ea5d758cf.tar.gz
Reset RequestQueue instead of delete it.
Change the type of mRequestQueue from 'array of pointers' to 'array of instances'. So we can reuse them. CRs-fixed: 2050837 Change-Id: I362319ece38cf10ee7ae2278a89249ce97e2f0a5
Diffstat (limited to 'location/LocationAPIClientBase.h')
-rw-r--r--location/LocationAPIClientBase.h18
1 files changed, 10 insertions, 8 deletions
diff --git a/location/LocationAPIClientBase.h b/location/LocationAPIClientBase.h
index 0805d7c..144f99c 100644
--- a/location/LocationAPIClientBase.h
+++ b/location/LocationAPIClientBase.h
@@ -159,7 +159,7 @@ private:
BiDict() {
pthread_mutex_init(&mBiDictMutex, nullptr);
}
- ~BiDict() {
+ virtual ~BiDict() {
pthread_mutex_destroy(&mBiDictMutex);
}
bool hasId(uint32_t id) {
@@ -249,9 +249,9 @@ private:
public:
LocationAPIRequest(LocationAPIClientBase& API) : mAPI(API) {}
virtual ~LocationAPIRequest() {}
- virtual void onResponse(LocationError /*error*/) {};
+ virtual void onResponse(LocationError /*error*/) {}
virtual void onCollectiveResponse(
- size_t /*count*/, LocationError* /*errors*/, uint32_t* /*ids*/) {};
+ size_t /*count*/, LocationError* /*errors*/, uint32_t* /*ids*/) {}
LocationAPIClientBase& mAPI;
};
@@ -419,15 +419,19 @@ private:
class RequestQueue {
public:
- RequestQueue(uint32_t session): mSession(session) {
+ RequestQueue(): mSession(0) {
}
- ~RequestQueue() {
+ virtual ~RequestQueue() {
+ reset(0);
+ }
+ void reset(uint32_t session) {
LocationAPIRequest* request = nullptr;
while (!mQueue.empty()) {
request = mQueue.front();
mQueue.pop();
delete request;
}
+ mSession = session;
}
void push(LocationAPIRequest* request) {
mQueue.push(request);
@@ -451,15 +455,13 @@ private:
private:
pthread_mutex_t mMutex;
- trackingCallback mTrackingCallback;
- batchingCallback mBatchingCallback;
geofenceBreachCallback mGeofenceBreachCallback;
LocationAPI* mLocationAPI;
LocationControlAPI* mLocationControlAPI;
+ RequestQueue mRequestQueues[REQUEST_MAX];
BiDict mGeofenceBiDict;
- RequestQueue* mRequestQueues[REQUEST_MAX];
std::map<uint32_t, SessionEntity> mSessionMap;
int32_t mBatchSize;
bool mEnabled;