本文整理汇总了C++中NPT_InputStreamReference::GetSize方法的典型用法代码示例。如果您正苦于以下问题:C++ NPT_InputStreamReference::GetSize方法的具体用法?C++ NPT_InputStreamReference::GetSize怎么用?C++ NPT_InputStreamReference::GetSize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NPT_InputStreamReference
的用法示例。
在下文中一共展示了NPT_InputStreamReference::GetSize方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: file_stream_ref
/*----------------------------------------------------------------------
| NPT_ZipFile::GetInputStream
+---------------------------------------------------------------------*/
NPT_Result
NPT_ZipFile::GetInputStream(Entry& entry, NPT_InputStreamReference& zip_stream, NPT_InputStream*& file_stream)
{
// default return value
file_stream = NULL;
// we don't support encrypted files
if (entry.m_Flags & NPT_ZIP_FILE_FLAG_ENCRYPTED) {
return NPT_ERROR_NOT_SUPPORTED;
}
// check that we support the compression method
#if NPT_CONFIG_ENABLE_ZIP
if (entry.m_CompressionMethod != NPT_ZIP_FILE_COMPRESSION_METHOD_NONE &&
entry.m_CompressionMethod != NPT_ZIP_FILE_COMPRESSION_METHOD_DEFLATE) {
return NPT_ERROR_NOT_SUPPORTED;
}
#else
if (entry.m_CompressionMethod != NPT_ZIP_FILE_COMPRESSION_METHOD_NONE) {
return NPT_ERROR_NOT_SUPPORTED;
}
#endif
// seek to the start of the file entry
NPT_Result result = zip_stream->Seek(entry.m_RelativeOffset);
if (NPT_FAILED(result)) {
NPT_LOG_WARNING_1("seek failed (%d)", result);
return result;
}
// read the fixed part of the header
unsigned char header[30];
result = zip_stream->ReadFully(header, 30);
if (NPT_FAILED(result)) {
NPT_LOG_WARNING_1("read failed (%d)", result);
return result;
}
NPT_UInt16 file_name_length = NPT_BytesToInt16Le(&header[26]);
NPT_UInt16 extra_field_length = NPT_BytesToInt16Le(&header[28]);
unsigned int header_size = 30+file_name_length+extra_field_length;
NPT_LargeSize zip_stream_size = 0;
zip_stream->GetSize(zip_stream_size);
if (entry.m_RelativeOffset+header_size+entry.m_CompressedSize > zip_stream_size) {
// something's wrong here
return NPT_ERROR_INVALID_FORMAT;
}
file_stream = new NPT_SubInputStream(zip_stream, entry.m_RelativeOffset+header_size, entry.m_CompressedSize);
#if NPT_CONFIG_ENABLE_ZIP
if (entry.m_CompressionMethod == NPT_ZIP_FILE_COMPRESSION_METHOD_DEFLATE) {
NPT_InputStreamReference file_stream_ref(file_stream);
file_stream = new NPT_ZipInflatingInputStream(file_stream_ref, true);
}
#endif
return NPT_SUCCESS;
}
示例2: file
/*----------------------------------------------------------------------
| PLT_FileMediaServer::OnAlbumArtRequest
+---------------------------------------------------------------------*/
NPT_Result
PLT_FileMediaServer::OnAlbumArtRequest(NPT_HttpResponse& response,
NPT_String file_path)
{
NPT_LargeSize total_len;
NPT_File file(file_path);
NPT_InputStreamReference stream;
// prevent hackers from accessing files outside of our root
if ((file_path.Find("/..") >= 0) || (file_path.Find("\\..") >= 0)) {
return NPT_FAILURE;
}
if (NPT_FAILED(file.Open(NPT_FILE_OPEN_MODE_READ)) ||
NPT_FAILED(file.GetInputStream(stream)) ||
NPT_FAILED(stream->GetSize(total_len)) || (total_len == 0)) {
goto filenotfound;
} else {
NPT_String extension = NPT_FilePath::FileExtension(file_path);
if (extension.GetLength() == 0) {
goto filenotfound;
}
PLT_MetadataHandler* metadataHandler = NULL;
char* caData;
int caDataLen;
NPT_Result ret = NPT_ContainerFind(m_MetadataHandlers,
PLT_MetadataHandlerFinder(extension),
metadataHandler);
if (NPT_FAILED(ret) || metadataHandler == NULL) {
goto filenotfound;
}
// load the metadatahandler and read the cover art
if (NPT_FAILED(metadataHandler->Load(*stream)) ||
NPT_FAILED(metadataHandler->GetCoverArtData(caData, caDataLen))) {
goto filenotfound;
}
PLT_HttpHelper::SetContentType(response, "application/octet-stream");
PLT_HttpHelper::SetBody(response, caData, caDataLen);
delete caData;
return NPT_SUCCESS;
}
filenotfound:
response.SetStatus(404, "File Not Found");
return NPT_SUCCESS;
}
示例3: file
/*----------------------------------------------------------------------
| PLT_FileMediaServer::OnAlbumArtRequest
+---------------------------------------------------------------------*/
NPT_Result
PLT_FileMediaServer::OnAlbumArtRequest(NPT_String filepath, NPT_HttpResponse& response)
{
NPT_Size total_len;
NPT_File file(filepath);
NPT_InputStreamReference stream;
if (NPT_FAILED(file.Open(NPT_FILE_OPEN_MODE_READ)) || NPT_FAILED(file.GetInputStream(stream)) ||
NPT_FAILED(stream->GetSize(total_len)) || (total_len == 0)) {
goto filenotfound;
} else {
const char* extension = PLT_MediaItem::GetExtFromFilePath(filepath, m_DirDelimiter);
if (extension == NULL) {
goto filenotfound;
}
PLT_MetadataHandler* metadataHandler = NULL;
char* caData;
int caDataLen;
NPT_Result ret = NPT_ContainerFind(m_MetadataHandlers, PLT_MetadataHandlerFinder(extension), metadataHandler);
if (NPT_FAILED(ret) || metadataHandler == NULL) {
goto filenotfound;
}
// load the metadatahandler and read the cover art
if (NPT_FAILED(metadataHandler->Load(*stream)) || NPT_FAILED(metadataHandler->GetCoverArtData(caData, caDataLen))) {
goto filenotfound;
}
PLT_HttpHelper::SetContentType(&response, "application/octet-stream");
PLT_HttpHelper::SetBody(&response, caData, caDataLen);
delete caData;
return NPT_SUCCESS;
}
filenotfound:
response.SetStatus(404, "File Not Found");
return NPT_SUCCESS;
}
示例4: file
/*----------------------------------------------------------------------
| main
+---------------------------------------------------------------------*/
int
main(int argc, char** argv)
{
NPT_Result result;
NPT_FileInfo info;
NPT_ASSERT(NPT_File::GetInfo("foobar.doesnotexist", NULL) == NPT_ERROR_NO_SUCH_FILE);
NPT_ASSERT(!NPT_File::Exists("foobar.doesnotexist"));
// test special names
NPT_File file(NPT_FILE_STANDARD_INPUT);
NPT_ASSERT(NPT_SUCCEEDED(file.GetInfo(info)));
NPT_ASSERT(info.m_Type == NPT_FileInfo::FILE_TYPE_SPECIAL);
file = NPT_File(NPT_FILE_STANDARD_OUTPUT);
NPT_ASSERT(NPT_SUCCEEDED(file.GetInfo(info)));
NPT_ASSERT(info.m_Type == NPT_FileInfo::FILE_TYPE_SPECIAL);
file = NPT_File(NPT_FILE_STANDARD_ERROR);
NPT_ASSERT(NPT_SUCCEEDED(file.GetInfo(info)));
NPT_ASSERT(info.m_Type == NPT_FileInfo::FILE_TYPE_SPECIAL);
if (NPT_File::Exists("foobar.file1")) {
result = NPT_File::RemoveFile("foobar.file1");
NPT_ASSERT(NPT_SUCCEEDED(result));
}
result = CreateNewFile("foobar.file1", 9);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(NPT_File::Exists("foobar.file1"));
result = NPT_File::GetInfo("foobar.file1", &info);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(info.m_Type == NPT_FileInfo::FILE_TYPE_REGULAR);
NPT_ASSERT(info.m_Size == 9);
{
NPT_File f1("foobar.file1");
result = f1.GetInfo(info);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(info.m_Type == NPT_FileInfo::FILE_TYPE_REGULAR);
NPT_ASSERT(info.m_Size == 9);
}
{
NPT_File f1("foobar.file1");
NPT_LargeSize size;
result = f1.GetSize(size);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(size == 9);
}
{
NPT_File f1("foobar.file1");
result = f1.Rename("foobar.file1-r");
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(f1.GetPath() == "foobar.file1-r");
}
NPT_ASSERT(NPT_File::Exists("foobar.file1-r"));
result = NPT_File::GetInfo("foobar.file1-r", &info);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(info.m_Type == NPT_FileInfo::FILE_TYPE_REGULAR);
NPT_ASSERT(info.m_Size == 9);
// dirs
NPT_ASSERT(!NPT_File::Exists("foobar.dir"));
result = NPT_File::CreateDir("foobar.dir");
NPT_ASSERT(NPT_SUCCEEDED(result));
result = NPT_File::GetInfo("foobar.dir", &info);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(info.m_Type == NPT_FileInfo::FILE_TYPE_DIRECTORY);
{
NPT_File f1("foobar.dir");
result = f1.GetInfo(info);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(info.m_Type == NPT_FileInfo::FILE_TYPE_DIRECTORY);
}
NPT_String dirname = "foobar.dir";
NPT_String fname;
fname = dirname;
fname += NPT_FilePath::Separator;
fname += "file1";
result = CreateNewFile(fname, 1);
NPT_ASSERT(NPT_SUCCEEDED(result));
fname = dirname;
fname += NPT_FilePath::Separator;
fname += "file2";
result = CreateNewFile(fname, 2);
NPT_ASSERT(NPT_SUCCEEDED(result));
fname = dirname;
fname += NPT_FilePath::Separator;
fname += "file3";
result = CreateNewFile(fname, 3);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_List<NPT_String> entries;
result = NPT_File::ListDir("foobar.dir", entries);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(entries.GetItemCount() == 3);
//.........这里部分代码省略.........