diff options
author | Baili Feng <bailif@codeaurora.org> | 2017-06-13 15:26:57 +0800 |
---|---|---|
committer | Baili Feng <bailif@codeaurora.org> | 2017-06-21 10:31:03 +0800 |
commit | c0a300ca3aa72e91a03487d5c516854ea5d758cf (patch) | |
tree | 447e01b83f2d61c87b69e8a29fda254a5cf77050 /location/LocationAPIClientBase.h | |
parent | 1f3ac891ae0aee10a2415da7539d58e239cacf92 (diff) | |
download | gps-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.h | 18 |
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; |