summaryrefslogtreecommitdiffstats
path: root/pki/base/tps/src/include/httpClient/httpc/PSDataSourceManager.h
blob: 1b0662b6907f3ce100c85ef394665163a93add00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 */
/** BEGIN COPYRIGHT BLOCK
 * 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;
 * version 2.1 of the License.
 * 
 * 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., 51 Franklin Street, Fifth Floor,
 * Boston, MA  02110-1301  USA 
 * 
 * Copyright (C) 2007 Red Hat, Inc.
 * All rights reserved.
 * END COPYRIGHT BLOCK **/

#ifndef __PS_DATA_SOURCE_MANAGER_H__
#define __PS_DATA_SOURCE_MANAGER_H__

#ifdef HAVE_CONFIG_H
#ifndef AUTOTOOLS_CONFIG_H
#define AUTOTOOLS_CONFIG_H

/* Eliminate warnings when using Autotools */
#undef PACKAGE_BUGREPORT
#undef PACKAGE_NAME
#undef PACKAGE_STRING
#undef PACKAGE_TARNAME
#undef PACKAGE_VERSION

#include <config.h>
#endif /* AUTOTOOLS_CONFIG_H */
#endif /* HAVE_CONFIG_H */

/**
 * PSDataSourceManager.h	1.000 05/21/2002
 * 
 * This class manages presence server data sources plugins. 
 *
 * @author  Surendra Rajam
 * @version 1.000, 05/21/2002
 */
class PSDataSourceManager :
	public PSDataSourceListener
{
private:

	/**
	 * Constructor - creates a data source manager object
	 */
	PSDataSourceManager();

	/**
	 * Destructor
	 */
	virtual ~PSDataSourceManager();

public:

	/**
	 * Gets an instance of this class.
	 */
	static PSDataSourceManager* GetDataSourceManager();

public:

	/**
	 * Registers a listener with this class. Only one listener is 
	 * allowed to be registered. If an attempt is made to register
	 * more than one listener, then an error condition is raised.
	 *
	 * @param	listener	a server listener
	 * @return	0 on success, negative error upon failure
	 */
	int RegisterListener(PSServerListener* listener);

	/**
	 * Loads all data source type plugins.
	 *
	 * @return	0 for success, negative error code otherwise
	 */
	int LoadDataSources();

	/**
	 * Unloads all data source type plugins.
	 *
	 * @return	0 for success, negative error code otherwise
	 */
	int UnloadDataSources();

// PSDataSourceListener interface
public:

	/**
	 * Callback function to notify the manager upon data source error.
	 *
	 * @param	sourceid	id of the source calling 
	 * @param	errorcode	error code
	 * @param	errorstring	error string
	 * @return				0 on success
	 * 
	 */
	int OnSourceError(const char* sourceid, int errorcode, const char* errorstring);

	/**
	 * Callback function to notify the manager upon new group.
	 *
	 * @param     group		name of the new group 
	 * @param     nAttrs	number of attributes 
	 * @param     attrs		attributes the group will support 
	 * @return              0 on success
	 * 
	 */
	int OnNewGroup(const char* group, int nAttrs, char** attrs);

	/**
	 * Callback function to notify the manager of new users
	 *
	 * @param	group	name of the group
	 * @param	nUsers	number of users
	 * @param	users	array containing user objects
	 * @return 0 on success, a negative error code on failure 
	 */
	int OnNewUsers(const char* group, int nUsers, PSUser** users); 

	/**
	 * Callback function to notify the manager of changes to a user.
	 * The valid operations are :
	 *		PS_OPERATION_ADD
	 *		PS_OPERATION_REPLACE
	 *		PS_OPERATION_DELETE
	 *
	 * @param	op		operation to be performed
	 * @param	group	name of the group
	 * @param	user	the user object containing modified attributes
	 * @return 0 on success, a negative error code on failure 
	 */
	int OnUserChanged(int op, const char* group, PSUser* user);

private:
	char* m_dataSourceDN;
	PSServerListener* m_serverListener;
	bool m_dataSourcesLoaded;
};

#endif // __PS_DATA_SOURCE_MANAGER_H__