fs_io.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 /* DEBUG: section 06 Disk I/O Routines */
10 
11 #ifndef SQUID_SRC_FS_IO_H
12 #define SQUID_SRC_FS_IO_H
13 
14 #include "mem/forward.h"
15 #include "sbuf/forward.h"
16 #include "typedefs.h" //DRCB, DWCB
17 
18 class MemBuf;
19 
21 {
23 public:
24  dread_ctrl(int aFd, off_t aOffset, char *aBuf, int aLen, DRCB *aHandler, void *aData) :
25  fd(aFd),
26  offset(aOffset),
27  req_len(aLen),
28  buf(aBuf),
29  handler(aHandler),
30  client_data(aData)
31  {}
32  dread_ctrl(dread_ctrl &&) = delete; // no copying or moving of any kind
33  ~dread_ctrl() = default;
34 
35  int fd = -1;
36  off_t offset = 0;
37  int req_len = 0;
38  char *buf = nullptr;
39  int end_of_file = 0;
40  DRCB *handler = nullptr;
41  void *client_data = nullptr;
42 };
43 
44 class dwrite_q
45 {
47 public:
48  dwrite_q(const size_t wantCapacity) : dwrite_q(wantCapacity, nullptr, nullptr) {}
49  dwrite_q(size_t, char *, FREE *);
50  dwrite_q(dwrite_q &&) = delete; // no copying or moving of any kind
51  ~dwrite_q();
52 
53  off_t file_offset = 0;
54  char *buf = nullptr;
55  size_t len = 0;
56  size_t buf_offset = 0;
57  dwrite_q *next = nullptr;
58 
59 private:
60  size_t capacity = 0;
61  FREE *free_func = nullptr;
63 };
64 
65 int file_open(const char *path, int mode);
66 void file_close(int fd);
67 void file_write(int, off_t, void const *, int len, DWCB *, void *, FREE *);
68 void file_read(int, char *, int, off_t, DRCB *, void *);
69 void safeunlink(const char *path, int quiet);
70 
71 /*
72  * Wrapper for rename(2) which complains if something goes wrong;
73  * the caller is responsible for handing and explaining the
74  * consequences of errors.
75  *
76  * \retval true successful rename
77  * \retval false an error occurred
78  */
79 bool FileRename(const SBuf &from, const SBuf &to);
80 
81 int fsBlockSize(const char *path, int *blksize);
82 int fsStats(const char *, int *, int *, int *, int *);
83 
84 #endif /* SQUID_SRC_FS_IO_H */
85 
void FREE(void *)
Definition: forward.h:37
int req_len
Definition: fs_io.h:37
Definition: SBuf.h:93
void * client_data
Definition: fs_io.h:41
dwrite_q(const size_t wantCapacity)
Definition: fs_io.h:48
int fd
Definition: fs_io.h:35
off_t file_offset
Definition: fs_io.h:53
size_t capacity
Definition: fs_io.h:60
DRCB * handler
Definition: fs_io.h:40
void DRCB(int, const char *buf, int size, int errflag, void *data)
Definition: typedefs.h:16
void file_close(int fd)
Definition: fs_io.cc:93
char * buf
Definition: fs_io.h:54
Definition: MemBuf.h:23
void safeunlink(const char *path, int quiet)
Definition: fs_io.cc:433
size_t len
length of content in buf
Definition: fs_io.h:55
int fsStats(const char *, int *, int *, int *, int *)
Definition: fs_io.cc:491
FREE * free_func
when set, gets called upon object destruction to free buf
Definition: fs_io.h:62
int file_open(const char *path, int mode)
Definition: fs_io.cc:65
MEMPROXY_CLASS(dread_ctrl)
int fsBlockSize(const char *path, int *blksize)
Definition: fs_io.cc:467
MEMPROXY_CLASS(dwrite_q)
off_t offset
Definition: fs_io.h:36
int end_of_file
Definition: fs_io.h:39
~dread_ctrl()=default
void file_write(int, off_t, void const *, int len, DWCB *, void *, FREE *)
Definition: fs_io.cc:314
~dwrite_q()
Definition: fs_io.cc:54
Definition: fs_io.h:44
dwrite_q * next
Definition: fs_io.h:57
void file_read(int, char *, int, off_t, DRCB *, void *)
Definition: fs_io.cc:425
bool FileRename(const SBuf &from, const SBuf &to)
Definition: fs_io.cc:444
dread_ctrl(int aFd, off_t aOffset, char *aBuf, int aLen, DRCB *aHandler, void *aData)
Definition: fs_io.h:24
char * buf
Definition: fs_io.h:38
void DWCB(int, int, size_t, void *)
Definition: typedefs.h:18
size_t buf_offset
Definition: fs_io.h:56

 

Introduction

Documentation

Support

Miscellaneous