projects
/
folly.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
2017
[folly.git]
/
folly
/
experimental
/
io
/
AsyncIO.h
diff --git
a/folly/experimental/io/AsyncIO.h
b/folly/experimental/io/AsyncIO.h
index 6c9da8d258325d2b1db6c9b71c7631ff476c5b7f..faa5e27fc4b4e075d36f023bba1e5d72cae15dcc 100644
(file)
--- a/
folly/experimental/io/AsyncIO.h
+++ b/
folly/experimental/io/AsyncIO.h
@@
-1,5
+1,5
@@
/*
/*
- * Copyright 201
4
Facebook, Inc.
+ * Copyright 201
7
Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@
-14,26
+14,25
@@
* limitations under the License.
*/
* limitations under the License.
*/
-#ifndef FOLLY_IO_ASYNCIO_H_
-#define FOLLY_IO_ASYNCIO_H_
+#pragma once
#include <sys/types.h>
#include <sys/types.h>
-#include <sys/uio.h>
#include <libaio.h>
#include <atomic>
#include <cstdint>
#include <deque>
#include <functional>
#include <libaio.h>
#include <atomic>
#include <cstdint>
#include <deque>
#include <functional>
+#include <iosfwd>
#include <mutex>
#include <mutex>
-#include <ostream>
#include <utility>
#include <vector>
#include <boost/noncopyable.hpp>
#include <utility>
#include <vector>
#include <boost/noncopyable.hpp>
-#include "folly/Portability.h"
-#include "folly/Range.h"
+#include <folly/Portability.h>
+#include <folly/Range.h>
+#include <folly/portability/SysUio.h>
namespace folly {
namespace folly {
@@
-168,6
+167,12
@@
class AsyncIO : private boost::noncopyable {
*/
size_t capacity() const { return capacity_; }
*/
size_t capacity() const { return capacity_; }
+ /**
+ * Return the accumulative number of submitted I/O, since this object
+ * has been created.
+ */
+ size_t totalSubmits() const { return submitted_; }
+
/**
* If POLLABLE, return a file descriptor that can be passed to poll / epoll
* and will become readable when any async IO operations have completed.
/**
* If POLLABLE, return a file descriptor that can be passed to poll / epoll
* and will become readable when any async IO operations have completed.
@@
-197,8
+202,9
@@
class AsyncIO : private boost::noncopyable {
std::atomic<bool> ctxSet_;
std::mutex initMutex_;
std::atomic<bool> ctxSet_;
std::mutex initMutex_;
- std::atomic<ssize_t> pending_;
- const ssize_t capacity_;
+ std::atomic<size_t> pending_;
+ std::atomic<size_t> submitted_;
+ const size_t capacity_;
int pollFd_;
std::vector<Op*> completed_;
};
int pollFd_;
std::vector<Op*> completed_;
};
@@
-233,6
+239,7
@@
class AsyncIOQueue {
*/
typedef std::function<AsyncIOOp*()> OpFactory;
void submit(OpFactory op);
*/
typedef std::function<AsyncIOOp*()> OpFactory;
void submit(OpFactory op);
+
private:
void onCompleted(AsyncIOOp* op);
void maybeDequeue();
private:
void onCompleted(AsyncIOOp* op);
void maybeDequeue();
@@
-243,6
+250,3
@@
class AsyncIOQueue {
};
} // namespace folly
};
} // namespace folly
-
-#endif /* FOLLY_IO_ASYNCIO_H_ */
-