proxygen
Main Page
Related Pages
Namespaces
Classes
Files
Examples
File List
File Members
DrivableExecutor.h
Go to the documentation of this file.
1
/*
2
* Copyright 2015-present Facebook, Inc.
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*/
16
17
#pragma once
18
19
#include <
folly/Executor.h
>
20
21
namespace
folly
{
22
23
/*
24
* A DrivableExecutor can be driven via its drive() method
25
* Examples include EventBase (via loopOnce()) and ManualExecutor
26
* (via makeProgress()).
27
*
28
* This interface is most handy in conjunction with
29
* Future<T>::getVia(DrivableExecutor*) and
30
* Future<T>::waitVia(DrivableExecutor*)
31
*
32
* These call drive() * repeatedly until the Future is fulfilled.
33
* getVia() returns the value (or throws the exception) and waitVia() returns
34
* the same Future for chainability.
35
*
36
* These will be most helpful in tests, for instance if you need to pump a mock
37
* EventBase until Futures complete.
38
*/
39
40
class
DrivableExecutor
:
public
virtual
Executor
{
41
public
:
42
~DrivableExecutor
()
override
=
default
;
43
44
// Make progress on this Executor's work.
45
//
46
// Drive *must not* busy wait if there is no work to do. Instead,
47
// sleep (using a semaphore or similar) until at least one event is
48
// processed.
49
// I.e. make_future().via(foo).then(...).getVia(DrivableExecutor)
50
// must not spin, even though nothing happens on the drivable
51
// executor.
52
virtual
void
drive
() = 0;
53
};
54
55
}
// namespace folly
folly
—— Concurrent Priority Queue Implementation ——
Definition:
AtomicBitSet.h:29
Executor.h
folly::Executor
Definition:
Executor.h:31
folly::DrivableExecutor::~DrivableExecutor
~DrivableExecutor() override=default
folly::DrivableExecutor
Definition:
DrivableExecutor.h:40
folly::DrivableExecutor::drive
virtual void drive()=0
proxygen
folly
folly
executors
DrivableExecutor.h
Generated by
1.8.11