// A request for the current office // that was given by command line or by IPC pipe communication. struct ProcessDocumentsRequest
{ explicit ProcessDocumentsRequest(std::optional< OUString > cwdUrl):
aCwdUrl(std::move(cwdUrl)), pcProcessed( nullptr ), bTextCat( false ), bScriptCat( false) {}
std::optional< OUString > aCwdUrl;
OUString aModule;
std::vector< OUString > aOpenList; // Documents that should be opened in the default way
std::vector< OUString > aViewList; // Documents that should be opened in viewmode
std::vector< OUString > aStartList; // Documents/Presentations that should be started
std::vector< OUString > aPrintList; // Documents that should be printed on default printer
std::vector< OUString > aForceOpenList; // Documents that should be forced to open for editing (even templates)
std::vector< OUString > aForceNewList; // Documents that should be forced to create a new document
OUString aPrinterName; // The printer name that should be used for printing
std::vector< OUString > aPrintToList; // Documents that should be printed on the given printer
std::vector< OUString > aConversionList;
OUString aConversionParams;
OUString aConversionOut;
OUString aImageConversionType;
OUString aStartListParams;
std::vector< OUString > aInFilter;
::osl::Condition *pcProcessed; // pointer condition to be set when the request has been processed bool* mpbSuccess = nullptr; // pointer to boolean receiving if the processing was successful bool bTextCat; // boolean flag indicating whether to dump text content to console bool bScriptCat; // boolean flag indicating whether to dump script content to console
};
class DispatchWatcher; class IpcThread; class PipeIpcThread; class DbusIpcThread;
class RequestHandler: public salhelper::SimpleReferenceObject
{ friend IpcThread; friend PipeIpcThread; friend DbusIpcThread;
enumclass State { Starting, RequestsEnabled, Downing };
State mState; int mnPendingRequests;
rtl::Reference<DispatchWatcher> mpDispatchWatcher;
rtl::Reference<IpcThread> mIpcThread;
/* condition to be set when the request has been processed */
::osl::Condition cProcessed; /* receives if the processing was successful (may be false e.g. when shutting down) */ bool mbSuccess = false;
/* condition to be set when the main event loop is ready otherwiseanerrordialogseventloopcouldeataway
requests from a 2nd office */
::osl::Condition cReady;
static ::osl::Mutex& GetMutex();
RequestHandler();
virtual ~RequestHandler() override;
public: enum Status
{
IPC_STATUS_OK,
IPC_STATUS_2ND_OFFICE,
IPC_STATUS_PIPE_ERROR,
IPC_STATUS_BOOTSTRAP_ERROR
};
// controlling pipe communication during shutdown staticvoid SetDowning(); staticvoid EnableRequests(); staticbool AreRequestsPending(); staticvoid RequestsCompleted(); staticbool ExecuteCmdLineRequests(
ProcessDocumentsRequest&, bool noTerminate);
// return sal_False if second office static Status Enable(bool ipc); staticvoid Disable(); // start dispatching events... staticvoid SetReady(bool bIsReady); staticvoid WaitForReady();
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.