diff options
author | Mattes D <github@xoft.cz> | 2016-03-21 09:58:15 +0100 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2016-03-21 09:58:15 +0100 |
commit | e3d34d9917bb2c341de3c7206e3021e916d3f706 (patch) | |
tree | 766f4703a8c30a01bfc5148fe54c6d6b4a3e3cc7 /src/Bindings/WebPlugin.h | |
parent | Merge pull request #3084 from cuberite/seadragon91-patch-1 (diff) | |
download | cuberite-e3d34d9917bb2c341de3c7206e3021e916d3f706.tar cuberite-e3d34d9917bb2c341de3c7206e3021e916d3f706.tar.gz cuberite-e3d34d9917bb2c341de3c7206e3021e916d3f706.tar.bz2 cuberite-e3d34d9917bb2c341de3c7206e3021e916d3f706.tar.lz cuberite-e3d34d9917bb2c341de3c7206e3021e916d3f706.tar.xz cuberite-e3d34d9917bb2c341de3c7206e3021e916d3f706.tar.zst cuberite-e3d34d9917bb2c341de3c7206e3021e916d3f706.zip |
Diffstat (limited to '')
-rw-r--r-- | src/Bindings/WebPlugin.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/Bindings/WebPlugin.h b/src/Bindings/WebPlugin.h new file mode 100644 index 000000000..6dc8db801 --- /dev/null +++ b/src/Bindings/WebPlugin.h @@ -0,0 +1,80 @@ + +#pragma once + +struct HTTPRequest; + + + + + +// tolua_begin +class cWebPlugin +{ +public: + // tolua_end + + struct cTab + { + AString m_Title; + AString m_SafeTitle; + int m_UserData; + + cTab(const AString & a_Title, int a_UserData): + m_Title(a_Title), + m_SafeTitle(cWebPlugin::SafeString(a_Title)), + m_UserData(a_UserData) + { + } + }; + + typedef SharedPtr<cTab> cTabPtr; + typedef std::list<cTabPtr> cTabPtrs; + typedef std::list<std::pair<AString, AString>> cTabNames; + + + cWebPlugin(); + + virtual ~cWebPlugin(); + + // tolua_begin + + /** Returns the title of the plugin, as it should be presented in the webadmin's pages tree. */ + virtual const AString GetWebTitle(void) const = 0; + + /** Sanitizes the input string, replacing spaces with underscores. */ + static AString SafeString(const AString & a_String); + + // tolua_end + + virtual AString HandleWebRequest(const HTTPRequest & a_Request) = 0; + + /** Adds a new web tab with the specified contents. */ + void AddNewWebTab(const AString & a_Title, int a_UserData); + + /** Removes all the tabs. */ + void ClearTabs(void); + + /** Returns all the tabs that this plugin has registered. */ + const cTabPtrs & GetTabs(void) const { return m_Tabs; } + + /** Returns all of the tabs that this plugin has registered. */ + cTabNames GetTabNames(void) const; // Exported in ManualBindings.cpp + + /** Returns the tab that has the specified SafeTitle. + Returns nullptr if no such tab. */ + cTabPtr GetTabBySafeTitle(const AString & a_SafeTitle) const; + + std::pair<AString, AString> GetTabNameForRequest(const HTTPRequest & a_Request); + +private: + /** All tabs that this plugin has registered. + Protected against multithreaded access by m_CSTabs. */ + cTabPtrs m_Tabs; + + /** Protects m_Tabs against multithreaded access. */ + mutable cCriticalSection m_CSTabs; +}; // tolua_export + + + + |