Exemplo n.º 1
0
void HighLevelReaderThatReadsChunks::finishedDownloadingChunkedData()
{
    // Allocate big handle and copy the chunks to it.
    // mContentLength holds the accumulated size of read data.
    // We create a new placeholder here, not using the pool.
    // TODO: Consider using PlaceholderPool also for this handle.
    MAHandle dataHandle = maCreatePlaceholder();
    int errorCode = maCreateData(dataHandle, mContentLength);
    if (RES_OUT_OF_MEMORY == errorCode)
    {
        mConnection->downloadError(RES_OUT_OF_MEMORY);
        return;
    }

    // Copy chunks to the data object.
    int offset = 0;
    char* buf = new char[mDataChunkSize];
    while (0 < mDataChunks.size())
    {
        // Last chunk should only be partially written.
        int dataLeftToWrite = mContentLength - offset;

        // Set size to min(dataLeftToWrite, mDataChunkSize)
        int size = (dataLeftToWrite < mDataChunkSize
                    ? dataLeftToWrite : mDataChunkSize);

        // Copy first remaining chunk.
        MAHandle chunk = mDataChunks[0];
        maReadData(chunk, buf, 0, size);
        maWriteData(dataHandle, buf, offset, size);

        // Return chunk to pool.
        DeallocateHandle(chunk);

        // Remove chunk from list.
        mDataChunks.remove(0);

        // Increment offset.
        offset += mDataChunkSize;
    }
    delete[] buf;

    // Download is finished! Tell the connection about this.
    mConnection->downloadSuccess(dataHandle);
}
Exemplo n.º 2
0
void ImageCache::connRecvFinished(MAUtil::Connection* conn, int result) {
	if (result >= 0) {
		mDataOffset += result;

		if((mContentLength - mDataOffset)>=0)
		{
			maWriteData(mData, mBuffer, mDataOffset-result, result);
			mHttp.recv(mBuffer, 1024);
		}
	} else if(result == CONNERR_CLOSED) {
		mContentLength = 0;
		finishedDownloading();
		//mHttp.close();
		mIsBusy = false;
	} else {
		mIsBusy = false;
	}
}
Exemplo n.º 3
0
	void testPlaceHolder() {
		maCreateData(RES_PLACEHOLDER, 16);

		assert("maGetDataSize", (maGetDataSize(RES_PLACEHOLDER) == 16));

		for(int i = 0; i < 4; i++)
			maWriteData(RES_PLACEHOLDER, &i, i*4, 4);

		bool failed = false;

		for(int i = 0; i < 4; i++) {
			int dest;
			maReadData(RES_PLACEHOLDER, &dest, i*4, 4);
			if(dest != i) {
				failed = true;
				break;
			}
		}
		assert("Placeholder test", !failed);

	}
Exemplo n.º 4
0
/**
 * Used for Android only.
 * Stores the registration ID in a store for later use.
 * @param token The registration_ID.
 */
void MainScreen::storeRegistrationID(MAUtil::String* token)
{
	mToken = token;

	// Store doesn't exist.
	MAHandle myStore = maOpenStore("MyPushStore", MAS_CREATE_IF_NECESSARY);

	// Create store and write Registration ID
	MAHandle myData = maCreatePlaceholder();
	if(maCreateData(myData, token->length()) == RES_OK)
	{
		 maWriteData(myData, token->c_str(), 0, token->length());
		 // Write the data resource to the store.
		 int result = maWriteStore(myStore, myData);

		 if ( result < 0 )
		 {
			 printf("Cannot write to store the token!!");
		 }
		 maCloseStore(myStore, 0);
	}

}
Exemplo n.º 5
0
void ImageCache::connRecvFinished(MAUtil::Connection* conn, int result) {
	if (result >= 0) {
		mDataOffset += result;
		double val = (double)((double)mDataOffset/(double)mContentLength)*100;

		if (mNextRequest->getImage() != NULL) {
			if (mNextRequest->getType() == 0) {
				//normal loading
			} else if ((mNextRequest->getType() == 3)||(mNextRequest->getType() == 4)) {
				if (val <= 5.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP1));
				} else if (val <= 11) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP2));
				} else if (val <= 16.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP3));
				} else if (val <= 22) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP4));
				} else if (val <= 27.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP5));
				} else if (val <= 33) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP6));
				} else if (val <= 38.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP7));
				} else if (val <= 44) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP8));
				} else if (val <= 49.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP9));
				} else if (val <= 55) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP10));
				} else if (val <= 60.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP11));
				} else if (val <= 66) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP12));
				} else if (val <= 71.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP13));
				} else if (val <= 77) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP14));
				} else if (val <= 82.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP15));
				} else if (val <= 88) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP16));
				} else if (val <= 93.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP17));
				} else if (val <= 99) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING_FLIP18));
				}
				mNextRequest->getImage()->requestRepaint();
			} else if ((mNextRequest->getType() == 1)||(mNextRequest->getType() == 2)) {
				if (val <= 5.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING1));
				} else if (val <= 11) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING2));
				} else if (val <= 16.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING3));
				} else if (val <= 22) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING4));
				} else if (val <= 27.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING5));
				} else if (val <= 33) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING6));
				} else if (val <= 38.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING7));
				} else if (val <= 44) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING8));
				} else if (val <= 49.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING9));
				} else if (val <= 55) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING10));
				} else if (val <= 60.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING11));
				} else if (val <= 66) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING12));
				} else if (val <= 71.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING13));
				} else if (val <= 77) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING14));
				} else if (val <= 82.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING15));
				} else if (val <= 88) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING16));
				} else if (val <= 93.5) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING17));
				} else if (val <= 99) {
					maDestroyObject(mNextRequest->getImage()->getResource());
					mNextRequest->getImage()->setResource(Util::loadImageFromResource(RES_LOADING18));
				}
				mNextRequest->getImage()->requestRepaint();
			}
		}

		if((mContentLength - mDataOffset)>=0)
		{
			maWriteData(mData, mBuffer, mDataOffset-result, result);
			mHttp.recv(mBuffer, READSIZE);
		}
	} else if(result == CONNERR_CLOSED) {
		mContentLength = 0;
		finishedDownloading();
		mIsBusy = false;
	} else {
		mIsBusy = false;
	}
}