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); }
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; } }
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); }
/** * 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); } }
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; } }