Files
interactive/fhs/sh-opendav/lock.h
2026-08-07 17:38:18 +09:00

89 lines
2.2 KiB
C

/****************************************************************************
mod_dav_pgsql (DASL) for apache 2.X
CopyRight(C) 2005 SolutionBox Inc. All Rights reserved.
Author : sean kim (sean@solutionbox.co.kr)
$Id: lock.h,v 1.2 2006/09/20 09:22:59 sean Exp $
Redistribution and use in source and binary forms, with or with out
modification, are not permitted in outside of SolutionBox Inc.
****************************************************************************/
#ifndef __DAV_REPOS_LOCK_H__
#define __DAV_REPOS_LOCK_H__
#include <apr_uuid.h>
//#include <libpq-fe.h>
#include "dav_repos.h"
/* #################################################################
** ### keep these structures (internal) or move fully to dav_lock?
*/
/*
** Use the opaquelock scheme for locktokens
*/
struct dav_locktoken
{
const char *char_uuid;
};
int dav_repos_lock_expired(time_t expires);
/*
** We need to reliably size the fixed-length portion of
** dav_lock_discovery; best to separate it into another
** struct for a convenient sizeof, unless we pack lock_discovery.
*/
typedef struct dav_lock_discovery_fixed
{
char scope;
char type;
int depth;
time_t timeout;
}
dav_lock_discovery_fixed;
typedef struct dav_lock_discovery
{
struct dav_lock_discovery_fixed f;
dav_locktoken *locktoken;
const char *owner; /* owner field from activelock */
const char *auth_user; /* authenticated user who created the lock */
struct dav_lock_discovery *next;
}
dav_lock_discovery;
/* Indirect locks represent locks inherited from containing collections.
* They reference the lock token for the collection the lock is
* inherited from. A lock provider may also define a key to the
* inherited lock, for fast datbase lookup. The key is opaque outside
* the lock provider.
*/
typedef struct dav_lock_indirect
{
dav_locktoken *locktoken;
const char *key;
struct dav_lock_indirect *next;
time_t timeout;
}
dav_lock_indirect;
/* ################################################################# */
#define DAV_TRUE 1
#define DAV_FALSE 0
#define DAV_CREATE_LIST 23
#define DAV_APPEND_LIST 24
/* Stored lock_discovery prefix */
#define DAV_LOCK_DIRECT 1
#define DAV_LOCK_INDIRECT 2
#endif