tnt-file-db

tnt-file-db —

Synopsis




#define     TNT_FILE_DB                     (object)
enum        TntFileDBState;
enum        TntFileDBHandleState;
struct      TntFileDB;
void        tnt_file_db_init                (TntFileDB *file_db);
TntFileDB*  tnt_file_db_new                 (void);
void        tnt_file_db_finalize            (FluxObject *file_db);
void        tnt_file_db_add_dir             (TntFileDB *file_db,
                                             const gchar *path,
                                             gboolean recursive);
void        tnt_file_db_remove_dir          (TntFileDB *file_db,
                                             const gchar *path);
GList*      tnt_file_db_get_user_dir_list   (TntFileDB *file_db);
gboolean    tnt_file_db_get_dir_stats       (TntFileDB *file_db,
                                             gchar *path,
                                             guint *files,
                                             guint64 *size);
gboolean    tnt_file_db_dir_is_scanned      (TntFileDB *file_db,
                                             gchar *path);
guint       tnt_file_db_get_dir_count       (TntFileDB *file_db);
guint       tnt_file_db_get_file_count      (TntFileDB *file_db,
                                             gboolean include_unhashed);
guint64     tnt_file_db_get_file_size       (TntFileDB *file_db,
                                             gboolean include_unhashed);
void        tnt_file_db_set_file_update_func
                                            (TntFileDB *file_db,
                                             TntFileUpdateFunc *func,
                                             gpointer data);
gchar*      tnt_file_db_get_file_name       (TntFileDB *file_db,
                                             const TntFileID *file_id);
gchar*      tnt_file_db_get_file_path       (TntFileDB *file_db,
                                             const TntFileID *file_id);
gint        tnt_file_db_n_user_dirs         (TntFileDB *file_db);
TntFileDBHandle tnt_file_db_nth_user_dir    (TntFileDB *file_db,
                                             gint n);
gint        tnt_file_db_handle_n_children   (TntFileDB *file_db,
                                             TntFileDBHandle handle);
TntFileDBHandle tnt_file_db_handle_nth_child
                                            (TntFileDB *file_db,
                                             TntFileDBHandle handle,
                                             gint n);
TntFileDBHandle tnt_file_db_handle_parent   (TntFileDB *file_db,
                                             TntFileDBHandle handle);
gboolean    tnt_file_db_handle_is_user_dir  (TntFileDB *file_db,
                                             TntFileDBHandle handle);
gint        tnt_file_db_handle_get_position (TntFileDB *file_db,
                                             TntFileDBHandle handle);
gchar*      tnt_file_db_handle_get_name     (TntFileDB *file_db,
                                             TntFileDBHandle handle);
gchar*      tnt_file_db_handle_get_path     (TntFileDB *file_db,
                                             TntFileDBHandle handle);
guint       tnt_file_db_handle_get_file_count
                                            (TntFileDB *file_db,
                                             TntFileDBHandle handle);
guint64     tnt_file_db_handle_get_file_size
                                            (TntFileDB *file_db,
                                             TntFileDBHandle handle);
TntFileDBHandleState tnt_file_db_handle_get_state
                                            (TntFileDB *file_db,
                                             TntFileDBHandle handle);
GList*      tnt_file_db_handle_get_files    (TntFileDB *file_db,
                                             TntFileDBHandle handle);
void        tnt_file_db_set_handle_add_func (TntFileDB *file_db,
                                             TntHandleFunc *func,
                                             gpointer data);
void        tnt_file_db_set_handle_remove_func
                                            (TntFileDB *file_db,
                                             TntHandleFunc *func,
                                             gpointer data);
void        tnt_file_db_set_handle_change_func
                                            (TntFileDB *file_db,
                                             TntHandleFunc *func,
                                             gpointer data);

Description

Details

TNT_FILE_DB()

#define TNT_FILE_DB(object) ((TntFileDB *) object)

object :

enum TntFileDBState

typedef enum
{
  TNT_FILE_DB_IDLE,
  TNT_FILE_DB_SCANNING,
  TNT_FILE_DB_HASHING,
  TNT_FILE_DB_ACTION
}
TntFileDBState;


enum TntFileDBHandleState

typedef enum
{
  TNT_FILE_DB_HANDLE_ONLINE,
  TNT_FILE_DB_HANDLE_SCANNING,
  TNT_FILE_DB_HANDLE_TALLIED,
  TNT_FILE_DB_HANDLE_HASHING
}
TntFileDBHandleState;


struct TntFileDB

struct TntFileDB {

  TntDataDB          data_db;

  TntStorage        *private_storage;

  TntFileUpdateFunc *file_update_func;
  gpointer           file_update_func_data;
  TntFileIDHintFunc *file_id_hint_func;
  gpointer           file_id_hint_func_data;

  TntHandleFunc     *handle_add_func;
  gpointer           handle_add_func_data;
  TntHandleFunc     *handle_remove_func;
  gpointer           handle_remove_func_data;
  TntHandleFunc     *handle_change_func;
  gpointer           handle_change_func_data;

  GNode             *dir_tree;

  GList             *file_list;
  GList             *file_list_last;      /* Speedup pointer to last element for appending */

  GHashTable        *files_by_location;
  GHashTable        *files_by_id;

  GList             *serialization_list;

  GList             *block_action_queue;
  TntBlockAction    *current_block_action;

  gint               dir_count;
  gint               file_count;
  gint               file_hashed_count;
  gint64             file_size;
  gint64             file_hashed_size;

  TntFileDBState     state;
  gboolean           need_scan;
  gboolean           need_hash;
  gboolean           need_stabilization;

  TntTimeStamp       stabilization_time;

  /* State information */
  guint              callback_source_id;
  guint              report_timeout_id;
  gpointer           id_hint_file_stat;
  GList             *stat_node;
  DIR               *dir_hd;
  FluxFileIO        *file_io;
  gpointer           block;
};


tnt_file_db_init ()

void        tnt_file_db_init                (TntFileDB *file_db);

file_db :

tnt_file_db_new ()

TntFileDB*  tnt_file_db_new                 (void);

Returns :

tnt_file_db_finalize ()

void        tnt_file_db_finalize            (FluxObject *file_db);

file_db :

tnt_file_db_add_dir ()

void        tnt_file_db_add_dir             (TntFileDB *file_db,
                                             const gchar *path,
                                             gboolean recursive);

file_db :
path :
recursive :

tnt_file_db_remove_dir ()

void        tnt_file_db_remove_dir          (TntFileDB *file_db,
                                             const gchar *path);

file_db :
path :

tnt_file_db_get_user_dir_list ()

GList*      tnt_file_db_get_user_dir_list   (TntFileDB *file_db);

file_db :
Returns :

tnt_file_db_get_dir_stats ()

gboolean    tnt_file_db_get_dir_stats       (TntFileDB *file_db,
                                             gchar *path,
                                             guint *files,
                                             guint64 *size);

file_db :
path :
files :
size :
Returns :

tnt_file_db_dir_is_scanned ()

gboolean    tnt_file_db_dir_is_scanned      (TntFileDB *file_db,
                                             gchar *path);

file_db :
path :
Returns :

tnt_file_db_get_dir_count ()

guint       tnt_file_db_get_dir_count       (TntFileDB *file_db);

file_db :
Returns :

tnt_file_db_get_file_count ()

guint       tnt_file_db_get_file_count      (TntFileDB *file_db,
                                             gboolean include_unhashed);

file_db :
include_unhashed :
Returns :

tnt_file_db_get_file_size ()

guint64     tnt_file_db_get_file_size       (TntFileDB *file_db,
                                             gboolean include_unhashed);

file_db :
include_unhashed :
Returns :

tnt_file_db_set_file_update_func ()

void        tnt_file_db_set_file_update_func
                                            (TntFileDB *file_db,
                                             TntFileUpdateFunc *func,
                                             gpointer data);

file_db :
func :
data :

tnt_file_db_get_file_name ()

gchar*      tnt_file_db_get_file_name       (TntFileDB *file_db,
                                             const TntFileID *file_id);

file_db :
file_id :
Returns :

tnt_file_db_get_file_path ()

gchar*      tnt_file_db_get_file_path       (TntFileDB *file_db,
                                             const TntFileID *file_id);

file_db :
file_id :
Returns :

tnt_file_db_n_user_dirs ()

gint        tnt_file_db_n_user_dirs         (TntFileDB *file_db);

file_db :
Returns :

tnt_file_db_nth_user_dir ()

TntFileDBHandle tnt_file_db_nth_user_dir    (TntFileDB *file_db,
                                             gint n);

file_db :
n :
Returns :

tnt_file_db_handle_n_children ()

gint        tnt_file_db_handle_n_children   (TntFileDB *file_db,
                                             TntFileDBHandle handle);

file_db :
handle :
Returns :

tnt_file_db_handle_nth_child ()

TntFileDBHandle tnt_file_db_handle_nth_child
                                            (TntFileDB *file_db,
                                             TntFileDBHandle handle,
                                             gint n);

file_db :
handle :
n :
Returns :

tnt_file_db_handle_parent ()

TntFileDBHandle tnt_file_db_handle_parent   (TntFileDB *file_db,
                                             TntFileDBHandle handle);

file_db :
handle :
Returns :

tnt_file_db_handle_is_user_dir ()

gboolean    tnt_file_db_handle_is_user_dir  (TntFileDB *file_db,
                                             TntFileDBHandle handle);

file_db :
handle :
Returns :

tnt_file_db_handle_get_position ()

gint        tnt_file_db_handle_get_position (TntFileDB *file_db,
                                             TntFileDBHandle handle);

file_db :
handle :
Returns :

tnt_file_db_handle_get_name ()

gchar*      tnt_file_db_handle_get_name     (TntFileDB *file_db,
                                             TntFileDBHandle handle);

file_db :
handle :
Returns :

tnt_file_db_handle_get_path ()

gchar*      tnt_file_db_handle_get_path     (TntFileDB *file_db,
                                             TntFileDBHandle handle);

file_db :
handle :
Returns :

tnt_file_db_handle_get_file_count ()

guint       tnt_file_db_handle_get_file_count
                                            (TntFileDB *file_db,
                                             TntFileDBHandle handle);

file_db :
handle :
Returns :

tnt_file_db_handle_get_file_size ()

guint64     tnt_file_db_handle_get_file_size
                                            (TntFileDB *file_db,
                                             TntFileDBHandle handle);

file_db :
handle :
Returns :

tnt_file_db_handle_get_state ()

TntFileDBHandleState tnt_file_db_handle_get_state
                                            (TntFileDB *file_db,
                                             TntFileDBHandle handle);

file_db :
handle :
Returns :

tnt_file_db_handle_get_files ()

GList*      tnt_file_db_handle_get_files    (TntFileDB *file_db,
                                             TntFileDBHandle handle);

file_db :
handle :
Returns :

tnt_file_db_set_handle_add_func ()

void        tnt_file_db_set_handle_add_func (TntFileDB *file_db,
                                             TntHandleFunc *func,
                                             gpointer data);

file_db :
func :
data :

tnt_file_db_set_handle_remove_func ()

void        tnt_file_db_set_handle_remove_func
                                            (TntFileDB *file_db,
                                             TntHandleFunc *func,
                                             gpointer data);

file_db :
func :
data :

tnt_file_db_set_handle_change_func ()

void        tnt_file_db_set_handle_change_func
                                            (TntFileDB *file_db,
                                             TntHandleFunc *func,
                                             gpointer data);

file_db :
func :
data :