[go: up one dir, main page]

Menu

[8bf46b]: / io / syscall_file.h  Maximize  Restore  History

Download this file

76 lines (64 with data), 1.8 kB

 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
#ifndef SYSCALL_HEADER
#define SYSCALL_HEADER
/***************************************************************************
* syscall_file.h
*
* Sat Aug 24 23:55:08 2002
* Copyright 2002 Roman Dementiev
* dementiev@mpi-sb.mpg.de
****************************************************************************/
#include "ufs_file.h"
#include "../common/debug.h"
__STXXL_BEGIN_NAMESPACE
//! \addtogroup fileimpl
//! \{
//! \brief Implementation of file based on UNIX syscalls
class syscall_file : public ufs_file_base
{
protected:
public:
//! \brief constructs file object
//! \param filename path of file
//! \attention filename must be resided at memory disk partition
//! \param mode open mode, see \c stxxl::file::open_modes
//! \param disk disk(file) identifier
syscall_file(
const std::string & filename,
int mode,
int disk = -1);
request_ptr aread(
void *buffer,
stxxl::int64 pos,
size_t bytes,
completion_handler on_cmpl);
request_ptr awrite(
void *buffer,
stxxl::int64 pos,
size_t bytes,
completion_handler on_cmpl);
};
//! \brief Implementation of request based on UNIX syscalls
class syscall_request: public ufs_request_base
{
friend class syscall_file;
protected:
syscall_request(
syscall_file * f,
void *buf,
stxxl::int64 off,
size_t b,
request_type t,
completion_handler on_cmpl);
void serve ();
public:
const char *io_type ();
private:
// Following methods are declared but not implemented
// intentionnaly to forbid their usage
syscall_request(const syscall_request &);
syscall_request & operator=(const syscall_request &);
syscall_request();
};
//! \}
__STXXL_END_NAMESPACE
#endif