Vault
4.1
|
00001 /* 00002 Copyright c1997-2014 Trygve Isaacson. All rights reserved. 00003 This file is part of the Code Vault version 4.1 00004 http://www.bombaydigital.com/ 00005 License: MIT. See LICENSE.md in the Vault top level directory. 00006 */ 00007 00010 #include "vstreamcopier.h" 00011 #include "vstream.h" 00012 #include "viostream.h" 00013 00014 VStreamCopier::VStreamCopier() 00015 : mChunkSize(0) 00016 , mFrom(NULL) 00017 , mTo(NULL) 00018 , mNumBytesCopied(0) 00019 { 00020 } 00021 00022 VStreamCopier::VStreamCopier(int chunkSize, VStream* from, VStream* to) 00023 : mChunkSize(chunkSize) 00024 , mFrom(from) 00025 , mTo(to) 00026 , mNumBytesCopied(0) 00027 { 00028 } 00029 00030 VStreamCopier::VStreamCopier(int chunkSize, VIOStream* from, VIOStream* to) 00031 : mChunkSize(chunkSize) 00032 , mFrom(&from->getRawStream()) 00033 , mTo(&to->getRawStream()) 00034 , mNumBytesCopied(0) 00035 { 00036 } 00037 00038 VStreamCopier::VStreamCopier(int chunkSize, VStream* from, VIOStream* to) 00039 : mChunkSize(chunkSize) 00040 , mFrom(from) 00041 , mTo(&to->getRawStream()) 00042 , mNumBytesCopied(0) 00043 { 00044 } 00045 00046 VStreamCopier::VStreamCopier(int chunkSize, VIOStream* from, VStream* to) 00047 : mChunkSize(chunkSize) 00048 , mFrom(&from->getRawStream()) 00049 , mTo(to) 00050 , mNumBytesCopied(0) 00051 { 00052 } 00053 00054 void VStreamCopier::init(int chunkSize, VStream* from, VStream* to) { 00055 mChunkSize = chunkSize; 00056 mFrom = from; 00057 mTo = to; 00058 mNumBytesCopied = 0; 00059 } 00060 00061 void VStreamCopier::init(int chunkSize, VIOStream* from, VIOStream* to) { 00062 mChunkSize = chunkSize; 00063 mFrom = &from->getRawStream(); 00064 mTo = &to->getRawStream(); 00065 mNumBytesCopied = 0; 00066 } 00067 00068 void VStreamCopier::init(int chunkSize, VStream* from, VIOStream* to) { 00069 mChunkSize = chunkSize; 00070 mFrom = from; 00071 mTo = &to->getRawStream(); 00072 mNumBytesCopied = 0; 00073 } 00074 00075 void VStreamCopier::init(int chunkSize, VIOStream* from, VStream* to) { 00076 mChunkSize = chunkSize; 00077 mFrom = &from->getRawStream(); 00078 mTo = to; 00079 mNumBytesCopied = 0; 00080 } 00081 00082 bool VStreamCopier::copyChunk() { 00083 Vs64 numBytesToCopy = mChunkSize; 00084 Vs64 theNumBytesCopied = 0; 00085 00086 if ((mFrom != NULL) && (mTo != NULL)) { 00087 theNumBytesCopied = VStream::streamCopy(*mFrom, *mTo, numBytesToCopy); 00088 } 00089 00090 mNumBytesCopied += theNumBytesCopied; 00091 00092 return (theNumBytesCopied == numBytesToCopy); 00093 } 00094 00095 Vs64 VStreamCopier::numBytesCopied() const { 00096 return mNumBytesCopied; 00097 } 00098