MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / chunkReceived

Method chunkReceived

Engine/source/sim/netDownload.cpp:229–273  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

227
228
229void NetConnection::chunkReceived(U8 *chunkData, U32 chunkLen)
230{
231 if(chunkLen == 0)
232 {
233 // the server didn't have the file... apparently it's one we don't need...
234 dFree(mCurrentFileBuffer);
235 mCurrentFileBuffer = NULL;
236 dFree(mMissingFileList[0]);
237 mMissingFileList.pop_front();
238 return;
239 }
240 if(chunkLen + mCurrentFileBufferOffset > mCurrentFileBufferSize)
241 {
242 setLastError("Invalid file chunk from server.");
243 return;
244 }
245 dMemcpy(((U8 *) mCurrentFileBuffer) + mCurrentFileBufferOffset, chunkData, chunkLen);
246 mCurrentFileBufferOffset += chunkLen;
247 if(mCurrentFileBufferOffset == mCurrentFileBufferSize)
248 {
249 // this file's done...
250 // save it to disk:
251 FileStream *stream;
252
253 Con::printf("Saving file %s.", mMissingFileList[0]);
254 if((stream = FileStream::createAndOpen( mMissingFileList[0], Torque::FS::File::Write )) == NULL)
255 {
256 setLastError("Couldn't open file downloaded by server.");
257 return;
258 }
259
260 dFree(mMissingFileList[0]);
261 mMissingFileList.pop_front();
262 stream->write(mCurrentFileBufferSize, mCurrentFileBuffer);
263 delete stream;
264 mNumDownloadedFiles++;
265 dFree(mCurrentFileBuffer);
266 mCurrentFileBuffer = NULL;
267 sendNextFileDownloadRequest();
268 }
269 else
270 {
271 Con::executef("onFileChunkReceived", mMissingFileList[0], Con::getIntArg(mCurrentFileBufferOffset), Con::getIntArg(mCurrentFileBufferSize));
272 }
273}
274

Callers 1

processMethod · 0.80

Calls 7

printfFunction · 0.85
executefFunction · 0.85
getIntArgFunction · 0.85
dFreeFunction · 0.50
dMemcpyFunction · 0.50
pop_frontMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected