am ef1c48d6: Merge "Make the prefetcher read packets from the network after a keep-alive timeout expires regardless of whether its currently actively fetching data or not." into gingerbread
Merge commit 'ef1c48d6a976f56bf7f7a41a5b2e8725af988362' into gingerbread-plus-aosp * commit 'ef1c48d6a976f56bf7f7a41a5b2e8725af988362': Make the prefetcher read packets from the network after a keep-alive timeout expires regardless of whether its currently actively fetching data or not.
This commit is contained in:
@@ -178,7 +178,8 @@ NuCachedSource2::NuCachedSource2(const sp<DataSource> &source)
|
||||
mCacheOffset(0),
|
||||
mFinalStatus(OK),
|
||||
mLastAccessPos(0),
|
||||
mFetching(true) {
|
||||
mFetching(true),
|
||||
mLastFetchTimeUs(-1) {
|
||||
mLooper->registerHandler(mReflector);
|
||||
mLooper->start();
|
||||
|
||||
@@ -259,10 +260,21 @@ void NuCachedSource2::onFetch() {
|
||||
mFetching = false;
|
||||
}
|
||||
|
||||
if (mFetching) {
|
||||
bool keepAlive =
|
||||
!mFetching
|
||||
&& mFinalStatus == OK
|
||||
&& ALooper::GetNowUs() >= mLastFetchTimeUs + kKeepAliveIntervalUs;
|
||||
|
||||
if (mFetching || keepAlive) {
|
||||
if (keepAlive) {
|
||||
LOG(INFO) << "Keep alive";
|
||||
}
|
||||
|
||||
fetchInternal();
|
||||
|
||||
if (mCache->totalSize() >= kHighWaterThreshold) {
|
||||
mLastFetchTimeUs = ALooper::GetNowUs();
|
||||
|
||||
if (mFetching && mCache->totalSize() >= kHighWaterThreshold) {
|
||||
LOG(INFO) << "Cache full, done prefetching for now";
|
||||
mFetching = false;
|
||||
}
|
||||
|
||||
@@ -49,9 +49,13 @@ private:
|
||||
friend struct AHandlerReflector<NuCachedSource2>;
|
||||
|
||||
enum {
|
||||
kPageSize = 16384,
|
||||
kHighWaterThreshold = 3 * 1024 * 1024,
|
||||
kLowWaterThreshold = 512 * 1024,
|
||||
kPageSize = 16384,
|
||||
kHighWaterThreshold = 3 * 1024 * 1024,
|
||||
kLowWaterThreshold = 512 * 1024,
|
||||
|
||||
// Read data after a 15 sec timeout whether we're actively
|
||||
// fetching or not.
|
||||
kKeepAliveIntervalUs = 15000000,
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -73,6 +77,7 @@ private:
|
||||
off_t mLastAccessPos;
|
||||
sp<AMessage> mAsyncResult;
|
||||
bool mFetching;
|
||||
int64_t mLastFetchTimeUs;
|
||||
|
||||
void onMessageReceived(const sp<AMessage> &msg);
|
||||
void onFetch();
|
||||
|
||||
Reference in New Issue
Block a user