SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
Base.cc
Go to the documentation of this file.
1 /*
2  * SWC-DB© Copyright since 2019 Alex Kashirin <kashirin.alex@gmail.com>
3  * License details at <https://github.com/kashirin-alex/swc-db/#license>
4  */
5 
6 
8 
16 
17 
18 namespace SWC { namespace Comm { namespace Protocol {
19 namespace FsBroker { namespace Req {
20 
21 
22 bool Base::is_rsp(const Event::Ptr& ev, int cmd,
23  const uint8_t** ptr, size_t* remain) {
24  // SWC_LOGF(LOG_DEBUG, "handle: %s", ev->to_str().c_str());
25  if(!ev) {
27  *remain = 0;
28  } else if(!(error = ev->error)) {
29  if(ev->header.command != cmd) {
31  *remain = 0;
32  SWC_LOGF(LOG_ERROR, "error=%d(%s) cmd=%d",
33  error, Error::get_text(error), ev->header.command);
34  } else if((!(error = ev->response_code())) || error == Error::FS_EOF) {
35  *ptr = ev->data.base + 4;
36  *remain = ev->data.size - 4;
37  } else {
38  *remain = 0;
39  }
40  } else {
41  *remain = 0;
42  }
43  return true;
44 }
45 
46 
47 
48 /* common (Sync & Async) handlers */
49 
50 void Base::handle_write(const Event::Ptr& ev, FS::SmartFd::Ptr& smartfd) {
51  const uint8_t *ptr;
52  size_t remain;
53 
54  if(!is_rsp(ev, FUNCTION_WRITE, &ptr, &remain))
55  return;
56 
57  smartfd->fd(-1);
58  smartfd->pos(0);
59 
61 }
62 
63 void Base::handle_sync(const Event::Ptr& ev, FS::SmartFd::Ptr& smartfd) {
64  const uint8_t *ptr;
65  size_t remain;
66 
67  if(!is_rsp(ev, FUNCTION_SYNC, &ptr, &remain))
68  return;
69 
70  switch(error) {
71  case Error::OK:
72  break;
73  case EBADR:
75  smartfd->fd(-1);
76  default:
77  break;
78  }
79  SWC_FS_SYNC_FINISH(error, smartfd, tracker);
80 }
81 
82 void Base::handle_seek(const Event::Ptr& ev, FS::SmartFd::Ptr& smartfd) {
83  const uint8_t *ptr;
84  size_t remain;
85 
86  if(!is_rsp(ev, FUNCTION_SEEK, &ptr, &remain))
87  return;
88 
89  switch(error) {
90  case Error::OK: {
91  try {
92  Params::SeekRsp params;
93  params.decode(&ptr, &remain);
94  smartfd->pos(params.offset);
95  } catch(...) {
97  error = e.code();
98  }
99  break;
100  }
101  case EBADR:
103  smartfd->fd(-1);
104  default:
105  break;
106  }
107  SWC_FS_SEEK_FINISH(error, smartfd, tracker);
108 }
109 
110 void Base::handle_rmdir(const Event::Ptr& ev, const std::string& name) {
111  const uint8_t *ptr;
112  size_t remain;
113 
114  if(!is_rsp(ev, FUNCTION_RMDIR, &ptr, &remain))
115  return;
116 
118 }
119 
121  const std::string& from, const std::string& to) {
122  const uint8_t *ptr;
123  size_t remain;
124 
125  if(!is_rsp(ev, FUNCTION_RENAME, &ptr, &remain))
126  return;
127 
129 }
130 
131 void Base::handle_readdir(const Event::Ptr& ev, const std::string& name,
132  FS::DirentList& results) {
133  const uint8_t *ptr;
134  size_t remain;
135 
136  if(!is_rsp(ev, FUNCTION_READDIR, &ptr, &remain))
137  return;
138 
139  if(!error) {
140  try {
141  Params::ReaddirRsp params;
142  params.decode(&ptr, &remain);
143  results = std::move(params.listing);
144 
145  } catch(...) {
147  error = e.code();
148  }
149  }
150  SWC_FS_READDIR_FINISH(error, name, results.size(), tracker);
151 }
152 
153 void Base::handle_remove(const Event::Ptr& ev, const std::string& name) {
154  const uint8_t *ptr;
155  size_t remain;
156 
157  if(!is_rsp(ev, FUNCTION_REMOVE, &ptr, &remain))
158  return;
159 
161 }
162 
164  size_t& amount) {
165  const uint8_t *ptr;
166  size_t remain;
167 
168  if(!is_rsp(ev, FUNCTION_READ, &ptr, &remain))
169  return;
170 
171  switch(error) {
172  case Error::OK:
173  case Error::FS_EOF: {
174  try {
175  Params::ReadRsp params;
176  params.decode(&ptr, &remain);
177  amount = ev->data_ext.size;
178  smartfd->pos(params.offset + amount);
179  } catch(...) {
181  error = e.code();
182  }
183  break;
184  }
185  case EBADR:
187  smartfd->fd(-1);
188  default:
189  break;
190  }
191  SWC_FS_READ_FINISH(error, smartfd, amount, tracker);
192 }
193 
194 void Base::handle_read_all(const Event::Ptr& ev, const std::string& name) {
195  const uint8_t *ptr;
196  size_t remain;
197 
198  if(!is_rsp(ev, FUNCTION_READ_ALL, &ptr, &remain))
199  return;
200 
201  SWC_FS_READALL_FINISH(error, name, ev->data_ext.size, tracker);
202 }
203 
205  size_t& amount) {
206  const uint8_t *ptr;
207  size_t remain;
208 
209  if(!is_rsp(ev, FUNCTION_PREAD, &ptr, &remain))
210  return;
211 
212  switch(error) {
213  case Error::OK:
214  case Error::FS_EOF: {
215  try {
216  Params::ReadRsp params;
217  params.decode(&ptr, &remain);
218  amount = ev->data_ext.size;
219  smartfd->pos(params.offset + amount);
220  } catch(...) {
222  error = e.code();
223  }
224  break;
225  }
226  case EBADR:
228  smartfd->fd(-1);
229  default:
230  break;
231  }
232  SWC_FS_PREAD_FINISH(error, smartfd, amount, tracker);
233 }
234 
236  const FS::SmartFd::Ptr& smartfd) {
237  const uint8_t *ptr;
238  size_t remain;
239 
240  if(!is_rsp(ev, FUNCTION_COMBI_PREAD, &ptr, &remain))
241  return;
242 
243  SWC_FS_COMBI_PREAD_FINISH(error, smartfd, ev->data_ext.size, tracker);
244 }
245 
247  FS::SmartFd::Ptr& smartfd) {
248  const uint8_t *ptr;
249  size_t remain;
250 
251  if(!is_rsp(ev, FUNCTION_OPEN, &ptr, &remain))
252  return;
253 
254  if(!error) {
255  try {
256  Params::OpenRsp params;
257  params.decode(&ptr, &remain);
258  smartfd->fd(params.fd);
259  smartfd->pos(0);
260  fs->fd_open_incr();
261 
262  } catch(...) {
264  error = e.code();
265  }
266  }
267  SWC_FS_OPEN_FINISH(error, smartfd, fs->fds_open(), tracker);
268 }
269 
270 void Base::handle_mkdirs(const Event::Ptr& ev, const std::string& name) {
271  const uint8_t *ptr;
272  size_t remain;
273 
274  if(!is_rsp(ev, FUNCTION_MKDIRS, &ptr, &remain))
275  return;
276 
278 }
279 
280 void Base::handle_length(const Event::Ptr& ev, const std::string& name,
281  size_t& length) {
282  const uint8_t *ptr;
283  size_t remain;
284 
285  if(!is_rsp(ev, FUNCTION_LENGTH, &ptr, &remain))
286  return;
287 
288  if(!error) {
289  try {
290  Params::LengthRsp params;
291  params.decode(&ptr, &remain);
292  length = params.length;
293 
294  } catch(...) {
296  error = e.code();
297  }
298  }
300 }
301 
302 void Base::handle_flush(const Event::Ptr& ev, FS::SmartFd::Ptr& smartfd) {
303  const uint8_t *ptr;
304  size_t remain;
305 
306  if(!is_rsp(ev, FUNCTION_FLUSH, &ptr, &remain))
307  return;
308 
309  switch(error) {
310  case EBADR:
312  smartfd->fd(-1);
313  default:
314  break;
315  }
316  SWC_FS_FLUSH_FINISH(error, smartfd, tracker);
317 }
318 
319 void Base::handle_exists(const Event::Ptr& ev, const std::string& name,
320  bool& state) {
321  const uint8_t *ptr;
322  size_t remain;
323 
324  if(!is_rsp(ev, FUNCTION_EXISTS, &ptr, &remain))
325  return;
326 
327  if(!error) {
328  try {
329  Params::ExistsRsp params;
330  params.decode(&ptr, &remain);
331  state = params.exists;
332 
333  } catch(...) {
335  error = e.code();
336  }
337  }
338  SWC_FS_EXISTS_FINISH(error, name, state, tracker);
339 }
340 
342  FS::SmartFd::Ptr& smartfd) {
343  const uint8_t *ptr;
344  size_t remain;
345 
346  if(!is_rsp(ev, FUNCTION_CREATE, &ptr, &remain))
347  return;
348 
349  if(!error) {
350  try {
351  Params::OpenRsp params;
352  params.decode(&ptr, &remain);
353  smartfd->fd(params.fd);
354  smartfd->pos(0);
355  fs->fd_open_incr();
356 
357  } catch(...) {
359  error = e.code();
360  }
361  }
362  SWC_FS_CREATE_FINISH(error, smartfd, fs->fds_open(), tracker);
363 }
364 
366  FS::SmartFd::Ptr& smartfd) {
367  const uint8_t *ptr;
368  size_t remain;
369 
370  if(!is_rsp(ev, FUNCTION_CLOSE, &ptr, &remain))
371  return;
372 
373  switch(error) {
374  case Error::OK:
375  case EACCES:
376  case ENOENT:
377  case EBADR:
378  case EBADF:
380  if(smartfd->invalidate() != -1)
381  fs->fd_open_decr();
382  break;
383  default:
384  break;
385  }
386  SWC_FS_CLOSE_FINISH(error, smartfd, tracker);
387 }
388 
390  size_t& amount) {
391  const uint8_t *ptr;
392  size_t remain;
393 
394  if(!is_rsp(ev, FUNCTION_APPEND, &ptr, &remain))
395  return;
396 
397  switch(error) {
398  case Error::OK: {
399  try {
400  Params::AppendRsp params;
401  params.decode(&ptr, &remain);
402  amount = params.amount;
403  smartfd->pos(params.offset + amount);
404  } catch(...) {
406  error = e.code();
407  }
408  break;
409  }
410  case EBADR:
412  smartfd->fd(-1);
413  break;
414  default:
415  break;
416  }
417  SWC_FS_APPEND_FINISH(error, smartfd, amount, tracker);
418 }
419 
420 }}}}}
SWC_FS_FLUSH_FINISH
#define SWC_FS_FLUSH_FINISH(_error, _smartfd, _tracker)
Definition: Logger.h:246
SWC::Comm::Protocol::FsBroker::FUNCTION_PREAD
@ FUNCTION_PREAD
Pread.
Definition: Commands.h:35
SWC::Comm::Protocol::FsBroker::Req::Base::handle_flush
void handle_flush(const Event::Ptr &ev, FS::SmartFd::Ptr &smartfd)
Definition: Base.cc:302
SWC::FS::FileSystem::Ptr
std::shared_ptr< FileSystem > Ptr
Definition: FileSystem.h:104
SWC::Error::Exception::code
constexpr SWC_CAN_INLINE int code() const noexcept
Definition: Exception.h:51
SWC::Comm::Protocol::FsBroker::Params::OpenRsp
Definition: Open.h:45
SWC::Comm::Protocol::FsBroker::Req::Base::tracker
FS::Statistics::Metric::Tracker tracker
Definition: Base.h:22
SWC::Comm::Protocol::FsBroker::FUNCTION_SEEK
@ FUNCTION_SEEK
Seek.
Definition: Commands.h:32
SWC::Comm::Protocol::FsBroker::Req::Base::handle_write
void handle_write(const Event::Ptr &ev, FS::SmartFd::Ptr &smartfd)
Definition: Base.cc:50
SWC_LOGF
#define SWC_LOGF(priority, fmt,...)
Definition: Logger.h:188
SWC::Comm::Protocol::FsBroker::Params::SeekRsp
Definition: Seek.h:43
SWC::Comm::Protocol::FsBroker::FUNCTION_REMOVE
@ FUNCTION_REMOVE
Remove.
Definition: Commands.h:33
SWC::Comm::Protocol::FsBroker::Req::Base::handle_create
void handle_create(const FS::FileSystem::Ptr &fs, const Event::Ptr &ev, FS::SmartFd::Ptr &smartfd)
Definition: Base.cc:341
SWC::Error::get_text
const char * get_text(const int err) noexcept
Definition: Error.cc:173
SWC_FS_RMDIR_FINISH
#define SWC_FS_RMDIR_FINISH(_error, _path, _tracker)
Definition: Logger.h:96
SWC::Comm::Protocol::FsBroker::FUNCTION_CREATE
@ FUNCTION_CREATE
Create.
Definition: Commands.h:28
SWC::Comm::Protocol::FsBroker::Req::Base::handle_pread
void handle_pread(const Event::Ptr &ev, FS::SmartFd::Ptr &smartfd, size_t &amount)
Definition: Base.cc:204
SWC::Comm::Protocol::FsBroker::Req::Base::handle_sync
void handle_sync(const Event::Ptr &ev, FS::SmartFd::Ptr &smartfd)
Definition: Base.cc:63
SWC::Comm::Protocol::FsBroker::FUNCTION_SYNC
@ FUNCTION_SYNC
Sync.
Definition: Commands.h:42
SWC_FS_RENAME_FINISH
#define SWC_FS_RENAME_FINISH(_error, _from, _to, _tracker)
Definition: Logger.h:108
SWC::Comm::Protocol::FsBroker::Req::Base::handle_close
void handle_close(const FS::FileSystem::Ptr &fs, const Event::Ptr &ev, FS::SmartFd::Ptr &smartfd)
Definition: Base.cc:365
SWC::Comm::Protocol::FsBroker::FUNCTION_READDIR
@ FUNCTION_READDIR
Readdir.
Definition: Commands.h:39
SWC::Comm::Protocol::FsBroker::Params::SeekRsp::offset
uint64_t offset
Definition: Seek.h:52
SWC::Comm::Protocol::FsBroker::Req::Base::handle_readdir
void handle_readdir(const Event::Ptr &ev, const std::string &name, FS::DirentList &listing)
Definition: Base.cc:131
SWC::Comm::Protocol::FsBroker::Params::OpenRsp::fd
int32_t fd
Definition: Open.h:54
Read.h
Base.h
SWC::Comm::Protocol::FsBroker::Params::ReaddirRsp::listing
FS::DirentList listing
Definition: Readdir.h:45
SWC_FS_COMBI_PREAD_FINISH
#define SWC_FS_COMBI_PREAD_FINISH(_error, _smartfd, _amount, _tracker)
Definition: Logger.h:207
SWC::Comm::Protocol::FsBroker::Req::Base::handle_open
void handle_open(const FS::FileSystem::Ptr &fs, const Event::Ptr &ev, FS::SmartFd::Ptr &smartfd)
Definition: Base.cc:246
SWC::Comm::Protocol::FsBroker::Req::Base::is_rsp
bool is_rsp(const Event::Ptr &ev, int cmd, const uint8_t **ptr, size_t *remain)
Definition: Base.cc:22
SWC::Comm::Protocol::FsBroker::Req::Base::handle_combi_pread
void handle_combi_pread(const Event::Ptr &ev, const FS::SmartFd::Ptr &smartfd)
Definition: Base.cc:235
SWC::Comm::Protocol::FsBroker::FUNCTION_WRITE
@ FUNCTION_WRITE
Write.
Definition: Commands.h:43
SWC_FS_MKDIRS_FINISH
#define SWC_FS_MKDIRS_FINISH(_error, _path, _tracker)
Definition: Logger.h:72
SWC::Comm::Protocol::FsBroker::Req::Base::error
int error
Definition: Base.h:23
SWC::Comm::Protocol::FsBroker::FUNCTION_READ
@ FUNCTION_READ
Read.
Definition: Commands.h:30
SWC::Comm::Protocol::FsBroker::Params::ExistsRsp::exists
bool exists
Definition: Exists.h:52
SWC_FS_READDIR_FINISH
#define SWC_FS_READDIR_FINISH(_error, _path, _sz, _tracker)
Definition: Logger.h:84
SWC::Comm::Protocol::FsBroker::Req::Base::handle_length
void handle_length(const Event::Ptr &ev, const std::string &name, size_t &length)
Definition: Base.cc:280
SWC_FS_OPEN_FINISH
#define SWC_FS_OPEN_FINISH(_error, _smartfd, _open_fds, _tracker)
Definition: Logger.h:149
SWC::Comm::Protocol::FsBroker::FUNCTION_RMDIR
@ FUNCTION_RMDIR
Rmdir.
Definition: Commands.h:38
SWC::Error::OK
@ OK
Definition: Error.h:45
SWC::Comm::Protocol::FsBroker::Params::AppendRsp::offset
uint64_t offset
Definition: Append.h:54
SWC::Error::FS_EOF
@ FS_EOF
Definition: Error.h:96
Seek.h
SWC::Comm::Protocol::FsBroker::FUNCTION_APPEND
@ FUNCTION_APPEND
Append.
Definition: Commands.h:31
SWC_FS_LENGTH_FINISH
#define SWC_FS_LENGTH_FINISH(_error, _path, _len, _tracker)
Definition: Logger.h:60
SWC_FS_CREATE_FINISH
#define SWC_FS_CREATE_FINISH(_error, _smartfd, _open_fds, _tracker)
Definition: Logger.h:137
SWC::Comm::Protocol::FsBroker::Req::Base::handle_read
void handle_read(const Event::Ptr &ev, FS::SmartFd::Ptr &smartfd, size_t &amount)
Definition: Base.cc:163
SWC_CURRENT_EXCEPTION
#define SWC_CURRENT_EXCEPTION(_msg_)
Definition: Exception.h:119
SWC::Comm::Protocol::FsBroker::Params::ReadRsp
Definition: Read.h:43
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC_FS_APPEND_FINISH
#define SWC_FS_APPEND_FINISH(_error, _smartfd, _amount, _tracker)
Definition: Logger.h:223
SWC::Comm::Protocol::FsBroker::Req::Base::handle_mkdirs
void handle_mkdirs(const Event::Ptr &ev, const std::string &name)
Definition: Base.cc:270
SWC::Comm::Protocol::FsBroker::FUNCTION_OPEN
@ FUNCTION_OPEN
Open.
Definition: Commands.h:27
Length.h
SWC::Comm::Protocol::FsBroker::FUNCTION_LENGTH
@ FUNCTION_LENGTH
Length.
Definition: Commands.h:34
SWC::Comm::Protocol::FsBroker::Req::Base::handle_rename
void handle_rename(const Event::Ptr &ev, const std::string &from, const std::string &to)
Definition: Base.cc:120
SWC::Error::FS_BAD_FILE_HANDLE
@ FS_BAD_FILE_HANDLE
Definition: Error.h:94
SWC::Comm::Protocol::FsBroker::FUNCTION_MKDIRS
@ FUNCTION_MKDIRS
Mkdirs.
Definition: Commands.h:36
SWC::Comm::Protocol::FsBroker::Req::Base::handle_remove
void handle_remove(const Event::Ptr &ev, const std::string &name)
Definition: Base.cc:153
SWC_FS_READALL_FINISH
#define SWC_FS_READALL_FINISH(_error, _name, _amount, _tracker)
Definition: Logger.h:120
SWC::Comm::Protocol::FsBroker::Handler::length
void length(const ConnHandlerPtr &conn, const Event::Ptr &ev)
Definition: Length.h:17
SWC::Comm::Protocol::FsBroker::Params::LengthRsp
Definition: Length.h:42
SWC::Comm::Protocol::FsBroker::Req::Base::handle_exists
void handle_exists(const Event::Ptr &ev, const std::string &name, bool &state)
Definition: Base.cc:319
SWC_FS_READ_FINISH
#define SWC_FS_READ_FINISH(_error, _smartfd, _amount, _tracker)
Definition: Logger.h:175
SWC::Comm::Protocol::FsBroker::Params::ExistsRsp
Definition: Exists.h:43
SWC::Comm::Protocol::FsBroker::FUNCTION_FLUSH
@ FUNCTION_FLUSH
Flush.
Definition: Commands.h:37
SWC::LOG_ERROR
@ LOG_ERROR
Definition: Logger.h:32
SWC::Error::COMM_NOT_CONNECTED
@ COMM_NOT_CONNECTED
Definition: Error.h:64
SWC::Comm::Protocol::FsBroker::Params::LengthRsp::length
size_t length
Definition: Length.h:51
SWC_FS_WRITE_FINISH
#define SWC_FS_WRITE_FINISH(_error, _smartfd, _tracker)
Definition: Logger.h:163
SWC::Comm::Protocol::FsBroker::Params::AppendRsp
Definition: Append.h:44
SWC::Core::Vector< Dirent >
SWC::Condition::from
Comp from(const char **buf, uint32_t *remainp, uint8_t extended=0x00) noexcept
Definition: Comparators.cc:15
SWC::FS::SmartFd::Ptr
std::shared_ptr< SmartFd > Ptr
Definition: SmartFd.h:37
SWC::Comm::Protocol::FsBroker::FUNCTION_READ_ALL
@ FUNCTION_READ_ALL
ReadAll.
Definition: Commands.h:44
SWC_FS_PREAD_FINISH
#define SWC_FS_PREAD_FINISH(_error, _smartfd, _amount, _tracker)
Definition: Logger.h:191
SWC::Comm::Protocol::FsBroker::FUNCTION_CLOSE
@ FUNCTION_CLOSE
Close.
Definition: Commands.h:29
Append.h
SWC::Error::NOT_IMPLEMENTED
@ NOT_IMPLEMENTED
Definition: Error.h:74
SWC_FS_SEEK_FINISH
#define SWC_FS_SEEK_FINISH(_error, _smartfd, _tracker)
Definition: Logger.h:235
Readdir.h
SWC::Comm::Serializable::decode
void decode(const uint8_t **bufp, size_t *remainp)
Definition: Serializable.h:59
SWC::Comm::Protocol::FsBroker::Req::Base::handle_rmdir
void handle_rmdir(const Event::Ptr &ev, const std::string &name)
Definition: Base.cc:110
SWC::Comm::Event::Ptr
std::shared_ptr< Event > Ptr
Definition: Event.h:33
SWC::Comm::Protocol::FsBroker::Params::ReaddirRsp
Definition: Readdir.h:42
SWC::Comm::Protocol::FsBroker::FUNCTION_EXISTS
@ FUNCTION_EXISTS
Exists.
Definition: Commands.h:40
Open.h
SWC_FS_CLOSE_FINISH
#define SWC_FS_CLOSE_FINISH(_error, _smartfd, _tracker)
Definition: Logger.h:268
SWC::Comm::Protocol::FsBroker::Params::ReadRsp::offset
uint64_t offset
Definition: Read.h:52
SWC_FS_REMOVE_FINISH
#define SWC_FS_REMOVE_FINISH(_error, _path, _tracker)
Definition: Logger.h:48
SWC::Comm::Protocol::FsBroker::Params::AppendRsp::amount
uint32_t amount
Definition: Append.h:55
SWC::Comm::Protocol::FsBroker::FUNCTION_COMBI_PREAD
@ FUNCTION_COMBI_PREAD
CombiPread open+pread+close.
Definition: Commands.h:45
SWC::Core::Vector::size
constexpr SWC_CAN_INLINE size_type size() const noexcept
Definition: Vector.h:189
Exists.h
SWC_FS_SYNC_FINISH
#define SWC_FS_SYNC_FINISH(_error, _smartfd, _tracker)
Definition: Logger.h:257
SWC::Error::Exception
Definition: Exception.h:21
SWC::Comm::Protocol::FsBroker::Req::Base::handle_read_all
void handle_read_all(const Event::Ptr &ev, const std::string &name)
Definition: Base.cc:194
SWC::Comm::Protocol::FsBroker::FUNCTION_RENAME
@ FUNCTION_RENAME
Rename.
Definition: Commands.h:41
SWC::Comm::Protocol::FsBroker::Req::Base::handle_append
void handle_append(const Event::Ptr &ev, FS::SmartFd::Ptr &smartfd, size_t &amount)
Definition: Base.cc:389
SWC_FS_EXISTS_FINISH
#define SWC_FS_EXISTS_FINISH(_error, _path, _state, _tracker)
Definition: Logger.h:36
SWC::Comm::Protocol::FsBroker::Req::Base::handle_seek
void handle_seek(const Event::Ptr &ev, FS::SmartFd::Ptr &smartfd)
Definition: Base.cc:82