Skip to content

Commit

Permalink
Move ExecutionObserver to folly/executors
Browse files Browse the repository at this point in the history
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
Gownta authored and facebook-github-bot committed Jun 22, 2024
1 parent 1f37b46 commit 2fe0b25
Show file tree
Hide file tree
Showing 6 changed files with 100 additions and 72 deletions.
12 changes: 12 additions & 0 deletions folly/executors/BUCK
Original file line number Diff line number Diff line change
Expand Up @@ -472,3 +472,15 @@ cpp_library(
"glog",
],
)

cpp_library(
name = "execution_observer",
srcs = ["ExecutionObserver.cpp"],
headers = ["ExecutionObserver.h"],
deps = [
"//folly/tracing:static_tracepoint",
],
exported_external_deps = [
"boost",
],
)
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

#include <folly/experimental/ExecutionObserver.h>
#include <folly/executors/ExecutionObserver.h>

#include <folly/tracing/StaticTracepoint.h>

Expand Down
80 changes: 80 additions & 0 deletions folly/executors/ExecutionObserver.h
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
10 changes: 4 additions & 6 deletions folly/experimental/BUCK
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,11 @@ cpp_library(

cpp_library(
name = "execution_observer",
srcs = ["ExecutionObserver.cpp"],
headers = ["ExecutionObserver.h"],
deps = [
"//folly/tracing:static_tracepoint",
headers = [
"ExecutionObserver.h",
],
exported_external_deps = [
"boost",
exported_deps = [
"//folly/executors:execution_observer",
],
)

Expand Down
65 changes: 1 addition & 64 deletions folly/experimental/ExecutionObserver.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,67 +14,4 @@
* 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
#include <folly/executors/ExecutionObserver.h>
3 changes: 2 additions & 1 deletion folly/somerge_defs.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Generated by xplat/cross_plat_devx/somerge_maps/compute_merge_maps.py
@generated SignedSource<<da913e4f3d0f9047b2de7798a5bada9c>>
@generated SignedSource<<e0f4993adba8f1578c6a7984d24a8d05>>
"""

# Entry Points:
Expand Down Expand Up @@ -157,6 +157,7 @@ FOLLY_BASE_NATIVE_LIBRARY_MERGE_MAP = [
"//xplat/folly/executors/thread_factory:thread_factoryAndroid",
"//xplat/folly/executors:cpu_thread_pool_executorAndroid",
"//xplat/folly/executors:drivable_executorAndroid",
"//xplat/folly/executors:execution_observerAndroid",
"//xplat/folly/executors:executor_with_priorityAndroid",
"//xplat/folly/executors:global_executorAndroid",
"//xplat/folly/executors:global_thread_pool_listAndroid",
Expand Down

0 comments on commit 2fe0b25

Please sign in to comment.