mirror of
https://github.com/haiwen/seafile-server.git
synced 2025-06-20 12:22:45 +00:00
101 lines
2.4 KiB
C
101 lines
2.4 KiB
C
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
|
|
#ifndef SEAF_REPO_MGR_H
|
|
#define SEAF_REPO_MGR_H
|
|
|
|
#include <pthread.h>
|
|
|
|
#include "seafile-object.h"
|
|
#include "commit-mgr.h"
|
|
#include "branch-mgr.h"
|
|
|
|
struct _SeafRepoManager;
|
|
typedef struct _SeafRepo SeafRepo;
|
|
|
|
struct _SeafRepo {
|
|
struct _SeafRepoManager *manager;
|
|
|
|
gchar id[37];
|
|
gchar *name;
|
|
gchar *desc;
|
|
gchar *category; /* not used yet */
|
|
gboolean encrypted;
|
|
int enc_version;
|
|
gchar magic[33]; /* hash(repo_id + passwd), key stretched. */
|
|
gboolean no_local_history;
|
|
|
|
SeafBranch *head;
|
|
|
|
gboolean is_corrupted;
|
|
gboolean delete_pending;
|
|
int ref_cnt;
|
|
|
|
int version;
|
|
/* Used to access fs and block sotre.
|
|
* This id is different from repo_id when this repo is virtual.
|
|
* Virtual repos share fs and block store with its origin repo.
|
|
* However, commit store for each repo is always independent.
|
|
* So always use repo_id to access commit store.
|
|
*/
|
|
gchar store_id[37];
|
|
};
|
|
|
|
gboolean is_repo_id_valid (const char *id);
|
|
|
|
SeafRepo*
|
|
seaf_repo_new (const char *id, const char *name, const char *desc);
|
|
|
|
void
|
|
seaf_repo_free (SeafRepo *repo);
|
|
|
|
void
|
|
seaf_repo_ref (SeafRepo *repo);
|
|
|
|
void
|
|
seaf_repo_unref (SeafRepo *repo);
|
|
|
|
typedef struct _SeafRepoManager SeafRepoManager;
|
|
typedef struct _SeafRepoManagerPriv SeafRepoManagerPriv;
|
|
|
|
struct _SeafRepoManager {
|
|
struct _SeafileSession *seaf;
|
|
|
|
SeafRepoManagerPriv *priv;
|
|
};
|
|
|
|
SeafRepoManager*
|
|
seaf_repo_manager_new (struct _SeafileSession *seaf);
|
|
|
|
int
|
|
seaf_repo_manager_init (SeafRepoManager *mgr);
|
|
|
|
int
|
|
seaf_repo_manager_start (SeafRepoManager *mgr);
|
|
|
|
int
|
|
seaf_repo_manager_add_repo (SeafRepoManager *mgr, SeafRepo *repo);
|
|
|
|
int
|
|
seaf_repo_manager_del_repo (SeafRepoManager *mgr, SeafRepo *repo);
|
|
|
|
SeafRepo*
|
|
seaf_repo_manager_get_repo (SeafRepoManager *manager, const gchar *id);
|
|
|
|
gboolean
|
|
seaf_repo_manager_repo_exists (SeafRepoManager *manager, const gchar *id);
|
|
|
|
GList*
|
|
seaf_repo_manager_get_repo_list (SeafRepoManager *mgr, int start, int limit);
|
|
|
|
GList *
|
|
seaf_repo_manager_get_repo_id_list (SeafRepoManager *mgr);
|
|
|
|
GList *
|
|
seaf_repo_manager_get_repos_by_owner (SeafRepoManager *mgr,
|
|
const char *email);
|
|
|
|
gboolean
|
|
seaf_repo_manager_is_virtual_repo (SeafRepoManager *mgr, const char *repo_id);
|
|
|
|
#endif
|