Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ef1c48d6 authored by Andreas Huber's avatar Andreas Huber Committed by Android (Google) Code Review
Browse files

Merge "Make the prefetcher read packets from the network after a keep-alive...

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
parents 8a42f881 a4867540
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -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;
        }
+8 −3
Original line number Diff line number Diff line
@@ -52,6 +52,10 @@ private:
        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();