Skip to content

Commit

Permalink
feat: add some struct for ScriptAPI
Browse files Browse the repository at this point in the history
  • Loading branch information
Dofes committed Feb 1, 2024
1 parent be5d592 commit ef28f8b
Show file tree
Hide file tree
Showing 8 changed files with 104 additions and 6 deletions.
21 changes: 21 additions & 0 deletions src/mc/deps/core/threading/Scheduler.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
#pragma once

#include "ll/api/base/StdInt.h"
#include "mc/_HeaderOutputPredefine.h"
#include "mc/deps/core/threading/WorkerPool.h"
#include <chrono>
#include <memory>
#include <string>
#include <thread>

// auto generated inclusion list
#include "mc/deps/core/common/bedrock/EnableNonOwnerReferences.h"
Expand All @@ -11,6 +17,21 @@ namespace Bedrock { class EnableNonOwnerReferences; }
// clang-format on

class Scheduler : public ::Bedrock::EnableNonOwnerReferences {
public:
int mTotalFrames;
int mStarvedFrames;
int mPromotionFrames;
int mTargetFPS;
int mEffectiveFPS;
int mFramesOverBound;
double mAverageCallbackDuration;
double mTotalCoroutineDuration;
uint64 mTotalRunCoroutines;
double mCoroutineTimeLimit;
std::unique_ptr<WorkerPool> mCoroutinePool;
std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> mNextStarveCheckTime;
std::thread::id mThreadID;

public:
// prevent constructor by default
Scheduler& operator=(Scheduler const&);
Expand Down
8 changes: 8 additions & 0 deletions src/mc/external/scripting/ScriptSettings.h
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
#pragma once

#include "ll/api/base/StdInt.h"
#include "mc/_HeaderOutputPredefine.h"
#include "mc/external/scripting/WatchdogSettings.h"
#include "mc/scripting/ScriptPackConfigurationManager.h"
#include <optional>


struct ScriptSettings {
public:
char padding[592];

public:
// prevent constructor by default
ScriptSettings& operator=(ScriptSettings const&);
Expand Down
13 changes: 8 additions & 5 deletions src/mc/external/scripting/WatchdogSettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@
namespace Scripting {

struct WatchdogSettings {
public:
// prevent constructor by default
WatchdogSettings& operator=(WatchdogSettings const&);
WatchdogSettings(WatchdogSettings const&);
WatchdogSettings();
int mHangThresholdMs;
int mSpikeThresholdMs;
int mSlowThresholdMs;
bool mHangException;
bool mEnableExceptionHandling;
bool mEnableShutdown;
int mMemoryWarningMB;
int mMemoryLimitMB;
};

}; // namespace Scripting
11 changes: 10 additions & 1 deletion src/mc/scripting/ScriptFormPromiseTracker.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
#pragma once

#include "ll/api/base/StdInt.h"
#include "mc/_HeaderOutputPredefine.h"
#include "mc/deps/core/common/bedrock/EnableNonOwnerReferences.h"
#include <unordered_map>


// auto generated inclusion list
#include "mc/world/events/EventResult.h"
Expand All @@ -10,7 +14,7 @@
namespace Json { class Value; }
// clang-format on

class ScriptFormPromiseTracker {
class ScriptFormPromiseTracker : public Bedrock::EnableNonOwnerReferences {
public:
// ScriptFormPromiseTracker inner types declare
// clang-format off
Expand All @@ -33,6 +37,11 @@ class ScriptFormPromiseTracker {
// NOLINTEND
};

public:
char padding[0x8]; // parent class EventListenerDispatcher<PlayerEventListener>
int mLastRequestId;
std::unordered_map<uint, ScriptFormPromiseTracker::FromRequest> mFormRequests;

public:
// prevent constructor by default
ScriptFormPromiseTracker& operator=(ScriptFormPromiseTracker const&);
Expand Down
8 changes: 8 additions & 0 deletions src/mc/scripting/ScriptPackConfiguration.h
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
#pragma once

#include "mc/_HeaderOutputPredefine.h"
#include "mc/scripting/ScriptPackPermissions.h"
#include <string>
#include <unordered_map>

// auto generated forward declare list
// clang-format off
namespace Json { class Value; }
// clang-format on

class ScriptPackConfiguration {
public:
std::unordered_map<std::string, Json::Value> mPackVariables;
std::unordered_map<std::string, std::string> mPackSecrets;
ScriptPackPermissions mPackPermisions;

public:
// prevent constructor by default
ScriptPackConfiguration& operator=(ScriptPackConfiguration const&);
Expand Down
8 changes: 8 additions & 0 deletions src/mc/scripting/ScriptPackConfigurationManager.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
#pragma once

#include "mc/_HeaderOutputPredefine.h"
#include "mc/scripting/ScriptPackConfiguration.h"
#include <string>
#include <unordered_map>


// auto generated inclusion list
#include "mc/deps/core/PathBuffer.h"
Expand All @@ -12,6 +16,10 @@ namespace Bedrock { class EnableNonOwnerReferences; }
// clang-format on

class ScriptPackConfigurationManager : public ::Bedrock::EnableNonOwnerReferences {
public:
std::unordered_map<std::string, ScriptPackConfiguration> mPackConfigurations;
ScriptPackConfiguration mDefaultPackConfiguration;

public:
// prevent constructor by default
ScriptPackConfigurationManager& operator=(ScriptPackConfigurationManager const&);
Expand Down
11 changes: 11 additions & 0 deletions src/mc/scripting/ScriptPackPermissions.h
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
#pragma once

#include "mc/_HeaderOutputPredefine.h"
#include "mc/deps/json/Value.h"
#include "mc/server/commands/CommandPermissionLevel.h"
#include <optional>
#include <string>
#include <unordered_map>
#include <vector>

class ScriptPackPermissions {
public:
std::unordered_map<std::string, std::unordered_map<std::string, Json::Value>> mModulePermissions;
std::vector<std::string> mAllowedModules;
std::optional<CommandPermissionLevel> mCommandsPermissionLevel;

public:
// prevent constructor by default
ScriptPackPermissions& operator=(ScriptPackPermissions const&);
Expand Down
30 changes: 30 additions & 0 deletions src/mc/scripting/ServerScriptManager.h
Original file line number Diff line number Diff line change
@@ -1,10 +1,24 @@
#pragma once

#include "mc/_HeaderOutputPredefine.h"
#include "mc/deps/core/threading/Scheduler.h"
#include "mc/external/scripting/DependencyLocator.h"
#include "mc/external/scripting/ScriptSettings.h"
#include "mc/scripting/ScriptFormPromiseTracker.h"
#include "mc/scripting/ScriptPluginManager.h"
#include "mc/scripting/ScriptPluginResult.h"
#include "mc/scripting/ScriptPrintLogger.h"
#include "mc/scripting/ScriptTickListener.h"
#include "mc/scripting/debugger/ScriptDebugger.h"
#include "mc/scripting/debugger/ScriptDebuggerWatchdog.h"


// auto generated inclusion list
#include "mc/deps/core/common/bedrock/NonOwnerPointer.h"
#include "mc/world/events/EventResult.h"
#include <functional>
#include <memory>
#include <vector>

// auto generated forward declare list
// clang-format off
Expand All @@ -14,6 +28,22 @@ namespace Scripting { struct ModuleDescriptor; }
// clang-format on

class ServerScriptManager {
public:
Bedrock::NonOwnerPointer<Scheduler> mServerScheduler;
ScriptSettings mScriptSettings;
std::unique_ptr<ScriptPrintLogger> mPrintLogger;
std::unique_ptr<ScriptFormPromiseTracker> mFormPromiseTracker;
std::unique_ptr<Scripting::DependencyLocator> mDependencyLocator;
std::unique_ptr<Scripting::ScriptEngine> mScriptEngine;
std::unique_ptr<ScriptDebuggerWatchdog> mScriptDebuggerWatchdog;
std::unique_ptr<ScriptPluginManager> mScriptPluginManager;
std::unique_ptr<ScriptDebugger> mScriptDebugger;
std::unique_ptr<ScriptTickListener> mScriptTickListener;
std::vector<std::function<
bool(const PackManifest&, const Scripting::ModuleDescriptor&, const Scripting::ModuleDescriptor&, ScriptPluginResult&)>>
mModuleFilters;
bool mInitializeEditorModules;

public:
// prevent constructor by default
ServerScriptManager& operator=(ServerScriptManager const&);
Expand Down

0 comments on commit ef28f8b

Please sign in to comment.