本文整理汇总了C++中service_ptr_t::ensure_seekable方法的典型用法代码示例。如果您正苦于以下问题:C++ service_ptr_t::ensure_seekable方法的具体用法?C++ service_ptr_t::ensure_seekable怎么用?C++ service_ptr_t::ensure_seekable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类service_ptr_t
的用法示例。
在下文中一共展示了service_ptr_t::ensure_seekable方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: g_open_tempmem
void tag_processor_id3v2::g_remove_ex(tag_write_callback & p_callback,const service_ptr_t<file> & p_file,t_uint64 & p_size_removed,abort_callback & p_abort)
{
p_file->ensure_seekable();
t_filesize len;
len = p_file->get_size(p_abort);
if (len == filesize_invalid) throw exception_io_no_length();
p_file->seek(0,p_abort);
t_uint64 offset;
g_multiskip(p_file,offset,p_abort);
if (offset>0 && offset<len)
{
len-=offset;
service_ptr_t<file> temp;
if (p_callback.open_temp_file(temp,p_abort)) {
file::g_transfer_object(p_file,temp,len,p_abort);
} else {
if (len > 16*1024*1024) filesystem::g_open_temp(temp,p_abort);
else filesystem::g_open_tempmem(temp,p_abort);
file::g_transfer_object(p_file,temp,len,p_abort);
p_file->seek(0,p_abort);
p_file->set_eof(p_abort);
temp->seek(0,p_abort);
file::g_transfer_object(temp,p_file,len,p_abort);
}
}
p_size_removed = offset;
}
示例2: open
void open(service_ptr_t<file> file, const char *path,
t_input_open_reason reason, abort_callback &abort)
{
m_pfile = file;
input_open_file_helper(m_pfile, path, reason, abort);
m_pfile->ensure_seekable();
m_demuxer = std::make_shared<CAFFile>(m_pfile, abort);
m_decoder = IDecoder::create_decoder(m_demuxer, abort);
}