void Client::setResponseContentLength(Transaction& trans, std::iostream& os) { os.seekg(0, std::ios::end); int os_length = os.tellg(); os_length--; os.seekg(0, std::ios::beg); trans.getResponse().getHeaders().setValue("CONTENT-LENGTH", inttostr(os_length)); }
bool ResourceManager::saveFile(const std::string& fileName, std::iostream& in) { std::streampos oldPos = in.tellg(); in.seekg(0, std::ios::end); std::streampos size = in.tellg(); in.seekg(0, std::ios::beg); std::vector<char> buffer(size); in.read(&buffer[0], size); bool ret = saveFile(fileName, (const uchar*)&buffer[0], size); in.seekg(oldPos, std::ios::beg); return ret; }
void ResourceManager::loadFile(const std::string& fileName, std::iostream& out) { out.clear(std::ios::goodbit); if(m_hasSearchPath) { std::string fullPath = resolvePath(fileName); PHYSFS_file* file = PHYSFS_openRead(fullPath.c_str()); if(!file) { out.clear(std::ios::failbit); stdext::throw_exception(stdext::format("failed to load file '%s': %s", fullPath.c_str(), PHYSFS_getLastError())); } else { int fileSize = PHYSFS_fileLength(file); if(fileSize > 0) { std::vector<char> buffer(fileSize); PHYSFS_read(file, (void*)&buffer[0], 1, fileSize); out.write(&buffer[0], fileSize); } else out.clear(std::ios::eofbit); PHYSFS_close(file); out.seekg(0, std::ios::beg); } } else { std::ifstream fin(fileName); if(!fin) { out.clear(std::ios::failbit); stdext::throw_exception(stdext::format("failed to load file '%s': %s", fileName.c_str(), PHYSFS_getLastError())); } else { out << fin.rdbuf(); } } }
void FillStream(std::iostream& strm, RawData& expression) { static const std::string s_smallExpression("0123456789abcdefghijklmnopqrstuvwxyz"); static const int iterationsCount = 10; for (int i = 0; i < iterationsCount; ++i) { strm << s_smallExpression; } size_t expressionSize = iterationsCount * s_smallExpression.size(); expression.resize(expressionSize); strm.read(reinterpret_cast<char*>(&expression[0]), expressionSize); strm.seekg(0); }
std::string StringUtilities::GetAsString(std::iostream& i_stream) { int length; char* p_buffer; // get length of file: i_stream.seekg (0, std::iostream::end); length = static_cast<int>(i_stream.tellg()); i_stream.seekg (0, std::iostream::beg); // allocate memory: p_buffer = new char [length]; //write file int pos = 0; while(i_stream.good()) { p_buffer[pos] = i_stream.get(); ++pos; } std::string out(p_buffer, pos); delete[] p_buffer; return out; }