~drizzle-trunk/drizzle/development

1548.2.1 by Barry.Leslie at PrimeBase
Added the PBMS daemon plugin.
1
/* Copyright (c) 2008 PrimeBase Technologies GmbH, Germany
2
 *
3
 * PrimeBase Media Stream for MySQL
4
 *
5
 * This program is free software; you can redistribute it and/or modify
6
 * it under the terms of the GNU General Public License as published by
7
 * the Free Software Foundation; either version 2 of the License, or
8
 * (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
 *
19
 * Original author: Paul McCullagh (H&G2JCtL)
20
 * Continued development: Barry Leslie
21
 *
22
 * 2007-06-07
23
 *
24
 * CORE SYSTEM:
25
 * A basic directory.
26
 *
27
 */
28
29
#ifndef __CSDIRECTORY_H__
30
#define __CSDIRECTORY_H__
31
32
#include <dirent.h>
33
34
#include "CSDefs.h"
35
#include "CSPath.h"
36
#include "CSTime.h"
37
#include "CSObject.h"
38
#include "CSStream.h"
39
40
using namespace std;
41
42
class CSDirectory : public CSObject {
43
public:
1548.2.33 by Barry.Leslie at PrimeBase
Added some special case code for directory handling on solaris.
44
	CSDirectory(): iEntry(NULL), iDir(NULL), iPath(NULL) { }
1548.2.1 by Barry.Leslie at PrimeBase
Added the PBMS daemon plugin.
45
46
	virtual ~CSDirectory();
47
48
	virtual void open();
49
50
	virtual void close();
51
52
	virtual bool next();
53
54
	virtual const char *name();
55
56
	virtual bool isFile() ;
57
	
58
	virtual void deleteEntry() ;
59
1548.2.2 by Barry.Leslie at PrimeBase
A lot of minor changes to clean up the code and to get it to build with Drizzle.
60
	virtual void info(bool *is_dir, off64_t *size, CSTime *mod_time);
1548.2.1 by Barry.Leslie at PrimeBase
Added the PBMS daemon plugin.
61
62
	virtual void print(CSOutputStream *out);
63
64
	friend class TDDirectory;
65
66
	static CSDirectory *newDirectory(CSPath *);
67
	static CSDirectory *newDirectory(CSString *);
68
69
private:
1548.2.33 by Barry.Leslie at PrimeBase
Added some special case code for directory handling on solaris.
70
	/* Solaris requires od_entry.d_name member to have size at least as returned
71
	 * by pathconf() function on per-directory basis. As a result 'struct dirent'
72
	 * cannot be staticly alloacted. 
73
	 */
74
	union var_dirent {
75
		struct dirent entry;
76
		char space[1];
77
	} *iEntry;
78
	
1548.2.1 by Barry.Leslie at PrimeBase
Added the PBMS daemon plugin.
79
	DIR *iDir;
80
	CSString *iPath;
1548.2.33 by Barry.Leslie at PrimeBase
Added some special case code for directory handling on solaris.
81
	void getFilePath(char *path, size_t size);
1548.2.1 by Barry.Leslie at PrimeBase
Added the PBMS daemon plugin.
82
};
83
84
85
#endif