-
Notifications
You must be signed in to change notification settings - Fork 5.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Move ExecutionObserver to folly/executors
Summary: The following targets were moved to folly/executors: ``` //folly/experimental:execution_observer ``` `arc f` was applied This is a codemod. It was automatically generated and will be landed once it is approved and tests are passing in sandcastle. You have been added as a reviewer by Sentinel or Butterfly. p:ad_meeo.folly Reviewed By: yfeldblum, Orvid Differential Revision: D58028038 fbshipit-source-id: 0fd1dfb349421d61e9f49eb546b4c4cc0d0c0c19
- Loading branch information
1 parent
1f37b46
commit 2fe0b25
Showing
6 changed files
with
100 additions
and
72 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
/* | ||
* Copyright (c) Meta Platforms, Inc. and affiliates. | ||
* | ||
* 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. | ||
*/ | ||
|
||
#pragma once | ||
|
||
#include <cstdint> | ||
|
||
#include <boost/intrusive/list.hpp> | ||
|
||
namespace folly { | ||
|
||
/** | ||
* Observes the execution of a task. Multiple execution observers can be chained | ||
* together. As a caveat, execution observers should not remove themselves from | ||
* the list of observers during execution | ||
*/ | ||
class ExecutionObserver | ||
: public boost::intrusive::list_base_hook< | ||
boost::intrusive::link_mode<boost::intrusive::auto_unlink>> { | ||
public: | ||
enum class CallbackType { | ||
// Owned by EventBase. | ||
Event, | ||
Loop, | ||
NotificationQueue, | ||
// Owned by FiberManager. | ||
Fiber, | ||
}; | ||
// Constant time size = false to support auto_unlink behavior, options are | ||
// mutually exclusive | ||
typedef boost::intrusive:: | ||
list<ExecutionObserver, boost::intrusive::constant_time_size<false>> | ||
List; | ||
|
||
virtual ~ExecutionObserver() = default; | ||
|
||
/** | ||
* Called when a task is about to start executing. | ||
* | ||
* @param id Unique id for the task which is starting. | ||
*/ | ||
virtual void starting(uintptr_t id, CallbackType callbackType) noexcept = 0; | ||
|
||
/** | ||
* Called just after a task stops executing. | ||
* | ||
* @param id Unique id for the task which stopped. | ||
*/ | ||
virtual void stopped(uintptr_t id, CallbackType callbackType) noexcept = 0; | ||
}; | ||
|
||
class ExecutionObserverScopeGuard { | ||
public: | ||
ExecutionObserverScopeGuard( | ||
folly::ExecutionObserver::List* observerList, | ||
void* id, | ||
folly::ExecutionObserver::CallbackType callbackType); | ||
|
||
~ExecutionObserverScopeGuard(); | ||
|
||
private: | ||
folly::ExecutionObserver::List* observerList_; | ||
uintptr_t id_; | ||
folly::ExecutionObserver::CallbackType callbackType_; | ||
}; | ||
|
||
} // namespace folly |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters