Ice 3.7 C++11 API Reference
Loading...
Searching...
No Matches
Initialize.h
Go to the documentation of this file.
1//
2// Copyright (c) ZeroC, Inc. All rights reserved.
3//
4
5#ifndef ICE_INITIALIZE_H
6#define ICE_INITIALIZE_H
7
8#include <IceUtil/Timer.h>
9#include <Ice/Communicator.h>
10#include <Ice/PropertiesF.h>
11#include <Ice/InstanceF.h>
12#include <Ice/LoggerF.h>
14#include <Ice/Dispatcher.h>
15#include <Ice/FactoryTable.h>
17#include <Ice/Version.h>
18#include <Ice/Plugin.h>
20
21#ifdef ICE_CPP11_MAPPING
22# define ICE_CONFIG_FILE_STRING const std::string&
23#else
24# define ICE_CONFIG_FILE_STRING const char*
25#endif
26
27namespace Ice
28{
29
36ICE_API StringSeq argsToStringSeq(int argc, const char* const argv[]);
37
38#ifdef _WIN32
45ICE_API StringSeq argsToStringSeq(int argc, const wchar_t* const argv[]);
46#endif
47
58ICE_API void stringSeqToArgs(const StringSeq& seq, int& argc, const char* argv[]);
59
70inline void stringSeqToArgs(const StringSeq& seq, int& argc, char* argv[])
71{
72 return stringSeqToArgs(seq, argc, const_cast<const char**>(argv));
73}
74
75#ifdef _WIN32
84ICE_API void stringSeqToArgs(const StringSeq& seq, int& argc, const wchar_t* argv[]);
85
94inline void stringSeqToArgs(const StringSeq& seq, int& argc, wchar_t* argv[])
95{
96 return stringSeqToArgs(seq, argc, const_cast<const wchar_t**>(argv));
97}
98#endif
99
105ICE_API PropertiesPtr createProperties();
106
124ICE_API PropertiesPtr createProperties(StringSeq& seq, const PropertiesPtr& defaults = 0);
125
145ICE_API PropertiesPtr createProperties(int& argc, const char* argv[], const PropertiesPtr& defaults = 0);
146
166inline PropertiesPtr createProperties(int& argc, char* argv[], const PropertiesPtr& defaults = 0)
167{
168 return createProperties(argc, const_cast<const char**>(argv), defaults);
169}
170
171#ifdef _WIN32
191ICE_API PropertiesPtr createProperties(int& argc, const wchar_t* argv[], const PropertiesPtr& defaults = 0);
192
212inline PropertiesPtr createProperties(int& argc, wchar_t* argv[], const PropertiesPtr& defaults = 0)
213{
214 return createProperties(argc, const_cast<const wchar_t**>(argv), defaults);
215}
216#endif
217
225{
226public:
227
231 virtual void start() = 0;
232
236 virtual void stop() = 0;
237};
238
240
247{
248public:
249
250#ifdef ICE_CPP11_MAPPING
257 ThreadHookPlugin(const CommunicatorPtr& communicator, std::function<void()> start, std::function<void()> stop);
258#else
264 ThreadHookPlugin(const CommunicatorPtr& communicator, const ThreadNotificationPtr& hook);
265#endif
266
268 virtual void initialize();
269
271 virtual void destroy();
272};
273
279{
283 PropertiesPtr properties;
284
288 LoggerPtr logger;
289
293 Instrumentation::CommunicatorObserverPtr observer;
294
295#ifdef ICE_CPP11_MAPPING
296
297#if defined(__clang__)
298# pragma clang diagnostic push
299# pragma clang diagnostic ignored "-Wdocumentation" // param/return is not recognized for std::function data members
300#endif
301
305 std::function<void()> threadStart;
306
310 std::function<void()> threadStop;
311
326 std::function<void(std::function<void()> call, const std::shared_ptr<Ice::Connection>& con)> dispatcher;
327
338 std::function<std::string(int id)> compactIdResolver;
339
346 std::function<void(const Ice::BatchRequest& req, int count, int size)> batchRequestInterceptor;
347
348#if defined(__clang__)
349# pragma clang diagnostic pop
350#endif
351
352#else
356 ThreadNotificationPtr threadHook;
357
370 DispatcherPtr dispatcher;
371
380
384 BatchRequestInterceptorPtr batchRequestInterceptor;
385#endif
386
390 ValueFactoryManagerPtr valueFactoryManager;
391};
392
408ICE_API CommunicatorPtr initialize(int& argc, const char* argv[],
409 const InitializationData& initData = InitializationData(),
410 int version = ICE_INT_VERSION);
411
427inline CommunicatorPtr initialize(int& argc, char* argv[], const InitializationData& initData = InitializationData(),
428 int version = ICE_INT_VERSION)
429{
430 return initialize(argc, const_cast<const char**>(argv), initData, version);
431}
432
448ICE_API CommunicatorPtr initialize(int& argc, const char* argv[], ICE_CONFIG_FILE_STRING configFile,
449 int version = ICE_INT_VERSION);
450
466inline CommunicatorPtr initialize(int& argc, char* argv[], ICE_CONFIG_FILE_STRING configFile,
467 int version = ICE_INT_VERSION)
468{
469 return initialize(argc, const_cast<const char**>(argv), configFile, version);
470}
471
472#ifdef _WIN32
488ICE_API CommunicatorPtr initialize(int& argc, const wchar_t* argv[],
489 const InitializationData& initData = InitializationData(),
490 int version = ICE_INT_VERSION);
491
507inline CommunicatorPtr initialize(int& argc, wchar_t* argv[], const InitializationData& initData = InitializationData(),
508 int version = ICE_INT_VERSION)
509{
510 return initialize(argc, const_cast<const wchar_t**>(argv), initData, version);
511}
512
528ICE_API CommunicatorPtr initialize(int& argc, const wchar_t* argv[], ICE_CONFIG_FILE_STRING configFile,
529 int version = ICE_INT_VERSION);
530
546inline CommunicatorPtr initialize(int& argc, wchar_t* argv[], ICE_CONFIG_FILE_STRING configFile,
547 int version = ICE_INT_VERSION)
548{
549 return initialize(argc, const_cast<const wchar_t**>(argv), configFile, version);
550}
551#endif
552
566ICE_API CommunicatorPtr initialize(StringSeq& seq, const InitializationData& initData = InitializationData(),
567 int version = ICE_INT_VERSION);
568
582ICE_API CommunicatorPtr initialize(StringSeq& seq, ICE_CONFIG_FILE_STRING configFile, int version = ICE_INT_VERSION);
583
591ICE_API CommunicatorPtr initialize(const InitializationData& initData = InitializationData(),
592 int version = ICE_INT_VERSION);
593
601ICE_API CommunicatorPtr initialize(ICE_CONFIG_FILE_STRING configFile, int version = ICE_INT_VERSION);
602
609
615ICE_API void setProcessLogger(const LoggerPtr& logger);
616
624typedef Ice::Plugin* (*PluginFactory)(const ::Ice::CommunicatorPtr& communicator, const std::string& name,
625 const ::Ice::StringSeq& args);
626
635ICE_API void registerPluginFactory(const std::string& name, PluginFactory factory, bool loadOnInit);
636
643{
644public:
645
650
651#ifdef ICE_CPP11_MAPPING
652
658 template<class... T>
659 explicit CommunicatorHolder(T&&... args) :
660 _communicator(std::move(initialize(std::forward<T>(args)...)))
661 {
662 }
663
668 CommunicatorHolder(std::shared_ptr<Communicator> communicator);
669
675 CommunicatorHolder& operator=(std::shared_ptr<Communicator> communicator);
676
679
686
691 explicit operator bool() const;
692
693#else // C++98 mapping
694
709 CommunicatorHolder(int& argc, const char* argv[], const InitializationData& initData = InitializationData(),
710 int version = ICE_INT_VERSION);
711
726 CommunicatorHolder(int& argc, char* argv[], const InitializationData& initData = InitializationData(),
727 int version = ICE_INT_VERSION);
728
743 CommunicatorHolder(int& argc, const char* argv[], const char* configFile, int version = ICE_INT_VERSION);
744
759 CommunicatorHolder(int& argc, char* argv[], const char* configFile, int version = ICE_INT_VERSION);
760
761# ifdef _WIN32
776 CommunicatorHolder(int& argc, const wchar_t* argv[], const InitializationData& initData = InitializationData(),
777 int version = ICE_INT_VERSION);
778
793 CommunicatorHolder(int& argc, wchar_t* argv[], const InitializationData& initData = InitializationData(),
794 int version = ICE_INT_VERSION);
795
810 CommunicatorHolder(int& argc, const wchar_t* argv[], const char* configFile, int version = ICE_INT_VERSION);
811
826 CommunicatorHolder(int& argc, wchar_t* argv[], const char* configFile, int version = ICE_INT_VERSION);
827# endif
828
841 explicit CommunicatorHolder(StringSeq& seq, const InitializationData& initData = InitializationData(),
842 int version = ICE_INT_VERSION);
843
856 CommunicatorHolder(StringSeq& seq, const char* configFile, int version = ICE_INT_VERSION);
857
864 explicit CommunicatorHolder(const InitializationData& initData, int version = ICE_INT_VERSION);
865
872 explicit CommunicatorHolder(const char* configFile, int version = ICE_INT_VERSION);
873
878 CommunicatorHolder(const CommunicatorPtr& communicator);
879
885 CommunicatorHolder& operator=(const CommunicatorPtr& communicator);
886
891 operator bool() const;
892
894 //
895 // Required for successful copy-initialization, but not
896 // defined as it should always be elided by the compiler.
899
900#endif
901
903
908 const CommunicatorPtr& communicator() const;
909
914 const CommunicatorPtr& operator->() const;
915
920 CommunicatorPtr release();
921
922private:
923
924 CommunicatorPtr _communicator;
925};
926
932ICE_API Identity stringToIdentity(const std::string& str);
933
941
942}
943
944namespace IceInternal
945{
946
947//
948// Some Ice extensions need access to the Ice internal instance. Do
949// not use this operation for regular application code! It is intended
950// to be used by modules such as Freeze.
951//
952ICE_API InstancePtr getInstance(const ::Ice::CommunicatorPtr&);
953ICE_API IceUtil::TimerPtr getInstanceTimer(const ::Ice::CommunicatorPtr&);
954
955}
956
957#endif
#define ICE_API
Definition Config.h:197
#define ICE_INT_VERSION
Definition Config.h:272
#define ICE_ENUM(CLASS, ENUMERATOR)
Definition Config.h:360
#define ICE_CONFIG_FILE_STRING
Definition Initialize.h:22
Definition Handle.h:143
Definition Shared.h:78
Represents an invocation on a proxy configured for batch-oneway or batch-datagram.
Definition BatchRequestInterceptor.h:19
const CommunicatorPtr & operator->() const
Obtains the communicator instance.
CommunicatorPtr release()
Obtains the communicator instance and clears the reference held by the holder.
CommunicatorHolder & operator=(CommunicatorHolder &&holder) noexcept
Adopts the communicator in the given holder.
CommunicatorHolder()
The holder's initial state is empty.
CommunicatorHolder(const CommunicatorHolder &)=delete
const CommunicatorPtr & communicator() const
Obtains the communicator instance.
CommunicatorHolder(std::shared_ptr< Communicator > communicator)
Adopts the given communicator.
CommunicatorHolder(CommunicatorHolder &&)=default
CommunicatorHolder & operator=(std::shared_ptr< Communicator > communicator)
Adopts the given communicator.
CommunicatorHolder(T &&... args)
Calls initialize to create a communicator with the provided arguments.
Definition Initialize.h:659
A communicator plug-in.
Definition Plugin.h:78
ThreadHookPlugin(const CommunicatorPtr &communicator, std::function< void()> start, std::function< void()> stop)
Installs the thread hooks.
virtual void destroy()
Not used.
virtual void initialize()
Not used.
Base class for a thread notification hook.
Definition Initialize.h:225
virtual void stop()=0
Called from an Ice thread that is about to stop.
virtual void start()=0
Called from the new Ice thread at startup.
IceUtil::Handle< Timer > TimerPtr
Definition Timer.h:21
Definition BuiltinSequences.h:56
void setProcessLogger(const LoggerPtr &logger)
Sets the per-process logger.
IceUtil::Handle< ThreadNotification > ThreadNotificationPtr
Definition Initialize.h:239
std::string identityToString(const Identity &id, ToStringMode mode=ToStringMode::Unicode)
Converts an Identity structure into a string using the specified mode.
StringSeq argsToStringSeq(int argc, const char *const argv[])
Converts an argument vector into a string sequence.
IceUtil::Handle< CompactIdResolver > CompactIdResolverPtr
Definition FactoryTable.h:31
LoggerPtr getProcessLogger()
Obtains the per-process logger.
PropertiesPtr createProperties()
Creates a new empty property set.
Ice::Plugin *(* PluginFactory)(const ::Ice::CommunicatorPtr &communicator, const std::string &name, const ::Ice::StringSeq &args)
A plug-in factory function is responsible for creating an Ice plug-in.
Definition Initialize.h:624
CommunicatorPtr initialize(int &argc, const char *argv[], const InitializationData &initData=InitializationData(), int version=30711)
Initializes a new communicator.
ToStringMode
The output mode for xxxToString method such as identityToString and proxyToString.
Definition Communicator.h:92
@ Unicode
Characters with ordinal values greater than 127 are kept as-is in the resulting string.
Definition Communicator.h:98
Identity stringToIdentity(const std::string &str)
Converts a stringified identity into an Identity.
void stringSeqToArgs(const StringSeq &seq, int &argc, const char *argv[])
Updates the argument vector to match the contents of the string sequence.
::std::vector<::std::string > StringSeq
A sequence of strings.
Definition BuiltinSequences.h:96
void registerPluginFactory(const std::string &name, PluginFactory factory, bool loadOnInit)
Manually registers a plug-in factory function.
The identity of an Ice object.
Definition Identity.h:67
Encapsulates data to initialize a communicator.
Definition Initialize.h:279
Instrumentation::CommunicatorObserverPtr observer
The communicator observer used by the Ice run-time.
Definition Initialize.h:293
std::function< void(const Ice::BatchRequest &req, int count, int size)> batchRequestInterceptor
The batch request interceptor, which is called by the Ice run time to enqueue a batch request.
Definition Initialize.h:346
PropertiesPtr properties
The properties for the communicator.
Definition Initialize.h:283
ValueFactoryManagerPtr valueFactoryManager
The value factory manager.
Definition Initialize.h:390
LoggerPtr logger
The logger for the communicator.
Definition Initialize.h:288
std::function< void()> threadStop
Called whenever a thread created by the communicator is about to be destroyed.
Definition Initialize.h:310
std::function< void(std::function< void()> call, const std::shared_ptr< Ice::Connection > &con)> dispatcher
You can control which thread receives operation invocations and AMI callbacks by supplying a dispatch...
Definition Initialize.h:326
std::function< std::string(int id)> compactIdResolver
Applications that make use of compact type IDs to conserve space when marshaling class instances,...
Definition Initialize.h:338
std::function< void()> threadStart
Called whenever the communicator starts a new thread.
Definition Initialize.h:305