diff options
author | Andrey Lihatskiy <alihatskiy@productengine.com> | 2024-04-29 07:43:28 +0300 |
---|---|---|
committer | Andrey Lihatskiy <alihatskiy@productengine.com> | 2024-04-29 07:56:09 +0300 |
commit | 1b68f71348ecf3983b76b40d7940da8377f049b7 (patch) | |
tree | 2974eddaef130a067c26033d60a59fc790365b3d /indra/llplugin/llpluginprocessparent.h | |
parent | af4ea94efc1999f3b19fd8d643d0331f0b77e265 (diff) |
#824 Process source files in bulk: replace tabs with spaces, convert CRLF to LF, and trim trailing whitespaces as needed
Diffstat (limited to 'indra/llplugin/llpluginprocessparent.h')
-rw-r--r-- | indra/llplugin/llpluginprocessparent.h | 272 |
1 files changed, 136 insertions, 136 deletions
diff --git a/indra/llplugin/llpluginprocessparent.h b/indra/llplugin/llpluginprocessparent.h index 01627925d7..1966e6b13c 100644 --- a/indra/llplugin/llpluginprocessparent.h +++ b/indra/llplugin/llpluginprocessparent.h @@ -1,4 +1,4 @@ -/** +/** * @file llpluginprocessparent.h * @brief LLPluginProcessParent handles the parent side of the external-process plugin API. * @@ -6,21 +6,21 @@ * $LicenseInfo:firstyear=2008&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2010, Linden Research, Inc. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * + * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ * @endcond @@ -43,182 +43,182 @@ #include "llsd.h" #include "llevents.h" -class LLPluginProcessParentOwner : public std::enable_shared_from_this < LLPluginProcessParentOwner > +class LLPluginProcessParentOwner : public std::enable_shared_from_this < LLPluginProcessParentOwner > { public: - virtual ~LLPluginProcessParentOwner(); - virtual void receivePluginMessage(const LLPluginMessage &message) = 0; - virtual bool receivePluginMessageEarly(const LLPluginMessage &message) {return false;}; - // This will only be called when the plugin has died unexpectedly - virtual void pluginLaunchFailed() {}; - virtual void pluginDied() {}; + virtual ~LLPluginProcessParentOwner(); + virtual void receivePluginMessage(const LLPluginMessage &message) = 0; + virtual bool receivePluginMessageEarly(const LLPluginMessage &message) {return false;}; + // This will only be called when the plugin has died unexpectedly + virtual void pluginLaunchFailed() {}; + virtual void pluginDied() {}; }; class LLPluginProcessParent : public LLPluginMessagePipeOwner { - LOG_CLASS(LLPluginProcessParent); + LOG_CLASS(LLPluginProcessParent); LLPluginProcessParent(LLPluginProcessParentOwner *owner); public: typedef std::shared_ptr<LLPluginProcessParent> ptr_t; - ~LLPluginProcessParent(); - - void init(const std::string &launcher_filename, - const std::string &plugin_dir, - const std::string &plugin_filename, - bool debug); + ~LLPluginProcessParent(); + + void init(const std::string &launcher_filename, + const std::string &plugin_dir, + const std::string &plugin_filename, + bool debug); // Creates a process // returns true if process already exists or if created, // false if failed to create bool createPluginProcess(); - void idle(void); - - // returns true if the plugin is on its way to steady state - bool isLoading(void); + void idle(void); + + // returns true if the plugin is on its way to steady state + bool isLoading(void); + + // returns true if the plugin is in the steady state (processing messages) + bool isRunning(void); - // returns true if the plugin is in the steady state (processing messages) - bool isRunning(void); + // returns true if the process has exited or we've had a fatal error + bool isDone(void); - // returns true if the process has exited or we've had a fatal error - bool isDone(void); - - // returns true if the process is currently waiting on a blocking request - bool isBlocked(void) { return mBlocked; }; - - void killSockets(void); - - // Go to the proper error state - void errorState(void); + // returns true if the process is currently waiting on a blocking request + bool isBlocked(void) { return mBlocked; }; - void setSleepTime(F64 sleep_time, bool force_send = false); - F64 getSleepTime(void) const { return mSleepTime; }; + void killSockets(void); - void sendMessage(const LLPluginMessage &message); - - void receiveMessage(const LLPluginMessage &message); + // Go to the proper error state + void errorState(void); + + void setSleepTime(F64 sleep_time, bool force_send = false); + F64 getSleepTime(void) const { return mSleepTime; }; + + void sendMessage(const LLPluginMessage &message); + + void receiveMessage(const LLPluginMessage &message); static ptr_t create(LLPluginProcessParentOwner *owner); void requestShutdown(); - // Inherited from LLPluginMessagePipeOwner - /*virtual*/ void receiveMessageRaw(const std::string &message); - /*virtual*/ void receiveMessageEarly(const LLPluginMessage &message); - /*virtual*/ void setMessagePipe(LLPluginMessagePipe *message_pipe) ; - - // This adds a memory segment shared with the client, generating a name for the segment. The name generated is guaranteed to be unique on the host. - // The caller must call removeSharedMemory first (and wait until getSharedMemorySize returns 0 for the indicated name) before re-adding a segment with the same name. - std::string addSharedMemory(size_t size); - // Negotiates for the removal of a shared memory segment. It is the caller's responsibility to ensure that nothing touches the memory - // after this has been called, since the segment will be unmapped shortly thereafter. - void removeSharedMemory(const std::string &name); - size_t getSharedMemorySize(const std::string &name); - void *getSharedMemoryAddress(const std::string &name); - - // Returns the version string the plugin indicated for the message class, or an empty string if that class wasn't in the list. - std::string getMessageClassVersion(const std::string &message_class); - - std::string getPluginVersion(void); - - bool getDisableTimeout() { return mDisableTimeout; }; - void setDisableTimeout(bool disable) { mDisableTimeout = disable; }; - - void setLaunchTimeout(F32 timeout) { mPluginLaunchTimeout = timeout; }; - void setLockupTimeout(F32 timeout) { mPluginLockupTimeout = timeout; }; - - F64 getCPUUsage() { return mCPUUsage; }; - - static void poll(F64 timeout); - static bool canPollThreadRun() { return (sPollSet || sPollsetNeedsRebuild || sUseReadThread); }; - static void setUseReadThread(bool use_read_thread); - static bool getUseReadThread() { return sUseReadThread; }; + // Inherited from LLPluginMessagePipeOwner + /*virtual*/ void receiveMessageRaw(const std::string &message); + /*virtual*/ void receiveMessageEarly(const LLPluginMessage &message); + /*virtual*/ void setMessagePipe(LLPluginMessagePipe *message_pipe) ; + + // This adds a memory segment shared with the client, generating a name for the segment. The name generated is guaranteed to be unique on the host. + // The caller must call removeSharedMemory first (and wait until getSharedMemorySize returns 0 for the indicated name) before re-adding a segment with the same name. + std::string addSharedMemory(size_t size); + // Negotiates for the removal of a shared memory segment. It is the caller's responsibility to ensure that nothing touches the memory + // after this has been called, since the segment will be unmapped shortly thereafter. + void removeSharedMemory(const std::string &name); + size_t getSharedMemorySize(const std::string &name); + void *getSharedMemoryAddress(const std::string &name); + + // Returns the version string the plugin indicated for the message class, or an empty string if that class wasn't in the list. + std::string getMessageClassVersion(const std::string &message_class); + + std::string getPluginVersion(void); + + bool getDisableTimeout() { return mDisableTimeout; }; + void setDisableTimeout(bool disable) { mDisableTimeout = disable; }; + + void setLaunchTimeout(F32 timeout) { mPluginLaunchTimeout = timeout; }; + void setLockupTimeout(F32 timeout) { mPluginLockupTimeout = timeout; }; + + F64 getCPUUsage() { return mCPUUsage; }; + + static void poll(F64 timeout); + static bool canPollThreadRun() { return (sPollSet || sPollsetNeedsRebuild || sUseReadThread); }; + static void setUseReadThread(bool use_read_thread); + static bool getUseReadThread() { return sUseReadThread; }; static void shutdown(); private: typedef std::map<void *, ptr_t> mapInstances_t; - enum EState - { - STATE_UNINITIALIZED, - STATE_INITIALIZED, // init() has been called - STATE_LISTENING, // listening for incoming connection - STATE_LAUNCHED, // process has been launched - STATE_CONNECTED, // process has connected - STATE_HELLO, // first message from the plugin process has been received - STATE_LOADING, // process has been asked to load the plugin - STATE_RUNNING, // + enum EState + { + STATE_UNINITIALIZED, + STATE_INITIALIZED, // init() has been called + STATE_LISTENING, // listening for incoming connection + STATE_LAUNCHED, // process has been launched + STATE_CONNECTED, // process has connected + STATE_HELLO, // first message from the plugin process has been received + STATE_LOADING, // process has been asked to load the plugin + STATE_RUNNING, // STATE_GOODBYE, - STATE_LAUNCH_FAILURE, // Failure before plugin loaded - STATE_ERROR, // generic bailout state - STATE_CLEANUP, // clean everything up - STATE_EXITING, // Tried to kill process, waiting for it to exit - STATE_DONE // + STATE_LAUNCH_FAILURE, // Failure before plugin loaded + STATE_ERROR, // generic bailout state + STATE_CLEANUP, // clean everything up + STATE_EXITING, // Tried to kill process, waiting for it to exit + STATE_DONE // - }; - EState mState; - void setState(EState state); + }; + EState mState; + void setState(EState state); bool wantsPolling() const; void removeFromProcessing(); - bool pluginLockedUp(); - bool pluginLockedUpOrQuit(); + bool pluginLockedUp(); + bool pluginLockedUpOrQuit(); - bool accept(); + bool accept(); void clearProcessCreationThread(); - LLSocket::ptr_t mListenSocket; - LLSocket::ptr_t mSocket; - U32 mBoundPort; - - LLProcess::Params mProcessParams; - LLProcessPtr mProcess; - LLThread *pProcessCreationThread; - - std::string mPluginFile; - std::string mPluginDir; - - LLPluginProcessParentOwner *mOwner; - - typedef std::map<std::string, LLPluginSharedMemory*> sharedMemoryRegionsType; - sharedMemoryRegionsType mSharedMemoryRegions; - - LLSD mMessageClassVersions; - std::string mPluginVersionString; - - LLTimer mHeartbeat; - F64 mSleepTime; - F64 mCPUUsage; - - bool mDisableTimeout; - bool mDebug; - bool mBlocked; - bool mPolledInput; - - LLProcessPtr mDebugger; - - F32 mPluginLaunchTimeout; // Somewhat longer timeout for initial launch. - F32 mPluginLockupTimeout; // If we don't receive a heartbeat in this many seconds, we declare the plugin locked up. - - static bool sUseReadThread; - apr_pollfd_t mPollFD; - static apr_pollset_t *sPollSet; - static bool sPollsetNeedsRebuild; - static LLMutex *sInstancesMutex; + LLSocket::ptr_t mListenSocket; + LLSocket::ptr_t mSocket; + U32 mBoundPort; + + LLProcess::Params mProcessParams; + LLProcessPtr mProcess; + LLThread *pProcessCreationThread; + + std::string mPluginFile; + std::string mPluginDir; + + LLPluginProcessParentOwner *mOwner; + + typedef std::map<std::string, LLPluginSharedMemory*> sharedMemoryRegionsType; + sharedMemoryRegionsType mSharedMemoryRegions; + + LLSD mMessageClassVersions; + std::string mPluginVersionString; + + LLTimer mHeartbeat; + F64 mSleepTime; + F64 mCPUUsage; + + bool mDisableTimeout; + bool mDebug; + bool mBlocked; + bool mPolledInput; + + LLProcessPtr mDebugger; + + F32 mPluginLaunchTimeout; // Somewhat longer timeout for initial launch. + F32 mPluginLockupTimeout; // If we don't receive a heartbeat in this many seconds, we declare the plugin locked up. + + static bool sUseReadThread; + apr_pollfd_t mPollFD; + static apr_pollset_t *sPollSet; + static bool sPollsetNeedsRebuild; + static LLMutex *sInstancesMutex; static mapInstances_t sInstances; - static void dirtyPollSet(); - static void updatePollset(); - void servicePoll(); - static LLThread *sReadThread; + static void dirtyPollSet(); + static void updatePollset(); + void servicePoll(); + static LLThread *sReadThread; LLTempBoundListener mPolling; bool pollTick(); - LLMutex mIncomingQueueMutex; - std::queue<LLPluginMessage> mIncomingQueue; + LLMutex mIncomingQueueMutex; + std::queue<LLPluginMessage> mIncomingQueue; }; #endif // LL_LLPLUGINPROCESSPARENT_H |