blob: ae214f4f524ff9e1bd0f35cda5523bea4933840c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
//
// Copyright (c) ZeroC, Inc. All rights reserved.
//
#pragma once
[["cpp:dll-export:ICE_API"]]
[["cpp:doxygen:include:Ice/Ice.h"]]
[["cpp:header-ext:h"]]
[["ice-prefix"]]
[["js:module:ice"]]
[["objc:dll-export:ICE_API"]]
[["objc:header-dir:objc"]]
[["python:pkgdir:Ice"]]
#include <Ice/LoggerF.ice>
#include <Ice/BuiltinSequences.ice>
#ifndef __SLICE2JAVA_COMPAT__
[["java:package:com.zeroc"]]
#endif
["objc:prefix:ICE"]
module Ice
{
#if !defined(__SLICE2PHP__)
/**
*
* A communicator plug-in. A plug-in generally adds a feature to a
* communicator, such as support for a protocol.
*
* The communicator loads its plug-ins in two stages: the first stage
* creates the plug-ins, and the second stage invokes {@link Plugin#initialize} on
* each one.
*
**/
local interface Plugin
{
/**
*
* Perform any necessary initialization steps.
*
**/
void initialize();
/**
*
* Called when the communicator is being destroyed.
*
**/
void destroy();
}
/**
*
* Each communicator has a plug-in manager to administer the set of
* plug-ins.
*
**/
local interface PluginManager
{
/**
*
* Initialize the configured plug-ins. The communicator automatically initializes
* the plug-ins by default, but an application may need to interact directly with
* a plug-in prior to initialization. In this case, the application must set
* <code>Ice.InitPlugins=0</code> and then invoke {@link #initializePlugins}
* manually. The plug-ins are initialized in the order in which they are loaded.
* If a plug-in raises an exception during initialization, the communicator
* invokes destroy on the plug-ins that have already been initialized.
*
* @throws InitializationException Raised if the plug-ins have already been initialized.
*
**/
void initializePlugins();
/**
*
* Get a list of plugins installed.
*
* @return The names of the plugins installed.
*
* @see #getPlugin
*
**/
["cpp:noexcept", "swift:noexcept"] StringSeq getPlugins();
/**
*
* Obtain a plug-in by name.
*
* @param name The plug-in's name.
*
* @return The plug-in.
*
* @throws NotRegisteredException Raised if no plug-in is found with the given name.
*
**/
Plugin getPlugin(string name);
/**
*
* Install a new plug-in.
*
* @param name The plug-in's name.
*
* @param pi The plug-in.
*
* @throws AlreadyRegisteredException Raised if a plug-in already exists with the given name.
*
**/
void addPlugin(string name, Plugin pi);
/**
*
* Called when the communicator is being destroyed.
*
**/
["cpp:noexcept", "swift:noexcept"] void destroy();
}
#endif
}
|