summaryrefslogtreecommitdiff
path: root/filecache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filecache.cpp')
-rw-r--r--filecache.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/filecache.cpp b/filecache.cpp
new file mode 100644
index 0000000..a5912d0
--- /dev/null
+++ b/filecache.cpp
@@ -0,0 +1,57 @@
+#include <algorithm>
+#include <fstream>
+#include <istream>
+#include "filecache.h"
+
+namespace vdrlive {
+
+std::time_t FileObject::get_filetime( std::string const& path )
+{
+ return 9999;
+}
+
+bool FileObject::is_current() const
+{
+ return m_ctime < get_filetime( m_path );
+ /*struct stat statBuf = { 0 };
+ * if ( ::stat( m_path.c_str(), &statBuf ) < 0 ) {
+ * }
+ if ( m_ctime == 0 )
+ return true;
+ m_ctime = get_filetime( m_path );
+ return timestamp < m_ctime;*/
+}
+
+bool FileObject::load()
+{
+ std::ifstream ifs( m_path.c_str(), std::ios::in | std::ios::binary | std::ios::ate );
+ if ( !ifs )
+ return false;
+
+ std::streamsize size = ifs.tellg();
+ ifs.seekg( 0, std::ios::beg );
+
+ std::vector< char > data( size );
+ data.resize( size );
+ ifs.read( &data[0], size );
+ ifs.close();
+
+ m_ctime = get_filetime( m_path );
+ m_data.swap( data );
+ return true;
+}
+
+FileCache& LiveFileCache()
+{
+ static FileCache instance( 1000000 );
+ return instance;
+}
+
+} // namespace vdrlive
+
+using namespace vdrlive;
+
+int main()
+{
+ FileCache::ptr_type f = LiveFileCache().get("/tmp/live/active.png");
+}