Files
asterisk/include/asterisk/datastore.h
Jeff Peeler b3eaf3beef Merged revisions 180719 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

........
  r180719 | jpeeler | 2009-03-09 15:58:17 -0500 (Mon, 09 Mar 2009) | 16 lines
  
  Add Doxygen documentation for API changes from 1.6.0 to 1.6.1
  
  Copied from my review board description:
  This is a continuation of the API changes documentation started for describing
  changes between releases. Most of the API changes were pretty simple needing
  only to be brought to attention via the new "Asterisk API Changes" list.
  However, if you see anything that needs further explanation feel free to
  supplement what is there. The current method of documenting is to add (in the
  header file): \version <ver number> <description of changes> and then to add
  the function to the change list in doxyref.h on the AstAPIChanges page. I also
  made sure all the functions that were newly added were tagged with \since
  1.6.1. I think this is a good habit to start both for the historical aspect as
  well as for the future ability to easily add a "New Asterisk API" page.
  
  Review: http://reviewboard.digium.com/r/190/
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@180740 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-03-09 21:22:42 +00:00

82 lines
2.6 KiB
C

/*
* Asterisk -- An open source telephony toolkit.
*
* Copyright (C) 2007 - 2008, Digium, Inc.
*
* See http://www.asterisk.org for more information about
* the Asterisk project. Please do not directly contact
* any of the maintainers of this project for assistance;
* the project provides a web site, mailing lists and IRC
* channels for your use.
*
* This program is free software, distributed under the terms of
* the GNU General Public License Version 2. See the LICENSE file
* at the top of the source tree.
*/
/*! \file
* \brief Asterisk datastore objects
*/
#ifndef _ASTERISK_DATASTORE_H
#define _ASTERISK_DATASTORE_H
#if defined(__cplusplus) || defined(c_plusplus)
extern "C" {
#endif
#include "asterisk/linkedlists.h"
/*! \brief Structure for a data store type */
struct ast_datastore_info {
const char *type; /*!< Type of data store */
void *(*duplicate)(void *data); /*!< Duplicate item data (used for inheritance) */
void (*destroy)(void *data); /*!< Destroy function */
/*!
* \brief Fix up channel references
*
* \arg data The datastore data
* \arg old_chan The old channel owning the datastore
* \arg new_chan The new channel owning the datastore
*
* This is exactly like the fixup callback of the channel technology interface.
* It allows a datastore to fix any pointers it saved to the owning channel
* in case that the owning channel has changed. Generally, this would happen
* when the datastore is set to be inherited, and a masquerade occurs.
*
* \return nothing.
*/
void (*chan_fixup)(void *data, struct ast_channel *old_chan, struct ast_channel *new_chan);
};
/*! \brief Structure for a data store object */
struct ast_datastore {
const char *uid; /*!< Unique data store identifier */
void *data; /*!< Contained data */
const struct ast_datastore_info *info; /*!< Data store type information */
unsigned int inheritance; /*!< Number of levels this item will continue to be inherited */
AST_LIST_ENTRY(ast_datastore) entry; /*!< Used for easy linking */
};
/*!
* \brief Create a data store object
* \param[in] info information describing the data store object
* \param[in] uid unique identifer
* \version 1.6.1 moved here and renamed from ast_channel_datastore_alloc
*/
struct ast_datastore *ast_datastore_alloc(const struct ast_datastore_info *info, const char *uid);
/*!
* \brief Free a data store object
* \param[in] datastore datastore to free
* \version 1.6.1 moved here and renamed from ast_channel_datastore_free
*/
int ast_datastore_free(struct ast_datastore *datastore);
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
#endif /* _ASTERISK_DATASTORE_H */