MOON
Server: Apache
System: Linux vps.thepromohut.com 2.6.18-398.el5 #1 SMP Tue Sep 16 20:51:48 EDT 2014 i686
User: caretrak (507)
PHP: 5.2.10
Disabled: NONE
Upload Files
File: //proc/self/root/usr/include/distcache/dc_client.h
/* distcache, Distributed Session Caching technology
 * Copyright (C) 2000-2003  Geoff Thorpe, and Cryptographic Appliances, Inc.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; using version 2.1 of the License. The copyright holders
 * may elect to allow the application of later versions of the License to this
 * software, please contact the author (geoff@distcache.org) if you wish us to
 * review any later version released by the Free Software Foundation.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
 * details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this library; if not, write to the Free Software Foundation, Inc.,
 * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
#ifndef HEADER_DISTCACHE_DC_CLIENT_H
#define HEADER_DISTCACHE_DC_CLIENT_H

/* This is an "API" version - it will be bumped each time an API change is
 * introduced to this header. NB: This version number does not track changes to
 * the implementation of these functions that might affect binary or behavioural
 * compatibility. It merely provides a way for dependant source code to provide
 * pre-processing rules that ensure that source code is being compiled using an
 * acceptable version of the distcache API. */
#define DISTCACHE_CLIENT_API	0x0001

/* This is an "implementation" version - it will be bumped each time a change is
 * made that could affect binary compatibility with dependant libraries or a
 * behavioural change takes place that could affect interoperation. */
#define DISTCACHE_CLIENT_BINARY	0x0001

/* Our black-box type */
typedef struct st_DC_CTX DC_CTX;

/* Flags for use in DC_CTX_new() */
#define DC_CTX_FLAG_PERSISTENT		(unsigned int)0x0001
#define DC_CTX_FLAG_PERSISTENT_PIDCHECK	(unsigned int)0x0002
#define DC_CTX_FLAG_PERSISTENT_RETRY	(unsigned int)0x0004
#define DC_CTX_FLAG_PERSISTENT_LATE	(unsigned int)0x0008

/* The minimum allowable "timeout" (in milliseconds) of new sessions */
#define DC_MIN_TIMEOUT			500

/*****************/
/* API functions */

/* Create a new DC_CTX */
DC_CTX *DC_CTX_new(const char *target, unsigned int flags);
/* Destroy a DC_CTX */
void DC_CTX_free(DC_CTX *ctx);
/* Add (send) a new session object and its corresponding id to the cache */
int DC_CTX_add_session(DC_CTX *ctx,
			const unsigned char *id_data,
			unsigned int id_len,
			const unsigned char *sess_data,
			unsigned int sess_len,
			unsigned long timeout_msecs);
/* Remove a session from the cache given an id */
int DC_CTX_remove_session(DC_CTX *ctx,
			const unsigned char *id_data,
			unsigned int id_len);
/* Get (receive) a session from the cache given an id. */
int DC_CTX_get_session(DC_CTX *ctx,
			const unsigned char *id_data,
			unsigned int id_len,
			unsigned char *result_storage,
			unsigned int result_size,
			unsigned int *result_used);

/* Re"get"s a session immediately after a previous call to DC_CTX_get_session().
 * Used when DC_CTX_get_session() did not provide a sufficiently big 'result'
 * buffer. */
int DC_CTX_reget_session(DC_CTX *ctx,
			const unsigned char *id_data,
			unsigned int id_len,
			unsigned char *result_storage,
			unsigned int result_size,
			unsigned int *result_used);

/* Tests whether the cache has a session corresponding to a given id. */
int DC_CTX_has_session(DC_CTX *ctx,
			const unsigned char *id_data,
			unsigned int id_len);

#endif /* !defined(HEADER_DISTCACHE_DC_CLIENT_H) */