Squid Web Cache master
Loading...
Searching...
No Matches
fs_io.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2025 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
18class MemBuf;
19
21{
23public:
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
45{
47public:
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
59private:
60 size_t capacity = 0;
62 FREE *free_func = nullptr;
63};
64
65int file_open(const char *path, int mode);
66void file_close(int fd);
67void file_write(int, off_t, void const *, int len, DWCB *, void *, FREE *);
68void file_read(int, char *, int, off_t, DRCB *, void *);
69void 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 */
79bool FileRename(const SBuf &from, const SBuf &to);
80
81int fsBlockSize(const char *path, int *blksize);
82int fsStats(const char *, int *, int *, int *, int *);
83
84#endif /* SQUID_SRC_FS_IO_H */
85
Definition SBuf.h:94
int req_len
Definition fs_io.h:37
void * client_data
Definition fs_io.h:41
DRCB * handler
Definition fs_io.h:40
MEMPROXY_CLASS(dread_ctrl)
off_t offset
Definition fs_io.h:36
int fd
Definition fs_io.h:35
char * buf
Definition fs_io.h:38
dread_ctrl(dread_ctrl &&)=delete
int end_of_file
Definition fs_io.h:39
~dread_ctrl()=default
dread_ctrl(int aFd, off_t aOffset, char *aBuf, int aLen, DRCB *aHandler, void *aData)
Definition fs_io.h:24
~dwrite_q()
Definition fs_io.cc:55
dwrite_q(const size_t wantCapacity)
Definition fs_io.h:48
char * buf
Definition fs_io.h:54
size_t buf_offset
Definition fs_io.h:56
size_t capacity
Definition fs_io.h:60
MEMPROXY_CLASS(dwrite_q)
dwrite_q(dwrite_q &&)=delete
size_t len
length of content in buf
Definition fs_io.h:55
dwrite_q * next
Definition fs_io.h:57
off_t file_offset
Definition fs_io.h:53
FREE * free_func
when set, gets called upon object destruction to free buf
Definition fs_io.h:62
void file_write(int, off_t, void const *, int len, DWCB *, void *, FREE *)
Definition fs_io.cc:313
int file_open(const char *path, int mode)
Definition fs_io.cc:66
bool FileRename(const SBuf &from, const SBuf &to)
Definition fs_io.cc:443
int fsBlockSize(const char *path, int *blksize)
Definition fs_io.cc:466
void file_read(int, char *, int, off_t, DRCB *, void *)
Definition fs_io.cc:424
void safeunlink(const char *path, int quiet)
Definition fs_io.cc:432
void file_close(int fd)
Definition fs_io.cc:92
int fsStats(const char *, int *, int *, int *, int *)
Definition fs_io.cc:490
void FREE(void *)
Definition forward.h:37
void DRCB(int, const char *buf, int size, int errflag, void *data)
Definition typedefs.h:16
void DWCB(int, int, size_t, void *)
Definition typedefs.h:18