File: filecache.cpp

package info (click to toggle)
vdr-plugin-live 3.5.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,116 kB
  • sloc: cpp: 12,988; javascript: 3,220; makefile: 241; sh: 40
file content (64 lines) | stat: -rw-r--r-- 1,263 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64

#include "filecache.h"

#include <algorithm>
#include <fstream>
#include <istream>
#include <sys/stat.h>

namespace vdrlive {

std::time_t FileObject::get_filetime(cStr path)
{
  struct stat sbuf;
  if ( stat( path.c_str(), &sbuf ) < 0 ) {
// errno == 2 == ENOENT No such file or directory
// so this is also used to detect if a file exists
    if (errno != 2) esyslog3("file ", path, " not found, errno =", errno);
    return 0;
  }
  return sbuf.st_ctime;
}

bool FileObject::load()
{
  m_file.load(m_path);
  m_ctime = get_filetime(m_path);
  return m_file.exists();
/*
  std::ifstream ifs( m_path.c_str(), std::ios::in | std::ios::binary | std::ios::ate );
  if ( !ifs ) {
    esyslog3("std::ifstream craetion for file ", path, " failed");
    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

#if 0
using namespace vdrlive;

int main()
{
  FileCache::ptr_type f = LiveFileCache().get("/tmp/live/active.png");
}
#endif