• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

paticcaa / pain / 17370359744

01 Sep 2025 07:09AM UTC coverage: 55.981% (+0.07%) from 55.914%
17370359744

Pull #6

github

web-flow
Merge 18d52a902 into aa473113b
Pull Request #6: add readdir

1386 of 3306 branches covered (41.92%)

Branch coverage included in aggregate %.

50 of 57 new or added lines in 8 files covered. (87.72%)

1623 of 2069 relevant lines covered (78.44%)

436.73 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

45.43
/src/deva/deva_service_impl.cc
1
#include "deva/deva_service_impl.h"
2
#include <brpc/closure_guard.h>
3

4
#include <pain/base/uuid.h>
5
#include "pain/proto/deva_store.pb.h"
6
#include "deva/bridge.h"
7
#include "deva/deva.h"
8
#include "deva/macro.h"
9

10
#define DEVA_SERVICE_METHOD(name)                                                                                      \
11
    void DevaServiceImpl::name(::google::protobuf::RpcController* controller,                                          \
12
                               [[maybe_unused]] const pain::proto::deva::name##Request* request,                       \
13
                               [[maybe_unused]] pain::proto::deva::name##Response* response,                           \
14
                               ::google::protobuf::Closure* done)
15

16
namespace pain::deva {
17

18
DevaServiceImpl::DevaServiceImpl(RsmPtr rsm) : _rsm(rsm) {}
14✔
19

20
DEVA_SERVICE_METHOD(OpenFile) {
12✔
21
    brpc::ClosureGuard done_guard(done);
12✔
22
    DEFINE_SPAN(span, controller);
36!
23
    PLOG_DEBUG(("desc", "OpenFile")("request", request->DebugString()));
12✔
24
    auto& path = request->path();
12!
25
    auto flags = request->flags();
12!
26

27
    if ((flags & pain::proto::deva::OpenFlag::OPEN_CREATE) != 0) {
12!
28
        pain::proto::deva::store::CreateFileRequest create_request;
12!
29
        pain::proto::deva::store::CreateFileResponse create_response;
12!
30
        auto file_id = UUID::generate();
12!
31
        create_request.set_path(path);
32
        create_request.mutable_file_id()->set_high(file_id.high());
12!
33
        create_request.mutable_file_id()->set_low(file_id.low());
12!
34
        create_request.set_mode(0666); // NOLINT
12!
35
        create_request.set_uid(0);
12!
36
        create_request.set_gid(0);
12!
37
        create_request.set_atime(butil::gettimeofday_us());
12!
38
        create_request.set_mtime(butil::gettimeofday_us());
12!
39
        create_request.set_ctime(butil::gettimeofday_us());
12!
40
        auto status = bridge<Deva, OpType::kCreateFile>(_rsm, create_request, &create_response).get();
12!
41
        if (!status.ok()) {
12!
42
            PLOG_ERROR(("desc", "failed to create file")("error", status.error_str()));
×
43
            response->mutable_header()->set_status(status.error_code());
×
44
            response->mutable_header()->set_message(status.error_str());
×
45
            return;
×
46
        }
47
        response->mutable_file_info()->Swap(create_response.mutable_file_info());
12!
48
        response->mutable_header()->set_status(0);
12!
49
        response->mutable_header()->set_message("ok");
12!
50
    } else {
12!
51
        // TODO: open file
52
    }
53

54
    response->mutable_header()->set_status(0);
12!
55
    response->mutable_header()->set_message("ok");
12!
56
}
12!
57

58
DEVA_SERVICE_METHOD(CloseFile) {
×
59
    brpc::ClosureGuard done_guard(done);
×
60
    DEFINE_SPAN(span, controller);
×
61
}
×
62

63
DEVA_SERVICE_METHOD(RemoveFile) {
×
64
    brpc::ClosureGuard done_guard(done);
×
65
    DEFINE_SPAN(span, controller);
×
66
}
×
67

68
DEVA_SERVICE_METHOD(Mkdir) {
12✔
69
    brpc::ClosureGuard done_guard(done);
12✔
70
    DEFINE_SPAN(span, controller);
36!
71
    auto& path = request->path();
12!
72
    pain::proto::deva::store::CreateDirRequest create_request;
12!
73
    pain::proto::deva::store::CreateDirResponse create_response;
12!
74
    auto dir_id = UUID::generate();
12!
75
    create_request.set_path(path);
76
    create_request.mutable_dir_id()->set_high(dir_id.high());
12!
77
    create_request.mutable_dir_id()->set_low(dir_id.low());
12!
78
    create_request.set_mode(0777); // NOLINT
12!
79
    create_request.set_uid(0);
12!
80
    create_request.set_gid(0);
12!
81
    create_request.set_atime(butil::gettimeofday_us());
12!
82
    create_request.set_mtime(butil::gettimeofday_us());
12!
83
    create_request.set_ctime(butil::gettimeofday_us());
12!
84
    auto status = bridge<Deva, OpType::kCreateDir>(_rsm, create_request, &create_response).get();
12!
85
    if (!status.ok()) {
12!
86
        PLOG_ERROR(("desc", "failed to create file")("error", status.error_str()));
×
87
        response->mutable_header()->set_status(status.error_code());
×
88
        response->mutable_header()->set_message(status.error_str());
×
89
        return;
×
90
    }
91
    response->mutable_file_info()->Swap(create_response.mutable_file_info());
12!
92
    response->mutable_header()->set_status(0);
12!
93
    response->mutable_header()->set_message("ok");
12!
94
}
12!
95

96
DEVA_SERVICE_METHOD(ReadDir) {
1✔
97
    brpc::ClosureGuard done_guard(done);
1✔
98
    DEFINE_SPAN(span, controller);
3!
99
    auto& path = request->path();
1!
100
    pain::proto::deva::store::ReadDirRequest read_dir_request;
1!
101
    pain::proto::deva::store::ReadDirResponse read_dir_response;
1!
102
    read_dir_request.set_path(path);
103
    auto status = bridge<Deva, OpType::kReadDir>(_rsm, read_dir_request, &read_dir_response).get();
1!
104
    if (!status.ok()) {
1!
NEW
105
        PLOG_ERROR(("desc", "failed to read dir")("error", status.error_str()));
×
NEW
106
        response->mutable_header()->set_status(status.error_code());
×
NEW
107
        response->mutable_header()->set_message(status.error_str());
×
NEW
108
        return;
×
109
    }
110
    response->mutable_entries()->Swap(read_dir_response.mutable_entries());
1!
111
    response->mutable_header()->set_status(0);
1!
112
    response->mutable_header()->set_message("ok");
1!
113
}
1!
114

115
DEVA_SERVICE_METHOD(SealFile) {
×
116
    brpc::ClosureGuard done_guard(done);
×
117
    DEFINE_SPAN(span, controller);
×
118
}
×
119

120
DEVA_SERVICE_METHOD(NewChunk) {
×
121
    brpc::ClosureGuard done_guard(done);
×
122
    DEFINE_SPAN(span, controller);
×
123
}
×
124

125
DEVA_SERVICE_METHOD(CheckInChunk) {
×
126
    brpc::ClosureGuard done_guard(done);
×
127
    DEFINE_SPAN(span, controller);
×
128
}
×
129

130
DEVA_SERVICE_METHOD(SealChunk) {
×
131
    brpc::ClosureGuard done_guard(done);
×
132
    DEFINE_SPAN(span, controller);
×
133
}
×
134

135
DEVA_SERVICE_METHOD(SealAndNewChunk) {
×
136
    brpc::ClosureGuard done_guard(done);
×
137
    DEFINE_SPAN(span, controller);
×
138
}
×
139

140
} // namespace pain::deva
141

142
#undef DEVA_SERVICE_METHOD
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc