Stxxl
1.2.1
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
include
stxxl
bits
io
ufs_file.h
1
/***************************************************************************
2
* include/stxxl/bits/io/ufs_file.h
3
*
4
* UNIX file system file base
5
*
6
* Part of the STXXL. See http://stxxl.sourceforge.net
7
*
8
* Copyright (C) 2002 Roman Dementiev <dementiev@mpi-sb.mpg.de>
9
*
10
* Distributed under the Boost Software License, Version 1.0.
11
* (See accompanying file LICENSE_1_0.txt or copy at
12
* http://www.boost.org/LICENSE_1_0.txt)
13
**************************************************************************/
14
15
#ifndef STXXL_UFSFILEBASE_HEADER
16
#define STXXL_UFSFILEBASE_HEADER
17
18
#include <stxxl/bits/io/iobase.h>
19
20
21
__STXXL_BEGIN_NAMESPACE
22
25
26
class
ufs_request_base
;
27
29
class
ufs_file_base
:
public
file
30
{
31
protected
:
32
int
file_des;
// file descriptor
33
int
mode_;
// open mode
34
ufs_file_base
(
const
std::string & filename,
int
mode,
int
disk);
35
36
public
:
37
int
get_file_des()
const
;
38
~
ufs_file_base
();
39
stxxl::int64
size
();
40
void
set_size
(stxxl::int64 newsize);
41
void
lock();
42
};
43
45
class
ufs_request_base
:
public
request
46
{
47
friend
class
ufs_file_base
;
48
49
protected
:
50
// states of request
51
enum
{ OP = 0, DONE = 1, READY2DIE = 2 };
52
// OP - operating, DONE - request served,
53
// READY2DIE - can be destroyed
54
/*
55
ufs_file_base *file;
56
void *buffer;
57
stxxl::int64 offset;
58
size_t bytes;
59
request_type type;
60
*/
61
62
state _state;
63
mutex waiters_mutex;
64
std::set<onoff_switch *> waiters;
65
66
ufs_request_base
(
67
ufs_file_base
* f,
68
void
* buf,
69
stxxl::int64 off,
70
size_t
b,
71
request_type t,
72
completion_handler
on_cmpl);
73
bool
add_waiter(onoff_switch * sw);
74
void
delete_waiter(onoff_switch * sw);
75
int
nwaiters();
// returns number of waiters
76
void
check_aligning();
77
78
public
:
79
virtual
~
ufs_request_base
();
80
void
wait
();
81
bool
poll
();
82
const
char
*
io_type
();
83
};
84
86
87
__STXXL_END_NAMESPACE
88
89
#endif // !STXXL_UFSFILEBASE_HEADER
Generated by
1.8.1.2