catboost 1.25.1 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DEPLOYMENT.md +22 -15
- package/README.md +37 -27
- package/binding.gyp +5 -7
- package/build_scripts/bootstrap.js +2 -1
- package/build_scripts/out/build.js +46 -68
- package/build_scripts/out/build_model.js +1 -1
- package/build_scripts/out/{build_ya.js → build_native.js} +1 -1
- package/build_scripts/out/ci.js +5 -5
- package/build_scripts/out/config.js +32 -18
- package/build_scripts/out/install.js +5 -3
- package/build_scripts/out/package_prepublish.js +1 -1
- package/build_scripts/out/packaging.js +1 -19
- package/build_scripts/out/run_tests.js +1 -1
- package/build_scripts/out/test.js +8 -3
- package/config.json +18 -11
- package/inc/catboost/libs/model_interface/c_api.h +349 -3
- package/lib/catboost.d.ts +65 -21
- package/package.json +4 -4
- package/src/api_helpers.cpp +100 -24
- package/src/api_helpers.h +8 -7
- package/src/api_module.cpp +1 -2
- package/src/model.cpp +483 -83
- package/src/model.h +24 -9
- package/inc/contrib/libs/cxxsupp/system_stl/include/stlfwd +0 -14
- package/inc/util/charset/recode_result.h +0 -9
- package/inc/util/charset/unicode_table.h +0 -123
- package/inc/util/charset/unidata.h +0 -421
- package/inc/util/charset/utf8.h +0 -384
- package/inc/util/charset/wide.h +0 -843
- package/inc/util/charset/wide_specific.h +0 -22
- package/inc/util/datetime/base.h +0 -669
- package/inc/util/datetime/constants.h +0 -7
- package/inc/util/datetime/cputimer.h +0 -124
- package/inc/util/datetime/parser.h +0 -292
- package/inc/util/datetime/systime.h +0 -47
- package/inc/util/datetime/uptime.h +0 -8
- package/inc/util/digest/city.h +0 -88
- package/inc/util/digest/fnv.h +0 -73
- package/inc/util/digest/multi.h +0 -14
- package/inc/util/digest/murmur.h +0 -57
- package/inc/util/digest/numeric.h +0 -86
- package/inc/util/digest/sequence.h +0 -48
- package/inc/util/draft/date.h +0 -129
- package/inc/util/draft/datetime.h +0 -184
- package/inc/util/draft/enum.h +0 -136
- package/inc/util/draft/holder_vector.h +0 -102
- package/inc/util/draft/ip.h +0 -131
- package/inc/util/draft/matrix.h +0 -108
- package/inc/util/draft/memory.h +0 -40
- package/inc/util/folder/dirent_win.h +0 -46
- package/inc/util/folder/dirut.h +0 -121
- package/inc/util/folder/filelist.h +0 -81
- package/inc/util/folder/fts.h +0 -108
- package/inc/util/folder/iterator.h +0 -109
- package/inc/util/folder/lstat_win.h +0 -20
- package/inc/util/folder/path.h +0 -225
- package/inc/util/folder/pathsplit.h +0 -113
- package/inc/util/folder/tempdir.h +0 -42
- package/inc/util/generic/adaptor.h +0 -134
- package/inc/util/generic/algorithm.h +0 -765
- package/inc/util/generic/array_ref.h +0 -282
- package/inc/util/generic/array_size.h +0 -24
- package/inc/util/generic/benchmark/vector_count_ctor/f.h +0 -9
- package/inc/util/generic/bitmap.h +0 -1115
- package/inc/util/generic/bitops.h +0 -459
- package/inc/util/generic/bt_exception.h +0 -24
- package/inc/util/generic/buffer.h +0 -232
- package/inc/util/generic/cast.h +0 -176
- package/inc/util/generic/deque.h +0 -24
- package/inc/util/generic/explicit_type.h +0 -42
- package/inc/util/generic/fastqueue.h +0 -55
- package/inc/util/generic/flags.h +0 -244
- package/inc/util/generic/function.h +0 -103
- package/inc/util/generic/fwd.h +0 -171
- package/inc/util/generic/guid.h +0 -61
- package/inc/util/generic/hash.h +0 -2032
- package/inc/util/generic/hash_primes.h +0 -140
- package/inc/util/generic/hash_set.h +0 -490
- package/inc/util/generic/hide_ptr.h +0 -3
- package/inc/util/generic/intrlist.h +0 -876
- package/inc/util/generic/is_in.h +0 -53
- package/inc/util/generic/iterator.h +0 -137
- package/inc/util/generic/iterator_range.h +0 -105
- package/inc/util/generic/lazy_value.h +0 -66
- package/inc/util/generic/list.h +0 -22
- package/inc/util/generic/map.h +0 -44
- package/inc/util/generic/mapfindptr.h +0 -60
- package/inc/util/generic/maybe.h +0 -713
- package/inc/util/generic/maybe_traits.h +0 -164
- package/inc/util/generic/mem_copy.h +0 -55
- package/inc/util/generic/noncopyable.h +0 -38
- package/inc/util/generic/object_counter.h +0 -53
- package/inc/util/generic/ptr.h +0 -1113
- package/inc/util/generic/queue.h +0 -57
- package/inc/util/generic/refcount.h +0 -162
- package/inc/util/generic/reserve.h +0 -11
- package/inc/util/generic/scope.h +0 -65
- package/inc/util/generic/serialized_enum.h +0 -406
- package/inc/util/generic/set.h +0 -42
- package/inc/util/generic/singleton.h +0 -136
- package/inc/util/generic/size_literals.h +0 -65
- package/inc/util/generic/stack.h +0 -18
- package/inc/util/generic/store_policy.h +0 -120
- package/inc/util/generic/strbase.h +0 -612
- package/inc/util/generic/strbuf.h +0 -552
- package/inc/util/generic/strfcpy.h +0 -17
- package/inc/util/generic/string.h +0 -1572
- package/inc/util/generic/string_hash.h +0 -21
- package/inc/util/generic/string_ut.h +0 -1175
- package/inc/util/generic/type_name.h +0 -34
- package/inc/util/generic/typelist.h +0 -114
- package/inc/util/generic/typetraits.h +0 -325
- package/inc/util/generic/utility.h +0 -132
- package/inc/util/generic/va_args.h +0 -400
- package/inc/util/generic/variant.h +0 -631
- package/inc/util/generic/variant_traits.h +0 -171
- package/inc/util/generic/vector.h +0 -119
- package/inc/util/generic/xrange.h +0 -258
- package/inc/util/generic/yexception.h +0 -212
- package/inc/util/generic/yexception_ut.h +0 -14
- package/inc/util/generic/ylimits.h +0 -92
- package/inc/util/generic/ymath.h +0 -206
- package/inc/util/memory/addstorage.h +0 -93
- package/inc/util/memory/alloc.h +0 -27
- package/inc/util/memory/blob.h +0 -296
- package/inc/util/memory/mmapalloc.h +0 -8
- package/inc/util/memory/pool.h +0 -432
- package/inc/util/memory/segmented_string_pool.h +0 -194
- package/inc/util/memory/segpool_alloc.h +0 -118
- package/inc/util/memory/smallobj.h +0 -141
- package/inc/util/memory/tempbuf.h +0 -111
- package/inc/util/network/address.h +0 -136
- package/inc/util/network/endpoint.h +0 -61
- package/inc/util/network/hostip.h +0 -16
- package/inc/util/network/init.h +0 -60
- package/inc/util/network/interface.h +0 -17
- package/inc/util/network/iovec.h +0 -65
- package/inc/util/network/ip.h +0 -116
- package/inc/util/network/nonblock.h +0 -8
- package/inc/util/network/pair.h +0 -9
- package/inc/util/network/poller.h +0 -58
- package/inc/util/network/pollerimpl.h +0 -707
- package/inc/util/network/sock.h +0 -608
- package/inc/util/network/socket.h +0 -421
- package/inc/util/random/common_ops.h +0 -130
- package/inc/util/random/easy.h +0 -47
- package/inc/util/random/entropy.h +0 -21
- package/inc/util/random/fast.h +0 -101
- package/inc/util/random/init_atfork.h +0 -3
- package/inc/util/random/lcg_engine.h +0 -66
- package/inc/util/random/mersenne.h +0 -46
- package/inc/util/random/mersenne32.h +0 -50
- package/inc/util/random/mersenne64.h +0 -50
- package/inc/util/random/normal.h +0 -38
- package/inc/util/random/random.h +0 -30
- package/inc/util/random/shuffle.h +0 -39
- package/inc/util/str_stl.h +0 -266
- package/inc/util/stream/aligned.h +0 -99
- package/inc/util/stream/buffer.h +0 -119
- package/inc/util/stream/buffered.h +0 -225
- package/inc/util/stream/debug.h +0 -53
- package/inc/util/stream/direct_io.h +0 -43
- package/inc/util/stream/file.h +0 -108
- package/inc/util/stream/format.h +0 -444
- package/inc/util/stream/fwd.h +0 -100
- package/inc/util/stream/hex.h +0 -8
- package/inc/util/stream/holder.h +0 -44
- package/inc/util/stream/input.h +0 -273
- package/inc/util/stream/labeled.h +0 -19
- package/inc/util/stream/length.h +0 -100
- package/inc/util/stream/mem.h +0 -255
- package/inc/util/stream/multi.h +0 -32
- package/inc/util/stream/null.h +0 -61
- package/inc/util/stream/output.h +0 -304
- package/inc/util/stream/pipe.h +0 -112
- package/inc/util/stream/printf.h +0 -25
- package/inc/util/stream/str.h +0 -207
- package/inc/util/stream/tee.h +0 -28
- package/inc/util/stream/tempbuf.h +0 -21
- package/inc/util/stream/tokenizer.h +0 -214
- package/inc/util/stream/trace.h +0 -60
- package/inc/util/stream/walk.h +0 -35
- package/inc/util/stream/zerocopy.h +0 -91
- package/inc/util/stream/zerocopy_output.h +0 -57
- package/inc/util/stream/zlib.h +0 -173
- package/inc/util/string/ascii.h +0 -236
- package/inc/util/string/builder.h +0 -39
- package/inc/util/string/cast.h +0 -347
- package/inc/util/string/cstriter.h +0 -14
- package/inc/util/string/escape.h +0 -70
- package/inc/util/string/hex.h +0 -59
- package/inc/util/string/join.h +0 -194
- package/inc/util/string/printf.h +0 -13
- package/inc/util/string/reverse.h +0 -16
- package/inc/util/string/split.h +0 -1080
- package/inc/util/string/strip.h +0 -257
- package/inc/util/string/strspn.h +0 -65
- package/inc/util/string/subst.h +0 -56
- package/inc/util/string/type.h +0 -50
- package/inc/util/string/util.h +0 -195
- package/inc/util/string/vector.h +0 -132
- package/inc/util/system/align.h +0 -50
- package/inc/util/system/atexit.h +0 -22
- package/inc/util/system/atomic.h +0 -51
- package/inc/util/system/atomic_gcc.h +0 -90
- package/inc/util/system/atomic_ops.h +0 -189
- package/inc/util/system/atomic_win.h +0 -114
- package/inc/util/system/backtrace.h +0 -39
- package/inc/util/system/byteorder.h +0 -186
- package/inc/util/system/compat.h +0 -84
- package/inc/util/system/compiler.h +0 -620
- package/inc/util/system/condvar.h +0 -71
- package/inc/util/system/context.h +0 -181
- package/inc/util/system/context_aarch64.h +0 -8
- package/inc/util/system/context_i686.h +0 -9
- package/inc/util/system/context_x86.h +0 -12
- package/inc/util/system/context_x86_64.h +0 -7
- package/inc/util/system/cpu_id.h +0 -159
- package/inc/util/system/daemon.h +0 -28
- package/inc/util/system/datetime.h +0 -98
- package/inc/util/system/defaults.h +0 -149
- package/inc/util/system/demangle.h +0 -5
- package/inc/util/system/demangle_impl.h +0 -23
- package/inc/util/system/direct_io.h +0 -71
- package/inc/util/system/dynlib.h +0 -119
- package/inc/util/system/env.h +0 -32
- package/inc/util/system/error.h +0 -95
- package/inc/util/system/event.h +0 -122
- package/inc/util/system/execpath.h +0 -17
- package/inc/util/system/fasttime.h +0 -6
- package/inc/util/system/fhandle.h +0 -27
- package/inc/util/system/file.h +0 -210
- package/inc/util/system/file_lock.h +0 -34
- package/inc/util/system/filemap.h +0 -383
- package/inc/util/system/flock.h +0 -35
- package/inc/util/system/fs.h +0 -156
- package/inc/util/system/fs_win.h +0 -29
- package/inc/util/system/fstat.h +0 -46
- package/inc/util/system/getpid.h +0 -12
- package/inc/util/system/guard.h +0 -179
- package/inc/util/system/hi_lo.h +0 -139
- package/inc/util/system/hostname.h +0 -10
- package/inc/util/system/hp_timer.h +0 -36
- package/inc/util/system/info.h +0 -12
- package/inc/util/system/interrupt_signals.h +0 -22
- package/inc/util/system/madvise.h +0 -30
- package/inc/util/system/maxlen.h +0 -32
- package/inc/util/system/mem_info.h +0 -18
- package/inc/util/system/mincore.h +0 -38
- package/inc/util/system/mktemp.h +0 -11
- package/inc/util/system/mlock.h +0 -43
- package/inc/util/system/mutex.h +0 -67
- package/inc/util/system/nice.h +0 -3
- package/inc/util/system/pipe.h +0 -90
- package/inc/util/system/platform.h +0 -246
- package/inc/util/system/progname.h +0 -13
- package/inc/util/system/protect.h +0 -25
- package/inc/util/system/rusage.h +0 -26
- package/inc/util/system/rwlock.h +0 -78
- package/inc/util/system/sanitizers.h +0 -122
- package/inc/util/system/sem.h +0 -41
- package/inc/util/system/shellcommand.h +0 -472
- package/inc/util/system/shmat.h +0 -32
- package/inc/util/system/sigset.h +0 -78
- package/inc/util/system/spin_wait.h +0 -10
- package/inc/util/system/spinlock.h +0 -121
- package/inc/util/system/src_location.h +0 -25
- package/inc/util/system/src_root.h +0 -68
- package/inc/util/system/sys_alloc.h +0 -43
- package/inc/util/system/sysstat.h +0 -52
- package/inc/util/system/tempfile.h +0 -34
- package/inc/util/system/thread.h +0 -167
- package/inc/util/system/tls.h +0 -307
- package/inc/util/system/types.h +0 -119
- package/inc/util/system/unaligned_mem.h +0 -67
- package/inc/util/system/user.h +0 -5
- package/inc/util/system/utime.h +0 -6
- package/inc/util/system/valgrind.h +0 -48
- package/inc/util/system/winint.h +0 -43
- package/inc/util/system/yassert.h +0 -121
- package/inc/util/system/yield.h +0 -4
- package/inc/util/thread/factory.h +0 -65
- package/inc/util/thread/fwd.h +0 -30
- package/inc/util/thread/lfqueue.h +0 -406
- package/inc/util/thread/lfstack.h +0 -188
- package/inc/util/thread/pool.h +0 -388
- package/inc/util/thread/singleton.h +0 -42
- package/inc/util/ysafeptr.h +0 -427
- package/inc/util/ysaveload.h +0 -700
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "align.h"
|
|
4
|
-
|
|
5
|
-
#include "file.h"
|
|
6
|
-
#include <util/generic/buffer.h>
|
|
7
|
-
|
|
8
|
-
// Supports Linux Direct-IO:
|
|
9
|
-
// - Simple buffering logic.
|
|
10
|
-
// - Default buffer size of 128KB matches VM page writeback granularity, to maximize IO throughput.
|
|
11
|
-
// - Supports writing odd sized files by turning off direct IO for the last chunk.
|
|
12
|
-
class TDirectIOBufferedFile {
|
|
13
|
-
public:
|
|
14
|
-
TDirectIOBufferedFile(const TString& path, EOpenMode oMode, size_t buflen = 1 << 17);
|
|
15
|
-
~TDirectIOBufferedFile();
|
|
16
|
-
|
|
17
|
-
void FlushData();
|
|
18
|
-
void Finish();
|
|
19
|
-
size_t Read(void* buffer, size_t byteCount);
|
|
20
|
-
void Write(const void* buffer, size_t byteCount);
|
|
21
|
-
size_t Pread(void* buffer, size_t byteCount, ui64 offset);
|
|
22
|
-
void Pwrite(const void* buffer, size_t byteCount, ui64 offset);
|
|
23
|
-
|
|
24
|
-
inline bool IsOpen() const {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
inline ui64 GetWritePosition() const {
|
|
29
|
-
return WritePosition;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
inline ui64 GetLength() const {
|
|
33
|
-
return FlushedBytes + DataLen;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
inline FHANDLE GetHandle() {
|
|
37
|
-
return File.GetHandle();
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
inline void FallocateNoResize(ui64 length) {
|
|
41
|
-
File.FallocateNoResize(length);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
private:
|
|
45
|
-
inline bool IsAligned(i64 value) {
|
|
46
|
-
return Alignment ? value == AlignDown<i64>(value, Alignment) : true;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
inline bool IsAligned(const void* value) {
|
|
50
|
-
return Alignment ? value == AlignDown(value, Alignment) : true;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
size_t PreadSafe(void* buffer, size_t byteCount, ui64 offset);
|
|
54
|
-
size_t ReadFromFile(void* buffer, size_t byteCount, ui64 offset);
|
|
55
|
-
void WriteToFile(const void* buf, size_t len, ui64 position);
|
|
56
|
-
void WriteToBuffer(const void* buf, size_t len, ui64 position);
|
|
57
|
-
void SetDirectIO(bool value);
|
|
58
|
-
|
|
59
|
-
private:
|
|
60
|
-
TFile File;
|
|
61
|
-
size_t Alignment;
|
|
62
|
-
size_t BufLen;
|
|
63
|
-
size_t DataLen;
|
|
64
|
-
void* Buffer;
|
|
65
|
-
TBuffer BufferStorage;
|
|
66
|
-
ui64 ReadPosition;
|
|
67
|
-
ui64 WritePosition;
|
|
68
|
-
ui64 FlushedBytes;
|
|
69
|
-
ui64 FlushedToDisk;
|
|
70
|
-
bool DirectIO;
|
|
71
|
-
};
|
package/inc/util/system/dynlib.h
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "defaults.h"
|
|
4
|
-
|
|
5
|
-
#include <util/generic/ptr.h>
|
|
6
|
-
#include <util/generic/string.h>
|
|
7
|
-
|
|
8
|
-
#define Y_GET_FUNC(dll, name) FUNC_##name((dll).Sym(#name))
|
|
9
|
-
#define Y_GET_FUNC_OPTIONAL(dll, name) FUNC_##name((dll).SymOptional(#name))
|
|
10
|
-
|
|
11
|
-
#ifdef _win32_
|
|
12
|
-
#define DEFAULT_DLLOPEN_FLAGS 0
|
|
13
|
-
#else
|
|
14
|
-
#include <dlfcn.h>
|
|
15
|
-
|
|
16
|
-
#ifndef RTLD_GLOBAL
|
|
17
|
-
#define RTLD_GLOBAL (0)
|
|
18
|
-
#endif
|
|
19
|
-
|
|
20
|
-
#define DEFAULT_DLLOPEN_FLAGS (RTLD_NOW | RTLD_GLOBAL)
|
|
21
|
-
#endif
|
|
22
|
-
|
|
23
|
-
class TDynamicLibrary {
|
|
24
|
-
public:
|
|
25
|
-
TDynamicLibrary() noexcept;
|
|
26
|
-
TDynamicLibrary(const TString& path, int flags = DEFAULT_DLLOPEN_FLAGS);
|
|
27
|
-
~TDynamicLibrary();
|
|
28
|
-
|
|
29
|
-
void Open(const char* path, int flags = DEFAULT_DLLOPEN_FLAGS);
|
|
30
|
-
void Close() noexcept;
|
|
31
|
-
void* SymOptional(const char* name) noexcept;
|
|
32
|
-
void* Sym(const char* name);
|
|
33
|
-
bool IsLoaded() const noexcept;
|
|
34
|
-
void SetUnloadable(bool unloadable); // Set to false to avoid unloading on destructor
|
|
35
|
-
|
|
36
|
-
private:
|
|
37
|
-
class TImpl;
|
|
38
|
-
THolder<TImpl> Impl_;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
// a wrapper for a symbol
|
|
42
|
-
template <class TLib>
|
|
43
|
-
class TExternalSymbol {
|
|
44
|
-
private:
|
|
45
|
-
TLib* PLib;
|
|
46
|
-
TDynamicLibrary* DLib;
|
|
47
|
-
TString lname;
|
|
48
|
-
TString vname;
|
|
49
|
-
|
|
50
|
-
public:
|
|
51
|
-
TExternalSymbol() noexcept {
|
|
52
|
-
PLib = nullptr;
|
|
53
|
-
DLib = nullptr;
|
|
54
|
-
}
|
|
55
|
-
TExternalSymbol(const TExternalSymbol& es) {
|
|
56
|
-
PLib = nullptr;
|
|
57
|
-
DLib = nullptr;
|
|
58
|
-
if (es.IsDynamic())
|
|
59
|
-
Open(es.LibName().data(), es.VtblName().data());
|
|
60
|
-
else if (es.IsStatic())
|
|
61
|
-
SetSym(es.Symbol());
|
|
62
|
-
}
|
|
63
|
-
TExternalSymbol& operator=(const TExternalSymbol& es) {
|
|
64
|
-
if (this != &es) {
|
|
65
|
-
Close();
|
|
66
|
-
if (es.IsDynamic())
|
|
67
|
-
Open(es.LibName().data(), es.VtblName().data());
|
|
68
|
-
else if (es.IsStatic())
|
|
69
|
-
SetSym(es.Symbol());
|
|
70
|
-
}
|
|
71
|
-
return *this;
|
|
72
|
-
}
|
|
73
|
-
~TExternalSymbol() {
|
|
74
|
-
delete DLib;
|
|
75
|
-
}
|
|
76
|
-
// set the symbol from dynamic source
|
|
77
|
-
void Open(const char* lib_name, const char* vtbl_name) {
|
|
78
|
-
if (DLib != nullptr || PLib != nullptr)
|
|
79
|
-
return;
|
|
80
|
-
try {
|
|
81
|
-
DLib = new TDynamicLibrary();
|
|
82
|
-
DLib->Open(lib_name);
|
|
83
|
-
PLib = (TLib*)DLib->Sym(vtbl_name);
|
|
84
|
-
} catch (...) {
|
|
85
|
-
delete DLib;
|
|
86
|
-
DLib = nullptr;
|
|
87
|
-
throw;
|
|
88
|
-
}
|
|
89
|
-
lname = lib_name;
|
|
90
|
-
vname = vtbl_name;
|
|
91
|
-
}
|
|
92
|
-
// set the symbol from static source
|
|
93
|
-
void SetSym(TLib* pl) noexcept {
|
|
94
|
-
if (DLib == nullptr && PLib == nullptr)
|
|
95
|
-
PLib = pl;
|
|
96
|
-
}
|
|
97
|
-
void Close() noexcept {
|
|
98
|
-
delete DLib;
|
|
99
|
-
DLib = 0;
|
|
100
|
-
PLib = 0;
|
|
101
|
-
lname.remove();
|
|
102
|
-
vname.remove();
|
|
103
|
-
}
|
|
104
|
-
TLib* Symbol() const noexcept {
|
|
105
|
-
return PLib;
|
|
106
|
-
}
|
|
107
|
-
const TString& LibName() const noexcept {
|
|
108
|
-
return lname;
|
|
109
|
-
}
|
|
110
|
-
const TString& VtblName() const noexcept {
|
|
111
|
-
return vname;
|
|
112
|
-
}
|
|
113
|
-
bool IsStatic() const noexcept {
|
|
114
|
-
return DLib == nullptr && PLib != nullptr;
|
|
115
|
-
}
|
|
116
|
-
bool IsDynamic() const noexcept {
|
|
117
|
-
return DLib && DLib->IsLoaded() && PLib != nullptr;
|
|
118
|
-
}
|
|
119
|
-
};
|
package/inc/util/system/env.h
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <util/generic/string.h>
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Search the environment list provided by the host environment for associated variable.
|
|
7
|
-
*
|
|
8
|
-
* @param key String identifying the name of the environmental variable to look for
|
|
9
|
-
* @param def String that returns if environmental variable not found by key
|
|
10
|
-
*
|
|
11
|
-
* @return String that is associated with the matched environment variable or empty string if
|
|
12
|
-
* such variable is missing.
|
|
13
|
-
*
|
|
14
|
-
* @note Use it only in pair with `SetEnv` as there may be inconsistency in their behaviour
|
|
15
|
-
* otherwise.
|
|
16
|
-
* @note Calls to `GetEnv` and `SetEnv` from different threads must be synchronized.
|
|
17
|
-
* @see SetEnv
|
|
18
|
-
*/
|
|
19
|
-
TString GetEnv(const TString& key, const TString& def = TString());
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Add or change environment variable provided by the host environment.
|
|
23
|
-
*
|
|
24
|
-
* @key String identifying the name of the environment variable to set or change
|
|
25
|
-
* @value Value to assign
|
|
26
|
-
|
|
27
|
-
* @note Use it only in pair with `GetEnv` as there may be inconsistency in their behaviour
|
|
28
|
-
* otherwise.
|
|
29
|
-
* @note Calls to `GetEnv` and `SetEnv` from different threads must be synchronized.
|
|
30
|
-
* @see GetEnv
|
|
31
|
-
*/
|
|
32
|
-
void SetEnv(const TString& key, const TString& value);
|
package/inc/util/system/error.h
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "defaults.h"
|
|
4
|
-
|
|
5
|
-
#if defined(_win_)
|
|
6
|
-
#include <winerror.h>
|
|
7
|
-
#include <errno.h>
|
|
8
|
-
|
|
9
|
-
#undef E_FAIL
|
|
10
|
-
#undef ERROR_TIMEOUT
|
|
11
|
-
|
|
12
|
-
#if defined(_MSC_VER)
|
|
13
|
-
#undef EADDRINUSE
|
|
14
|
-
#undef EADDRNOTAVAIL
|
|
15
|
-
#undef EAFNOSUPPORT
|
|
16
|
-
#undef EALREADY
|
|
17
|
-
#undef ECANCELED
|
|
18
|
-
#undef ECONNABORTED
|
|
19
|
-
#undef ECONNREFUSED
|
|
20
|
-
#undef ECONNRESET
|
|
21
|
-
#undef EDESTADDRREQ
|
|
22
|
-
#undef EHOSTUNREACH
|
|
23
|
-
#undef EINPROGRESS
|
|
24
|
-
#undef EISCONN
|
|
25
|
-
#undef ELOOP
|
|
26
|
-
#undef EMSGSIZE
|
|
27
|
-
#undef ENETDOWN
|
|
28
|
-
#undef ENETRESET
|
|
29
|
-
#undef ENETUNREACH
|
|
30
|
-
#undef ENOBUFS
|
|
31
|
-
#undef ENOPROTOOPT
|
|
32
|
-
#undef ENOTCONN
|
|
33
|
-
#undef ENOTSOCK
|
|
34
|
-
#undef EOPNOTSUPP
|
|
35
|
-
#undef EPROTONOSUPPORT
|
|
36
|
-
#undef EPROTOTYPE
|
|
37
|
-
#undef ETIMEDOUT
|
|
38
|
-
#undef EWOULDBLOCK
|
|
39
|
-
#undef ENAMETOOLONG
|
|
40
|
-
#undef ENOTEMPTY
|
|
41
|
-
|
|
42
|
-
#define EWOULDBLOCK WSAEWOULDBLOCK
|
|
43
|
-
#define EINPROGRESS WSAEINPROGRESS
|
|
44
|
-
#define EALREADY WSAEALREADY
|
|
45
|
-
#define ENOTSOCK WSAENOTSOCK
|
|
46
|
-
#define EDESTADDRREQ WSAEDESTADDRREQ
|
|
47
|
-
#define EMSGSIZE WSAEMSGSIZE
|
|
48
|
-
#define EPROTOTYPE WSAEPROTOTYPE
|
|
49
|
-
#define ENOPROTOOPT WSAENOPROTOOPT
|
|
50
|
-
#define EPROTONOSUPPORT WSAEPROTONOSUPPORT
|
|
51
|
-
#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
|
|
52
|
-
#define EOPNOTSUPP WSAEOPNOTSUPP
|
|
53
|
-
#define EPFNOSUPPORT WSAEPFNOSUPPORT
|
|
54
|
-
#define EAFNOSUPPORT WSAEAFNOSUPPORT
|
|
55
|
-
#define EADDRINUSE WSAEADDRINUSE
|
|
56
|
-
#define EADDRNOTAVAIL WSAEADDRNOTAVAIL
|
|
57
|
-
#define ENETDOWN WSAENETDOWN
|
|
58
|
-
#define ENETUNREACH WSAENETUNREACH
|
|
59
|
-
#define ENETRESET WSAENETRESET
|
|
60
|
-
#define ECONNABORTED WSAECONNABORTED
|
|
61
|
-
#define ECONNRESET WSAECONNRESET
|
|
62
|
-
#define ENOBUFS WSAENOBUFS
|
|
63
|
-
#define EISCONN WSAEISCONN
|
|
64
|
-
#define ENOTCONN WSAENOTCONN
|
|
65
|
-
#define ESHUTDOWN WSAESHUTDOWN
|
|
66
|
-
#define ETOOMANYREFS WSAETOOMANYREFS
|
|
67
|
-
#define ETIMEDOUT WSAETIMEDOUT
|
|
68
|
-
#define ECONNREFUSED WSAECONNREFUSED
|
|
69
|
-
#define ELOOP WSAELOOP
|
|
70
|
-
#define ENAMETOOLONG WSAENAMETOOLONG
|
|
71
|
-
#define EHOSTDOWN WSAEHOSTDOWN
|
|
72
|
-
#define EHOSTUNREACH WSAEHOSTUNREACH
|
|
73
|
-
#define ENOTEMPTY WSAENOTEMPTY
|
|
74
|
-
#define EPROCLIM WSAEPROCLIM
|
|
75
|
-
#define EUSERS WSAEUSERS
|
|
76
|
-
#define ESTALE WSAESTALE
|
|
77
|
-
#define EREMOTE WSAEREMOTE
|
|
78
|
-
#define ECANCELED WSAECANCELLED
|
|
79
|
-
#endif
|
|
80
|
-
|
|
81
|
-
#define EDQUOT WSAEDQUOT
|
|
82
|
-
#endif
|
|
83
|
-
|
|
84
|
-
void ClearLastSystemError();
|
|
85
|
-
int LastSystemError();
|
|
86
|
-
void LastSystemErrorText(char* str, size_t size, int code);
|
|
87
|
-
const char* LastSystemErrorText(int code);
|
|
88
|
-
|
|
89
|
-
inline const char* LastSystemErrorText() {
|
|
90
|
-
return LastSystemErrorText(LastSystemError());
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
inline void LastSystemErrorText(char* str, size_t size) {
|
|
94
|
-
LastSystemErrorText(str, size, LastSystemError());
|
|
95
|
-
}
|
package/inc/util/system/event.h
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <util/generic/ptr.h>
|
|
4
|
-
#include <util/datetime/base.h>
|
|
5
|
-
|
|
6
|
-
struct TEventResetType {
|
|
7
|
-
enum ResetMode {
|
|
8
|
-
rAuto, // the state will be nonsignaled after Wait() returns
|
|
9
|
-
rManual, // we need call Reset() to set the state to nonsignaled.
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* DEPRECATED!
|
|
15
|
-
*
|
|
16
|
-
* Use TAutoEvent, TManualEvent for the direct replacement.
|
|
17
|
-
* Use TManualEvent to prevent SEGFAULT (http://nga.at.yandex-team.ru/5772).
|
|
18
|
-
*/
|
|
19
|
-
class TSystemEvent: public TEventResetType {
|
|
20
|
-
public:
|
|
21
|
-
TSystemEvent(ResetMode rmode = rManual);
|
|
22
|
-
TSystemEvent(const TSystemEvent& other) noexcept;
|
|
23
|
-
TSystemEvent& operator=(const TSystemEvent& other) noexcept;
|
|
24
|
-
|
|
25
|
-
~TSystemEvent();
|
|
26
|
-
|
|
27
|
-
void Reset() noexcept;
|
|
28
|
-
void Signal() noexcept;
|
|
29
|
-
|
|
30
|
-
/*
|
|
31
|
-
* return true if signaled, false if timed out.
|
|
32
|
-
*/
|
|
33
|
-
bool WaitD(TInstant deadLine) noexcept;
|
|
34
|
-
|
|
35
|
-
/*
|
|
36
|
-
* return true if signaled, false if timed out.
|
|
37
|
-
*/
|
|
38
|
-
inline bool WaitT(TDuration timeOut) noexcept {
|
|
39
|
-
return WaitD(timeOut.ToDeadLine());
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/*
|
|
43
|
-
* wait infinite time
|
|
44
|
-
*/
|
|
45
|
-
inline void WaitI() noexcept {
|
|
46
|
-
WaitD(TInstant::Max());
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
//return true if signaled, false if timed out.
|
|
50
|
-
inline bool Wait(ui32 timer) noexcept {
|
|
51
|
-
return WaitT(TDuration::MilliSeconds(timer));
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
inline bool Wait() noexcept {
|
|
55
|
-
WaitI();
|
|
56
|
-
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
private:
|
|
61
|
-
class TEvImpl;
|
|
62
|
-
TIntrusivePtr<TEvImpl> EvImpl_;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
class TAutoEvent: public TSystemEvent {
|
|
66
|
-
public:
|
|
67
|
-
TAutoEvent()
|
|
68
|
-
: TSystemEvent(TSystemEvent::rAuto)
|
|
69
|
-
{
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
private:
|
|
73
|
-
void Reset() noexcept;
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Prevents from a "shortcut problem" (see http://nga.at.yandex-team.ru/5772): if Wait will be called after Signaled
|
|
78
|
-
* flag set to true in Signal method but before CondVar.BroadCast - Wait will shortcut (without actual wait on condvar).
|
|
79
|
-
* If Wait thread will destruct event - Signal thread will do broadcast on a destructed CondVar.
|
|
80
|
-
*/
|
|
81
|
-
class TManualEvent {
|
|
82
|
-
public:
|
|
83
|
-
TManualEvent()
|
|
84
|
-
: Ev(TEventResetType::rManual)
|
|
85
|
-
{
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
void Reset() noexcept {
|
|
89
|
-
TSystemEvent{Ev}.Reset();
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
void Signal() noexcept {
|
|
93
|
-
TSystemEvent{Ev}.Signal();
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/** return true if signaled, false if timed out. */
|
|
97
|
-
bool WaitD(TInstant deadLine) noexcept {
|
|
98
|
-
return TSystemEvent{Ev}.WaitD(deadLine);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/** return true if signaled, false if timed out. */
|
|
102
|
-
inline bool WaitT(TDuration timeOut) noexcept {
|
|
103
|
-
return TSystemEvent{Ev}.WaitT(timeOut);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/** Wait infinite time */
|
|
107
|
-
inline void WaitI() noexcept {
|
|
108
|
-
TSystemEvent{Ev}.WaitI();
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/** return true if signaled, false if timed out. */
|
|
112
|
-
inline bool Wait(ui32 timer) noexcept {
|
|
113
|
-
return TSystemEvent{Ev}.Wait(timer);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
inline bool Wait() noexcept {
|
|
117
|
-
return TSystemEvent{Ev}.Wait();
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
private:
|
|
121
|
-
TSystemEvent Ev;
|
|
122
|
-
};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <util/generic/fwd.h>
|
|
4
|
-
|
|
5
|
-
// NOTE: This function has rare sporadic failures (throws exceptions) on FreeBSD. See REVIEW:54297
|
|
6
|
-
const TString& GetExecPath();
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Get openable path to the binary currently being executed.
|
|
10
|
-
*
|
|
11
|
-
* The path does not match the original binary location, but stays openable even
|
|
12
|
-
* if the binary was moved or removed.
|
|
13
|
-
*
|
|
14
|
-
* On UNIX variants, utilizes the /proc FS. On Windows, equivalent to
|
|
15
|
-
* GetExecPath.
|
|
16
|
-
*/
|
|
17
|
-
const TString& GetPersistentExecPath();
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "defaults.h"
|
|
4
|
-
|
|
5
|
-
using WIN_HANDLE = void*;
|
|
6
|
-
#define INVALID_WIN_HANDLE ((WIN_HANDLE)(long)-1)
|
|
7
|
-
|
|
8
|
-
using UNIX_HANDLE = int;
|
|
9
|
-
#define INVALID_UNIX_HANDLE -1
|
|
10
|
-
|
|
11
|
-
#if defined(_win_)
|
|
12
|
-
using FHANDLE = WIN_HANDLE;
|
|
13
|
-
#define INVALID_FHANDLE INVALID_WIN_HANDLE
|
|
14
|
-
#elif defined(_unix_)
|
|
15
|
-
using FHANDLE = UNIX_HANDLE;
|
|
16
|
-
#define INVALID_FHANDLE INVALID_UNIX_HANDLE
|
|
17
|
-
#else
|
|
18
|
-
#error
|
|
19
|
-
#endif
|
|
20
|
-
|
|
21
|
-
#if defined(_cygwin_)
|
|
22
|
-
using OS_HANDLE = WIN_HANDLE;
|
|
23
|
-
#define INVALID_OS_HANDLE INVALID_WIN_HANDLE
|
|
24
|
-
#else
|
|
25
|
-
using OS_HANDLE = FHANDLE;
|
|
26
|
-
#define INVALID_OS_HANDLE INVALID_FHANDLE
|
|
27
|
-
#endif
|
package/inc/util/system/file.h
DELETED
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "fhandle.h"
|
|
4
|
-
#include "flock.h"
|
|
5
|
-
|
|
6
|
-
#include <util/generic/flags.h>
|
|
7
|
-
#include <util/generic/ptr.h>
|
|
8
|
-
#include <util/generic/noncopyable.h>
|
|
9
|
-
|
|
10
|
-
#include <cstdio>
|
|
11
|
-
|
|
12
|
-
enum EOpenModeFlag {
|
|
13
|
-
OpenExisting = 0, // Opens a file. It fails if the file does not exist.
|
|
14
|
-
TruncExisting = 1, // Opens a file and truncates it to zero size. It fails if the file does not exist.
|
|
15
|
-
OpenAlways = 2, // Opens a file, always. If a file does not exist, it creates a file.
|
|
16
|
-
CreateNew = 3, // Creates a new file. It fails if a specified file exists.
|
|
17
|
-
CreateAlways = 4, // Creates a new file, always. If a file exists, it overwrites the file.
|
|
18
|
-
MaskCreation = 7,
|
|
19
|
-
|
|
20
|
-
RdOnly = 8, // open for reading only
|
|
21
|
-
WrOnly = 16, // open for writing only
|
|
22
|
-
RdWr = 24, // open for reading and writing
|
|
23
|
-
MaskRW = 24,
|
|
24
|
-
|
|
25
|
-
Seq = 0x20, // file access is primarily sequential (POSIX_FADV_SEQUENTIAL)
|
|
26
|
-
Direct = 0x40, // file is being opened with no system caching (Does not work as intended! See implementation)
|
|
27
|
-
Temp = 0x80, // avoid writing data back to disk if sufficient cache memory is available (no op for linux)
|
|
28
|
-
ForAppend = 0x100, // write appends data to the end of file (O_APPEND)
|
|
29
|
-
Transient = 0x200, // actually, temporary file - 'delete on close' for windows, unlink after creation for unix
|
|
30
|
-
NoReuse = 0x400, // no second access expected (POSIX_FADV_NOREUSE)
|
|
31
|
-
CloseOnExec = 0x800, // set close-on-exec right at open (O_CLOEXEC)
|
|
32
|
-
DirectAligned = 0x1000, // file is actually being opened with no system caching (may require buffer alignment) (O_DIRECT)
|
|
33
|
-
Sync = 0x2000, // no write call will return before the data is transferred to the disk (O_SYNC)
|
|
34
|
-
NoReadAhead = 0x4000, // no sequential access expected, opposite for Seq (POSIX_FADV_RANDOM)
|
|
35
|
-
|
|
36
|
-
AXOther = 0x00010000,
|
|
37
|
-
AWOther = 0x00020000,
|
|
38
|
-
AROther = 0x00040000,
|
|
39
|
-
AXGroup = 0x00100000,
|
|
40
|
-
AWGroup = 0x00200000,
|
|
41
|
-
ARGroup = 0x00400000,
|
|
42
|
-
AXUser = 0x01000000,
|
|
43
|
-
AWUser = 0x02000000,
|
|
44
|
-
ARUser = 0x04000000,
|
|
45
|
-
AX = AXUser | AXGroup | AXOther,
|
|
46
|
-
AW = AWUser | AWGroup,
|
|
47
|
-
AR = ARUser | ARGroup | AROther,
|
|
48
|
-
ARW = AR | AW,
|
|
49
|
-
AMask = 0x0FFF0000,
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
Y_DECLARE_FLAGS(EOpenMode, EOpenModeFlag)
|
|
53
|
-
Y_DECLARE_OPERATORS_FOR_FLAGS(EOpenMode)
|
|
54
|
-
|
|
55
|
-
TString DecodeOpenMode(ui32 openMode);
|
|
56
|
-
|
|
57
|
-
enum SeekDir {
|
|
58
|
-
sSet = 0,
|
|
59
|
-
sCur = 1,
|
|
60
|
-
sEnd = 2,
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
class TFileHandle: public TNonCopyable {
|
|
64
|
-
public:
|
|
65
|
-
constexpr TFileHandle() = default;
|
|
66
|
-
|
|
67
|
-
/// Warning: takes ownership of fd, so closes it in destructor.
|
|
68
|
-
inline TFileHandle(FHANDLE fd) noexcept
|
|
69
|
-
: Fd_(fd)
|
|
70
|
-
{
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
inline TFileHandle(TFileHandle&& other) noexcept
|
|
74
|
-
: Fd_(other.Fd_)
|
|
75
|
-
{
|
|
76
|
-
other.Fd_ = INVALID_FHANDLE;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
TFileHandle(const TString& fName, EOpenMode oMode) noexcept;
|
|
80
|
-
|
|
81
|
-
inline ~TFileHandle() {
|
|
82
|
-
Close();
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
bool Close() noexcept;
|
|
86
|
-
|
|
87
|
-
inline FHANDLE Release() noexcept {
|
|
88
|
-
FHANDLE ret = Fd_;
|
|
89
|
-
Fd_ = INVALID_FHANDLE;
|
|
90
|
-
return ret;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
inline void Swap(TFileHandle& r) noexcept {
|
|
94
|
-
DoSwap(Fd_, r.Fd_);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
inline operator FHANDLE() const noexcept {
|
|
98
|
-
return Fd_;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
inline bool IsOpen() const noexcept {
|
|
102
|
-
return Fd_ != INVALID_FHANDLE;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
i64 GetPosition() const noexcept;
|
|
106
|
-
i64 GetLength() const noexcept;
|
|
107
|
-
|
|
108
|
-
i64 Seek(i64 offset, SeekDir origin) noexcept;
|
|
109
|
-
bool Resize(i64 length) noexcept;
|
|
110
|
-
bool Reserve(i64 length) noexcept;
|
|
111
|
-
bool FallocateNoResize(i64 length) noexcept;
|
|
112
|
-
bool Flush() noexcept;
|
|
113
|
-
//flush data only, without file metadata
|
|
114
|
-
bool FlushData() noexcept;
|
|
115
|
-
i32 Read(void* buffer, ui32 byteCount) noexcept;
|
|
116
|
-
i32 Write(const void* buffer, ui32 byteCount) noexcept;
|
|
117
|
-
i32 Pread(void* buffer, ui32 byteCount, i64 offset) const noexcept;
|
|
118
|
-
i32 Pwrite(const void* buffer, ui32 byteCount, i64 offset) const noexcept;
|
|
119
|
-
int Flock(int op) noexcept;
|
|
120
|
-
|
|
121
|
-
FHANDLE Duplicate() const noexcept;
|
|
122
|
-
int Duplicate2Posix(int dstHandle) const noexcept;
|
|
123
|
-
|
|
124
|
-
//dup2 - like semantics, return true on success
|
|
125
|
-
bool LinkTo(const TFileHandle& fh) const noexcept;
|
|
126
|
-
|
|
127
|
-
//very low-level methods
|
|
128
|
-
bool SetDirect();
|
|
129
|
-
void ResetDirect();
|
|
130
|
-
|
|
131
|
-
/* Manual file cache management, length = 0 means "as much as possible" */
|
|
132
|
-
|
|
133
|
-
//measure amount of cached data in bytes, returns -1 if failed
|
|
134
|
-
i64 CountCache(i64 offset = 0, i64 length = 0) const noexcept;
|
|
135
|
-
//read data into cache and optionally wait for completion
|
|
136
|
-
void PrefetchCache(i64 offset = 0, i64 length = 0, bool wait = true) const noexcept;
|
|
137
|
-
//remove clean and unused data from cache
|
|
138
|
-
void EvictCache(i64 offset = 0, i64 length = 0) const noexcept;
|
|
139
|
-
//flush unwritten data in this range and optionally wait for completion
|
|
140
|
-
bool FlushCache(i64 offset = 0, i64 length = 0, bool wait = true) noexcept;
|
|
141
|
-
|
|
142
|
-
private:
|
|
143
|
-
FHANDLE Fd_ = INVALID_FHANDLE;
|
|
144
|
-
};
|
|
145
|
-
|
|
146
|
-
class TFile {
|
|
147
|
-
public:
|
|
148
|
-
TFile();
|
|
149
|
-
/// Takes ownership of handle, so closes it when the last holder of descriptor dies.
|
|
150
|
-
explicit TFile(FHANDLE fd);
|
|
151
|
-
TFile(FHANDLE fd, const TString& fname);
|
|
152
|
-
TFile(const TString& fName, EOpenMode oMode);
|
|
153
|
-
~TFile();
|
|
154
|
-
|
|
155
|
-
void Close();
|
|
156
|
-
|
|
157
|
-
const TString& GetName() const noexcept;
|
|
158
|
-
i64 GetPosition() const noexcept;
|
|
159
|
-
i64 GetLength() const noexcept;
|
|
160
|
-
bool IsOpen() const noexcept;
|
|
161
|
-
FHANDLE GetHandle() const noexcept;
|
|
162
|
-
|
|
163
|
-
i64 Seek(i64 offset, SeekDir origin);
|
|
164
|
-
void Resize(i64 length);
|
|
165
|
-
void Reserve(i64 length);
|
|
166
|
-
void FallocateNoResize(i64 length);
|
|
167
|
-
void Flush();
|
|
168
|
-
void FlushData();
|
|
169
|
-
|
|
170
|
-
void LinkTo(const TFile& f) const;
|
|
171
|
-
TFile Duplicate() const;
|
|
172
|
-
|
|
173
|
-
size_t Read(void* buf, size_t len);
|
|
174
|
-
size_t ReadOrFail(void* buf, size_t len);
|
|
175
|
-
i32 RawRead(void* buf, size_t len);
|
|
176
|
-
void Load(void* buf, size_t len);
|
|
177
|
-
void Write(const void* buf, size_t len);
|
|
178
|
-
size_t Pread(void* buf, size_t len, i64 offset) const;
|
|
179
|
-
i32 RawPread(void* buf, ui32 len, i64 offset) const;
|
|
180
|
-
void Pload(void* buf, size_t len, i64 offset) const;
|
|
181
|
-
void Pwrite(const void* buf, size_t len, i64 offset) const;
|
|
182
|
-
void Flock(int op);
|
|
183
|
-
|
|
184
|
-
//do not use, their meaning very platform-dependant
|
|
185
|
-
void SetDirect();
|
|
186
|
-
void ResetDirect();
|
|
187
|
-
|
|
188
|
-
/* Manual file cache management, length = 0 means "as much as possible" */
|
|
189
|
-
|
|
190
|
-
//measure amount of cached data in bytes, returns -1 if failed
|
|
191
|
-
i64 CountCache(i64 offset = 0, i64 length = 0) const noexcept;
|
|
192
|
-
//read data into cache and optionally wait for completion
|
|
193
|
-
void PrefetchCache(i64 offset = 0, i64 length = 0, bool wait = true) const noexcept;
|
|
194
|
-
//remove clean and unused data from cache, incomplete pages could stay
|
|
195
|
-
void EvictCache(i64 offset = 0, i64 length = 0) const noexcept;
|
|
196
|
-
//flush unwritten data in this range and optionally wait for completion
|
|
197
|
-
void FlushCache(i64 offset = 0, i64 length = 0, bool wait = true);
|
|
198
|
-
|
|
199
|
-
static TFile Temporary(const TString& prefix);
|
|
200
|
-
static TFile ForAppend(const TString& path);
|
|
201
|
-
|
|
202
|
-
private:
|
|
203
|
-
class TImpl;
|
|
204
|
-
TSimpleIntrusivePtr<TImpl> Impl_;
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
TFile Duplicate(FILE*);
|
|
208
|
-
TFile Duplicate(int);
|
|
209
|
-
|
|
210
|
-
bool PosixDisableReadAhead(FHANDLE fileHandle, void* addr) noexcept;
|