123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /*
- * Copyright 2014-present Facebook, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- #include <folly/futures/Future.h>
- #include <folly/Likely.h>
- #include <folly/SingletonThreadLocal.h>
- #include <folly/futures/ThreadWheelTimekeeper.h>
- namespace folly {
- // Instantiate the most common Future types to save compile time
- template class SemiFuture<Unit>;
- template class SemiFuture<bool>;
- template class SemiFuture<int>;
- template class SemiFuture<int64_t>;
- template class SemiFuture<std::string>;
- template class SemiFuture<double>;
- template class Future<Unit>;
- template class Future<bool>;
- template class Future<int>;
- template class Future<int64_t>;
- template class Future<std::string>;
- template class Future<double>;
- } // namespace folly
- namespace folly {
- namespace futures {
- Future<Unit> sleep(Duration dur, Timekeeper* tk) {
- std::shared_ptr<Timekeeper> tks;
- if (LIKELY(!tk)) {
- tks = folly::detail::getTimekeeperSingleton();
- tk = tks.get();
- }
- if (UNLIKELY(!tk)) {
- return makeFuture<Unit>(FutureNoTimekeeper());
- }
- return tk->after(dur);
- }
- } // namespace futures
- } // namespace folly
|