zeroc-ice 3.6.0 → 3.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (195) hide show
  1. checksums.yaml +4 -4
  2. data/ext/ice/cpp/include/Ice/BuiltinSequences.h +2 -2
  3. data/ext/ice/cpp/include/Ice/Communicator.h +2 -2
  4. data/ext/ice/cpp/include/Ice/CommunicatorF.h +2 -2
  5. data/ext/ice/cpp/include/Ice/Connection.h +5 -9
  6. data/ext/ice/cpp/include/Ice/ConnectionF.h +2 -2
  7. data/ext/ice/cpp/include/Ice/Current.h +2 -2
  8. data/ext/ice/cpp/include/Ice/Endpoint.h +6 -11
  9. data/ext/ice/cpp/include/Ice/EndpointF.h +2 -2
  10. data/ext/ice/cpp/include/Ice/EndpointTypes.h +2 -2
  11. data/ext/ice/cpp/include/Ice/FacetMap.h +2 -2
  12. data/ext/ice/cpp/include/Ice/Ice.h +1 -0
  13. data/ext/ice/cpp/include/Ice/Identity.h +2 -2
  14. data/ext/ice/cpp/include/Ice/ImplicitContext.h +2 -2
  15. data/ext/ice/cpp/include/Ice/ImplicitContextF.h +2 -2
  16. data/ext/ice/cpp/include/Ice/Instrumentation.h +2 -2
  17. data/ext/ice/cpp/include/Ice/InstrumentationF.h +2 -2
  18. data/ext/ice/cpp/include/Ice/LocalException.h +2 -2
  19. data/ext/ice/cpp/include/Ice/Locator.h +2 -2
  20. data/ext/ice/cpp/include/Ice/LocatorF.h +2 -2
  21. data/ext/ice/cpp/include/Ice/Logger.h +2 -2
  22. data/ext/ice/cpp/include/Ice/LoggerF.h +2 -2
  23. data/ext/ice/cpp/include/Ice/Metrics.h +7 -14
  24. data/ext/ice/cpp/include/Ice/ObjectAdapter.h +2 -2
  25. data/ext/ice/cpp/include/Ice/ObjectAdapterF.h +2 -2
  26. data/ext/ice/cpp/include/Ice/ObjectFactory.h +2 -2
  27. data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +2 -2
  28. data/ext/ice/cpp/include/Ice/Plugin.h +2 -2
  29. data/ext/ice/cpp/include/Ice/PluginF.h +2 -2
  30. data/ext/ice/cpp/include/Ice/Process.h +2 -2
  31. data/ext/ice/cpp/include/Ice/ProcessF.h +2 -2
  32. data/ext/ice/cpp/include/Ice/Properties.h +2 -2
  33. data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +2 -2
  34. data/ext/ice/cpp/include/Ice/PropertiesF.h +2 -2
  35. data/ext/ice/cpp/include/Ice/RegisterPlugins.h +55 -0
  36. data/ext/ice/cpp/include/Ice/RemoteLogger.h +2 -2
  37. data/ext/ice/cpp/include/Ice/Router.h +2 -2
  38. data/ext/ice/cpp/include/Ice/RouterF.h +2 -2
  39. data/ext/ice/cpp/include/Ice/ServantLocator.h +2 -2
  40. data/ext/ice/cpp/include/Ice/ServantLocatorF.h +2 -2
  41. data/ext/ice/cpp/include/Ice/SliceChecksumDict.h +2 -2
  42. data/ext/ice/cpp/include/Ice/Version.h +2 -2
  43. data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +4 -6
  44. data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +3 -5
  45. data/ext/ice/cpp/include/IceUtil/Config.h +5 -5
  46. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +2 -2
  47. data/ext/ice/cpp/src/Ice/Communicator.cpp +2 -2
  48. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +2 -2
  49. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +0 -1
  50. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +12 -17
  51. data/ext/ice/cpp/src/Ice/Connection.cpp +2 -2
  52. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +2 -2
  53. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +33 -4
  54. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +8 -0
  55. data/ext/ice/cpp/src/Ice/Current.cpp +2 -2
  56. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +0 -1
  57. data/ext/ice/cpp/src/Ice/DeprecatedStringConverter.cpp +2 -0
  58. data/ext/ice/cpp/src/Ice/Endpoint.cpp +2 -2
  59. data/ext/ice/cpp/src/Ice/EndpointF.cpp +2 -2
  60. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +2 -2
  61. data/ext/ice/cpp/src/Ice/FacetMap.cpp +2 -2
  62. data/ext/ice/cpp/src/Ice/HttpParser.cpp +0 -2
  63. data/ext/ice/cpp/src/Ice/Identity.cpp +2 -2
  64. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +2 -2
  65. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +2 -2
  66. data/ext/ice/cpp/src/Ice/Initialize.cpp +25 -30
  67. data/ext/ice/cpp/src/Ice/Instance.cpp +1 -3
  68. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +2 -2
  69. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +2 -2
  70. data/ext/ice/cpp/src/Ice/LocalException.cpp +2 -2
  71. data/ext/ice/cpp/src/Ice/Locator.cpp +2 -2
  72. data/ext/ice/cpp/src/Ice/LocatorF.cpp +2 -2
  73. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +6 -6
  74. data/ext/ice/cpp/src/Ice/LocatorInfo.h +9 -8
  75. data/ext/ice/cpp/src/Ice/Logger.cpp +2 -2
  76. data/ext/ice/cpp/src/Ice/LoggerF.cpp +2 -2
  77. data/ext/ice/cpp/src/Ice/Metrics.cpp +10 -2
  78. data/ext/ice/cpp/src/Ice/Network.h +10 -0
  79. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +2 -2
  80. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +2 -2
  81. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +68 -143
  82. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +1 -2
  83. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +2 -2
  84. data/ext/ice/cpp/src/Ice/ObjectFactoryF.cpp +2 -2
  85. data/ext/ice/cpp/src/Ice/Outgoing.cpp +0 -1
  86. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +0 -1
  87. data/ext/ice/cpp/src/Ice/Plugin.cpp +2 -2
  88. data/ext/ice/cpp/src/Ice/PluginF.cpp +2 -2
  89. data/ext/ice/cpp/src/Ice/Process.cpp +2 -2
  90. data/ext/ice/cpp/src/Ice/ProcessF.cpp +2 -2
  91. data/ext/ice/cpp/src/Ice/Properties.cpp +2 -2
  92. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +2 -2
  93. data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +6 -7
  94. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +2 -2
  95. data/ext/ice/cpp/src/Ice/PropertiesI.cpp +17 -18
  96. data/ext/ice/cpp/src/Ice/Reference.cpp +1 -1
  97. data/ext/ice/cpp/src/Ice/{RegisterPlugins.cpp → RegisterPluginsInit.cpp} +1 -1
  98. data/ext/ice/cpp/src/Ice/{RegisterPlugins.h → RegisterPluginsInit.h} +2 -2
  99. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +2 -2
  100. data/ext/ice/cpp/src/Ice/Router.cpp +2 -2
  101. data/ext/ice/cpp/src/Ice/RouterF.cpp +2 -2
  102. data/ext/ice/cpp/src/Ice/Selector.cpp +51 -45
  103. data/ext/ice/cpp/src/Ice/Selector.h +4 -4
  104. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +2 -2
  105. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +2 -2
  106. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +2 -2
  107. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +7 -2
  108. data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +15 -3
  109. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +0 -2
  110. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +46 -47
  111. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +28 -8
  112. data/ext/ice/cpp/src/Ice/Version.cpp +2 -2
  113. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +26 -2
  114. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +2 -2
  115. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +2 -2
  116. data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +11 -0
  117. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +2 -2
  118. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +2 -2
  119. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +11 -0
  120. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +2 -2
  121. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +2 -2
  122. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +1 -3
  123. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +11 -0
  124. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +7 -0
  125. data/ext/ice/cpp/src/IceUtil/ArgVector.cpp +0 -1
  126. data/ext/ice/cpp/src/IceUtil/Exception.cpp +2 -1
  127. data/ext/ice/cpp/src/Slice/FileTracker.cpp +3 -2
  128. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +0 -1
  129. data/ext/ice/cpp/src/Slice/Parser.cpp +35 -9
  130. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +10 -11
  131. data/ext/ice/cpp/src/Slice/Python.cpp +54 -36
  132. data/ext/ice/mcpp/Makefile +10 -0
  133. data/ext/ice/mcpp/Makefile.mak +23 -15
  134. data/ice.gemspec +1 -2
  135. data/lib/Glacier2/Metrics.rb +1 -1
  136. data/lib/Glacier2/PermissionsVerifier.rb +1 -1
  137. data/lib/Glacier2/PermissionsVerifierF.rb +1 -1
  138. data/lib/Glacier2/Router.rb +1 -1
  139. data/lib/Glacier2/RouterF.rb +1 -1
  140. data/lib/Glacier2/SSLInfo.rb +1 -1
  141. data/lib/Glacier2/Session.rb +1 -1
  142. data/lib/Ice.rb +1 -0
  143. data/lib/Ice/BuiltinSequences.rb +1 -1
  144. data/lib/Ice/Communicator.rb +1 -1
  145. data/lib/Ice/CommunicatorF.rb +1 -1
  146. data/lib/Ice/Connection.rb +1 -1
  147. data/lib/Ice/ConnectionF.rb +1 -1
  148. data/lib/Ice/Current.rb +1 -1
  149. data/lib/Ice/Endpoint.rb +1 -1
  150. data/lib/Ice/EndpointF.rb +1 -1
  151. data/lib/Ice/EndpointTypes.rb +1 -1
  152. data/lib/Ice/FacetMap.rb +1 -1
  153. data/lib/Ice/Identity.rb +1 -1
  154. data/lib/Ice/ImplicitContext.rb +1 -1
  155. data/lib/Ice/ImplicitContextF.rb +1 -1
  156. data/lib/Ice/Instrumentation.rb +1 -1
  157. data/lib/Ice/InstrumentationF.rb +1 -1
  158. data/lib/Ice/LocalException.rb +1 -1
  159. data/lib/Ice/Locator.rb +1 -1
  160. data/lib/Ice/LocatorF.rb +1 -1
  161. data/lib/Ice/Logger.rb +1 -1
  162. data/lib/Ice/LoggerF.rb +1 -1
  163. data/lib/Ice/Metrics.rb +1 -1
  164. data/lib/Ice/ObjectAdapterF.rb +1 -1
  165. data/lib/Ice/ObjectFactory.rb +1 -1
  166. data/lib/Ice/ObjectFactoryF.rb +1 -1
  167. data/lib/Ice/Plugin.rb +1 -1
  168. data/lib/Ice/PluginF.rb +1 -1
  169. data/lib/Ice/Process.rb +1 -1
  170. data/lib/Ice/ProcessF.rb +1 -1
  171. data/lib/Ice/Properties.rb +1 -1
  172. data/lib/Ice/PropertiesAdmin.rb +1 -1
  173. data/lib/Ice/PropertiesF.rb +1 -1
  174. data/lib/Ice/RemoteLogger.rb +292 -0
  175. data/lib/Ice/Router.rb +1 -1
  176. data/lib/Ice/RouterF.rb +1 -1
  177. data/lib/Ice/SliceChecksumDict.rb +1 -1
  178. data/lib/Ice/Version.rb +1 -1
  179. data/lib/IceBox/IceBox.rb +1 -1
  180. data/lib/IceGrid/Admin.rb +1 -1
  181. data/lib/IceGrid/Descriptor.rb +1 -1
  182. data/lib/IceGrid/Exception.rb +1 -1
  183. data/lib/IceGrid/FileParser.rb +1 -1
  184. data/lib/IceGrid/Locator.rb +1 -1
  185. data/lib/IceGrid/Observer.rb +1 -1
  186. data/lib/IceGrid/Query.rb +1 -1
  187. data/lib/IceGrid/Registry.rb +1 -1
  188. data/lib/IceGrid/Session.rb +1 -1
  189. data/lib/IceGrid/UserAccountMapper.rb +1 -1
  190. data/lib/IcePatch2/FileInfo.rb +1 -1
  191. data/lib/IcePatch2/FileServer.rb +1 -1
  192. data/lib/IceStorm/IceStorm.rb +1 -1
  193. data/lib/IceStorm/Metrics.rb +1 -1
  194. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +4 -0
  195. metadata +6 -4
@@ -7,7 +7,7 @@
7
7
  //
8
8
  // **********************************************************************
9
9
  //
10
- // Ice version 3.6.0
10
+ // Ice version 3.6.1
11
11
  //
12
12
  // <auto-generated>
13
13
  //
@@ -38,7 +38,7 @@
38
38
  # if ICE_INT_VERSION % 100 > 50
39
39
  # error Beta header file detected
40
40
  # endif
41
- # if ICE_INT_VERSION % 100 < 0
41
+ # if ICE_INT_VERSION % 100 < 1
42
42
  # error Ice patch level mismatch!
43
43
  # endif
44
44
  #endif
@@ -7,7 +7,7 @@
7
7
  //
8
8
  // **********************************************************************
9
9
  //
10
- // Ice version 3.6.0
10
+ // Ice version 3.6.1
11
11
  //
12
12
  // <auto-generated>
13
13
  //
@@ -34,7 +34,7 @@
34
34
  # if ICE_INT_VERSION % 100 > 50
35
35
  # error Beta header file detected
36
36
  # endif
37
- # if ICE_INT_VERSION % 100 < 0
37
+ # if ICE_INT_VERSION % 100 < 1
38
38
  # error Ice patch level mismatch!
39
39
  # endif
40
40
  #endif
@@ -7,7 +7,7 @@
7
7
  //
8
8
  // **********************************************************************
9
9
  //
10
- // Ice version 3.6.0
10
+ // Ice version 3.6.1
11
11
  //
12
12
  // <auto-generated>
13
13
  //
@@ -38,7 +38,7 @@
38
38
  # if ICE_INT_VERSION % 100 > 50
39
39
  # error Beta header file detected
40
40
  # endif
41
- # if ICE_INT_VERSION % 100 < 0
41
+ # if ICE_INT_VERSION % 100 < 1
42
42
  # error Ice patch level mismatch!
43
43
  # endif
44
44
  #endif
@@ -7,7 +7,7 @@
7
7
  //
8
8
  // **********************************************************************
9
9
  //
10
- // Ice version 3.6.0
10
+ // Ice version 3.6.1
11
11
  //
12
12
  // <auto-generated>
13
13
  //
@@ -38,7 +38,7 @@
38
38
  # if ICE_INT_VERSION % 100 > 50
39
39
  # error Beta header file detected
40
40
  # endif
41
- # if ICE_INT_VERSION % 100 < 0
41
+ # if ICE_INT_VERSION % 100 < 1
42
42
  # error Ice patch level mismatch!
43
43
  # endif
44
44
  #endif
@@ -7,7 +7,6 @@
7
7
  //
8
8
  // **********************************************************************
9
9
 
10
- #include <IceUtil/DisableWarnings.h>
11
10
  #include <Ice/PropertiesAdminI.h>
12
11
  #include <Ice/Logger.h>
13
12
  #include <Ice/LoggerUtil.h>
@@ -15,7 +14,7 @@
15
14
  using namespace std;
16
15
  using namespace Ice;
17
16
 
18
- namespace
17
+ namespace
19
18
  {
20
19
 
21
20
  const char* traceCategory = "Admin.Properties";
@@ -49,11 +48,11 @@ PropertiesAdminI::setProperties_async(const AMD_PropertiesAdmin_setPropertiesPtr
49
48
  const Current&)
50
49
  {
51
50
  Lock sync(*this);
52
-
51
+
53
52
  PropertyDict old = _properties->getPropertiesForPrefix("");
54
53
  PropertyDict::const_iterator p;
55
54
  const int traceLevel = _properties->getPropertyAsInt("Ice.Trace.Admin.Properties");
56
-
55
+
57
56
  //
58
57
  // Compute the difference between the new property set and the existing property set:
59
58
  //
@@ -99,13 +98,13 @@ PropertiesAdminI::setProperties_async(const AMD_PropertiesAdmin_setPropertiesPtr
99
98
  }
100
99
  }
101
100
  }
102
-
101
+
103
102
  if(traceLevel > 0 && (!added.empty() || !changed.empty() || !removed.empty()))
104
103
  {
105
104
  Trace out(_logger, traceCategory);
106
-
105
+
107
106
  out << "Summary of property changes";
108
-
107
+
109
108
  if(!added.empty())
110
109
  {
111
110
  out << "\nNew properties:";
@@ -7,7 +7,7 @@
7
7
  //
8
8
  // **********************************************************************
9
9
  //
10
- // Ice version 3.6.0
10
+ // Ice version 3.6.1
11
11
  //
12
12
  // <auto-generated>
13
13
  //
@@ -34,7 +34,7 @@
34
34
  # if ICE_INT_VERSION % 100 > 50
35
35
  # error Beta header file detected
36
36
  # endif
37
- # if ICE_INT_VERSION % 100 < 0
37
+ # if ICE_INT_VERSION % 100 < 1
38
38
  # error Ice patch level mismatch!
39
39
  # endif
40
40
  #endif
@@ -8,7 +8,6 @@
8
8
  // **********************************************************************
9
9
 
10
10
  #include <Ice/PropertiesI.h>
11
- #include <IceUtil/DisableWarnings.h>
12
11
  #include <IceUtil/StringUtil.h>
13
12
  #include <IceUtil/FileUtil.h>
14
13
  #include <Ice/Initialize.h>
@@ -66,7 +65,7 @@ Int
66
65
  Ice::PropertiesI::getPropertyAsIntWithDefault(const string& key, Int value)
67
66
  {
68
67
  IceUtil::Mutex::Lock sync(*this);
69
-
68
+
70
69
  map<string, PropertyValue>::iterator p = _properties.find(key);
71
70
  if(p != _properties.end())
72
71
  {
@@ -94,7 +93,7 @@ Ice::StringSeq
94
93
  Ice::PropertiesI::getPropertyAsListWithDefault(const string& key, const StringSeq& value)
95
94
  {
96
95
  IceUtil::Mutex::Lock sync(*this);
97
-
96
+
98
97
  map<string, PropertyValue>::iterator p = _properties.find(key);
99
98
  if(p != _properties.end())
100
99
  {
@@ -160,7 +159,7 @@ Ice::PropertiesI::setProperty(const string& key, const string& value)
160
159
  for(int i = 0 ; IceInternal::PropertyNames::validProps[i].properties != 0; ++i)
161
160
  {
162
161
  string pattern(IceInternal::PropertyNames::validProps[i].properties[0].pattern);
163
-
162
+
164
163
  dotPos = pattern.find('.');
165
164
 
166
165
  //
@@ -169,7 +168,7 @@ Ice::PropertiesI::setProperty(const string& key, const string& value)
169
168
  // dot is an error.
170
169
  //
171
170
  assert(dotPos != string::npos);
172
-
171
+
173
172
  bool mismatchCase = false;
174
173
  string otherKey;
175
174
  string propPrefix = pattern.substr(0, dotPos);
@@ -193,8 +192,8 @@ Ice::PropertiesI::setProperty(const string& key, const string& value)
193
192
  currentKey = prop.deprecatedBy;
194
193
  }
195
194
  }
196
-
197
- if(!found && IceUtilInternal::match(IceUtilInternal::toUpper(currentKey),
195
+
196
+ if(!found && IceUtilInternal::match(IceUtilInternal::toUpper(currentKey),
198
197
  IceUtilInternal::toUpper(prop.pattern)))
199
198
  {
200
199
  found = true;
@@ -258,19 +257,19 @@ Ice::PropertiesI::parseCommandLineOptions(const string& prefix, const StringSeq&
258
257
  pfx += '.';
259
258
  }
260
259
  pfx = "--" + pfx;
261
-
260
+
262
261
  StringSeq result;
263
262
  for(StringSeq::size_type i = 0; i < options.size(); i++)
264
263
  {
265
264
  string opt = options[i];
266
-
265
+
267
266
  if(opt.find(pfx) == 0)
268
267
  {
269
268
  if(opt.find('=') == string::npos)
270
269
  {
271
270
  opt += "=1";
272
271
  }
273
-
272
+
274
273
  parseLine(opt.substr(2), 0);
275
274
  }
276
275
  else
@@ -317,7 +316,7 @@ Ice::PropertiesI::load(const std::string& file)
317
316
  DWORD numValues;
318
317
  try
319
318
  {
320
- err = RegQueryInfoKey(iceKey, NULL, NULL, NULL, NULL, NULL, NULL, &numValues, &maxNameSize, &maxDataSize,
319
+ err = RegQueryInfoKey(iceKey, NULL, NULL, NULL, NULL, NULL, NULL, &numValues, &maxNameSize, &maxDataSize,
321
320
  NULL, NULL);
322
321
  if(err != ERROR_SUCCESS)
323
322
  {
@@ -417,10 +416,10 @@ Ice::PropertiesI::load(const std::string& file)
417
416
  //
418
417
  if(firstLine)
419
418
  {
420
- const unsigned char UTF8_BOM[3] = {0xEF, 0xBB, 0xBF};
419
+ const unsigned char UTF8_BOM[3] = {0xEF, 0xBB, 0xBF};
421
420
  if(line.size() >= 3 &&
422
421
  static_cast<const unsigned char>(line[0]) == UTF8_BOM[0] &&
423
- static_cast<const unsigned char>(line[1]) == UTF8_BOM[1] &&
422
+ static_cast<const unsigned char>(line[1]) == UTF8_BOM[1] &&
424
423
  static_cast<const unsigned char>(line[2]) == UTF8_BOM[2])
425
424
  {
426
425
  line = line.substr(3);
@@ -541,7 +540,7 @@ Ice::PropertiesI::parseLine(const string& line, const IceUtil::StringConverterPt
541
540
  {
542
541
  string key;
543
542
  string value;
544
-
543
+
545
544
  enum ParseState { Key , Value };
546
545
  ParseState state = Key;
547
546
 
@@ -568,7 +567,7 @@ Ice::PropertiesI::parseLine(const string& line, const IceUtil::StringConverterPt
568
567
  case '=':
569
568
  key += whitespace;
570
569
  whitespace.clear();
571
- key += c;
570
+ key += c;
572
571
  break;
573
572
 
574
573
  case ' ':
@@ -611,7 +610,7 @@ Ice::PropertiesI::parseLine(const string& line, const IceUtil::StringConverterPt
611
610
  case '#':
612
611
  finished = true;
613
612
  break;
614
-
613
+
615
614
  default:
616
615
  key += whitespace;
617
616
  whitespace.clear();
@@ -637,7 +636,7 @@ Ice::PropertiesI::parseLine(const string& line, const IceUtil::StringConverterPt
637
636
  value += value.length() == 0 ? escapedspace : whitespace;
638
637
  whitespace.clear();
639
638
  escapedspace.clear();
640
- value += c;
639
+ value += c;
641
640
  break;
642
641
 
643
642
  case ' ':
@@ -674,7 +673,7 @@ Ice::PropertiesI::parseLine(const string& line, const IceUtil::StringConverterPt
674
673
  case '#':
675
674
  finished = true;
676
675
  break;
677
-
676
+
678
677
  default:
679
678
  value += value.length() == 0 ? escapedspace : whitespace;
680
679
  whitespace.clear();
@@ -1669,7 +1669,7 @@ IceInternal::RoutableReference::getConnectionNoRouterInfo(const GetConnectionCal
1669
1669
  if(_locatorInfo)
1670
1670
  {
1671
1671
  RoutableReference* self = const_cast<RoutableReference*>(this);
1672
- _locatorInfo->getEndpoints(self, _locatorCacheTimeout, new Callback(self, callback));
1672
+ _locatorInfo->getEndpointsWithCallback(self, _locatorCacheTimeout, new Callback(self, callback));
1673
1673
  }
1674
1674
  else
1675
1675
  {
@@ -7,7 +7,7 @@
7
7
  //
8
8
  // **********************************************************************
9
9
 
10
- #include <Ice/RegisterPlugins.h>
10
+ #include <Ice/RegisterPluginsInit.h>
11
11
  #include <Ice/CommunicatorF.h>
12
12
  #include <Ice/Initialize.h>
13
13
 
@@ -7,8 +7,8 @@
7
7
  //
8
8
  // **********************************************************************
9
9
 
10
- #ifndef ICE_REGISTER_PLUGINS_H
11
- #define ICE_REGISTER_PLUGINS_H
10
+ #ifndef ICE_REGISTER_PLUGINS_INIT_H
11
+ #define ICE_REGISTER_PLUGINS_INIT_H
12
12
 
13
13
  namespace IceInternal
14
14
  {
@@ -7,7 +7,7 @@
7
7
  //
8
8
  // **********************************************************************
9
9
  //
10
- // Ice version 3.6.0
10
+ // Ice version 3.6.1
11
11
  //
12
12
  // <auto-generated>
13
13
  //
@@ -38,7 +38,7 @@
38
38
  # if ICE_INT_VERSION % 100 > 50
39
39
  # error Beta header file detected
40
40
  # endif
41
- # if ICE_INT_VERSION % 100 < 0
41
+ # if ICE_INT_VERSION % 100 < 1
42
42
  # error Ice patch level mismatch!
43
43
  # endif
44
44
  #endif
@@ -7,7 +7,7 @@
7
7
  //
8
8
  // **********************************************************************
9
9
  //
10
- // Ice version 3.6.0
10
+ // Ice version 3.6.1
11
11
  //
12
12
  // <auto-generated>
13
13
  //
@@ -38,7 +38,7 @@
38
38
  # if ICE_INT_VERSION % 100 > 50
39
39
  # error Beta header file detected
40
40
  # endif
41
- # if ICE_INT_VERSION % 100 < 0
41
+ # if ICE_INT_VERSION % 100 < 1
42
42
  # error Ice patch level mismatch!
43
43
  # endif
44
44
  #endif
@@ -7,7 +7,7 @@
7
7
  //
8
8
  // **********************************************************************
9
9
  //
10
- // Ice version 3.6.0
10
+ // Ice version 3.6.1
11
11
  //
12
12
  // <auto-generated>
13
13
  //
@@ -34,7 +34,7 @@
34
34
  # if ICE_INT_VERSION % 100 > 50
35
35
  # error Beta header file detected
36
36
  # endif
37
- # if ICE_INT_VERSION % 100 < 0
37
+ # if ICE_INT_VERSION % 100 < 1
38
38
  # error Ice patch level mismatch!
39
39
  # endif
40
40
  #endif
@@ -40,11 +40,16 @@ Selector::destroy()
40
40
  void
41
41
  Selector::initialize(IceInternal::EventHandler* handler)
42
42
  {
43
+ EventHandlerPtr h = handler;
43
44
  handler->__incRef();
44
45
  handler->getNativeInfo()->setCompletedHandler(
45
- ref new SocketOperationCompletedHandler([=](int operation)
46
+ ref new SocketOperationCompletedHandler([=](int operation)
46
47
  {
47
- completed(handler, static_cast<SocketOperation>(operation));
48
+ //
49
+ // Use the reference counted handler to ensure it's not
50
+ // destroyed as long as the callback lambda exists.
51
+ //
52
+ completed(h, static_cast<SocketOperation>(operation));
48
53
  }));
49
54
  }
50
55
 
@@ -56,12 +61,12 @@ Selector::update(IceInternal::EventHandler* handler, SocketOperation remove, Soc
56
61
  if(add & SocketOperationRead && !(handler->_pending & SocketOperationRead))
57
62
  {
58
63
  handler->_pending = static_cast<SocketOperation>(handler->_pending | SocketOperationRead);
59
- completed(handler, SocketOperationRead); // Start an asynchrnous read
64
+ completed(handler, SocketOperationRead); // Start an asynchrnous read
60
65
  }
61
66
  else if(add & SocketOperationWrite && !(handler->_pending & SocketOperationWrite))
62
67
  {
63
68
  handler->_pending = static_cast<SocketOperation>(handler->_pending | SocketOperationWrite);
64
- completed(handler, SocketOperationWrite); // Start an asynchrnous write
69
+ completed(handler, SocketOperationWrite); // Start an asynchrnous write
65
70
  }
66
71
  }
67
72
 
@@ -69,10 +74,11 @@ void
69
74
  Selector::finish(IceInternal::EventHandler* handler)
70
75
  {
71
76
  handler->_registered = SocketOperationNone;
77
+ handler->_finish = false; // Ensures that finished() is only called once on the event handler.
72
78
  handler->__decRef();
73
79
  }
74
80
 
75
- IceInternal::EventHandler*
81
+ IceInternal::EventHandlerPtr
76
82
  Selector::getNextHandler(SocketOperation& status, int timeout)
77
83
  {
78
84
  Lock lock(*this);
@@ -83,7 +89,7 @@ Selector::getNextHandler(SocketOperation& status, int timeout)
83
89
  timedWait(IceUtil::Time::seconds(timeout));
84
90
  if(_events.empty())
85
91
  {
86
- throw SelectorTimeoutException();
92
+ throw SelectorTimeoutException();
87
93
  }
88
94
  }
89
95
  else
@@ -92,15 +98,15 @@ Selector::getNextHandler(SocketOperation& status, int timeout)
92
98
  }
93
99
  }
94
100
  assert(!_events.empty());
95
- IceInternal::EventHandler* handler = _events.front().handler;
101
+ IceInternal::EventHandlerPtr handler = _events.front().handler;
96
102
  const SelectEvent& event = _events.front();
97
103
  status = event.status;
98
104
  _events.pop_front();
99
105
  return handler;
100
106
  }
101
107
 
102
- void
103
- Selector::completed(IceInternal::EventHandler* handler, SocketOperation op)
108
+ void
109
+ Selector::completed(const IceInternal::EventHandlerPtr& handler, SocketOperation op)
104
110
  {
105
111
  Lock lock(*this);
106
112
  _events.push_back(SelectEvent(handler, op));
@@ -316,7 +322,7 @@ Selector::update(EventHandler* handler, SocketOperation remove, SocketOperation
316
322
  if(remove & SocketOperationRead)
317
323
  {
318
324
  struct kevent ev;
319
- EV_SET(&ev, fd, EVFILT_READ, EV_DELETE, 0, 0, handler);
325
+ EV_SET(&ev, fd, EVFILT_READ, EV_DELETE, 0, 0, handler);
320
326
  _changes.push_back(ev);
321
327
  }
322
328
  if(remove & SocketOperationWrite)
@@ -328,14 +334,14 @@ Selector::update(EventHandler* handler, SocketOperation remove, SocketOperation
328
334
  if(add & SocketOperationRead)
329
335
  {
330
336
  struct kevent ev;
331
- EV_SET(&ev, fd, EVFILT_READ, EV_ADD | (handler->_disabled & SocketOperationRead ? EV_DISABLE : 0), 0, 0,
337
+ EV_SET(&ev, fd, EVFILT_READ, EV_ADD | (handler->_disabled & SocketOperationRead ? EV_DISABLE : 0), 0, 0,
332
338
  handler);
333
339
  _changes.push_back(ev);
334
340
  }
335
341
  if(add & SocketOperationWrite)
336
342
  {
337
343
  struct kevent ev;
338
- EV_SET(&ev, fd, EVFILT_WRITE, EV_ADD | (handler->_disabled & SocketOperationWrite ? EV_DISABLE : 0), 0, 0,
344
+ EV_SET(&ev, fd, EVFILT_WRITE, EV_ADD | (handler->_disabled & SocketOperationWrite ? EV_DISABLE : 0), 0, 0,
339
345
  handler);
340
346
  _changes.push_back(ev);
341
347
  }
@@ -391,7 +397,7 @@ Selector::disable(EventHandler* handler, SocketOperation status)
391
397
  return;
392
398
  }
393
399
  handler->_disabled = static_cast<SocketOperation>(handler->_disabled | status);
394
-
400
+
395
401
  if(handler->_registered & status)
396
402
  {
397
403
  SOCKET fd = handler->getNativeInfo()->fd();
@@ -431,7 +437,7 @@ Selector::finish(EventHandler* handler, bool closeNow)
431
437
  {
432
438
  //
433
439
  // Update selector now to remove the FD from the kqueue if
434
- // we're going to close it now. This isn't necessary for
440
+ // we're going to close it now. This isn't necessary for
435
441
  // epoll since we always update the epoll FD immediately.
436
442
  //
437
443
  updateSelector();
@@ -441,7 +447,7 @@ Selector::finish(EventHandler* handler, bool closeNow)
441
447
  }
442
448
 
443
449
  #if defined(ICE_USE_KQUEUE)
444
- void
450
+ void
445
451
  Selector::updateSelector()
446
452
  {
447
453
  int rs = kevent(_queueFd, &_changes[0], _changes.size(), 0, 0, 0);
@@ -454,7 +460,7 @@ Selector::updateSelector()
454
460
  }
455
461
  #endif
456
462
 
457
- void
463
+ void
458
464
  Selector::select(vector<pair<EventHandler*, SocketOperation> >& handlers, int timeout)
459
465
  {
460
466
  int ret = 0;
@@ -505,9 +511,9 @@ Selector::select(vector<pair<EventHandler*, SocketOperation> >& handlers, int ti
505
511
  #if defined(ICE_USE_EPOLL)
506
512
  struct epoll_event& ev = _events[i];
507
513
  p.first = reinterpret_cast<EventHandler*>(ev.data.ptr);
508
- p.second = static_cast<SocketOperation>(((ev.events & (EPOLLIN | EPOLLERR)) ?
509
- SocketOperationRead : SocketOperationNone) |
510
- ((ev.events & (EPOLLOUT | EPOLLERR)) ?
514
+ p.second = static_cast<SocketOperation>(((ev.events & (EPOLLIN | EPOLLERR)) ?
515
+ SocketOperationRead : SocketOperationNone) |
516
+ ((ev.events & (EPOLLOUT | EPOLLERR)) ?
511
517
  SocketOperationWrite : SocketOperationNone));
512
518
  #else
513
519
  struct kevent& ev = _events[i];
@@ -546,7 +552,7 @@ void eventHandlerSocketCallback(CFSocketRef, CFSocketCallBackType callbackType,
546
552
  }
547
553
  else if(callbackType == kCFSocketConnectCallBack)
548
554
  {
549
- reinterpret_cast<EventHandlerWrapper*>(info)->readyCallback(SocketOperationConnect,
555
+ reinterpret_cast<EventHandlerWrapper*>(info)->readyCallback(SocketOperationConnect,
550
556
  d ? *reinterpret_cast<const SInt32*>(d) : 0);
551
557
  }
552
558
  }
@@ -558,7 +564,7 @@ public:
558
564
  SelectorHelperThread(Selector& selector) : _selector(selector)
559
565
  {
560
566
  }
561
-
567
+
562
568
  virtual void run()
563
569
  {
564
570
  _selector.run();
@@ -590,8 +596,8 @@ toCFCallbacks(SocketOperation op)
590
596
 
591
597
  }
592
598
 
593
- EventHandlerWrapper::EventHandlerWrapper(const EventHandlerPtr& handler, Selector& selector) :
594
- _handler(handler),
599
+ EventHandlerWrapper::EventHandlerWrapper(const EventHandlerPtr& handler, Selector& selector) :
600
+ _handler(handler),
595
601
  _nativeInfo(StreamNativeInfoPtr::dynamicCast(handler->getNativeInfo())),
596
602
  _selector(selector),
597
603
  _ready(SocketOperationNone),
@@ -601,14 +607,14 @@ EventHandlerWrapper::EventHandlerWrapper(const EventHandlerPtr& handler, Selecto
601
607
  {
602
608
  SOCKET fd = handler->getNativeInfo()->fd();
603
609
  CFSocketContext ctx = { 0, this, 0, 0, 0 };
604
- _socket = CFSocketCreateWithNative(kCFAllocatorDefault,
610
+ _socket = CFSocketCreateWithNative(kCFAllocatorDefault,
605
611
  fd,
606
- kCFSocketReadCallBack |
607
- kCFSocketWriteCallBack |
612
+ kCFSocketReadCallBack |
613
+ kCFSocketWriteCallBack |
608
614
  kCFSocketConnectCallBack,
609
- eventHandlerSocketCallback,
615
+ eventHandlerSocketCallback,
610
616
  &ctx);
611
-
617
+
612
618
  // Disable automatic re-enabling of callbacks and closing of the native socket.
613
619
  CFSocketSetSocketFlags(_socket, 0);
614
620
  CFSocketDisableCallBacks(_socket, kCFSocketReadCallBack | kCFSocketWriteCallBack | kCFSocketConnectCallBack);
@@ -666,7 +672,7 @@ EventHandlerWrapper::updateRunLoop()
666
672
  {
667
673
  _nativeInfo->unregisterFromRunLoop(SocketOperationWrite, false);
668
674
  }
669
-
675
+
670
676
  if(!(op & (SocketOperationRead | SocketOperationConnect)) || _ready & SocketOperationRead)
671
677
  {
672
678
  _nativeInfo->unregisterFromRunLoop(SocketOperationRead, false);
@@ -698,7 +704,7 @@ EventHandlerWrapper::ready(SocketOperation op, int error)
698
704
  //
699
705
  // Unregister the stream from the runloop as soon as we got the callback. This is
700
706
  // required to allow thread pool thread to perform read/write operations on the
701
- // stream (which can't be used from another thread than the run loop thread if
707
+ // stream (which can't be used from another thread than the run loop thread if
702
708
  // it's registered with a run loop).
703
709
  //
704
710
  op = _nativeInfo->unregisterFromRunLoop(op, error != 0);
@@ -731,7 +737,7 @@ EventHandlerWrapper::checkReady()
731
737
  if(_ready & _handler->_registered)
732
738
  {
733
739
  _selector.addReadyHandler(this);
734
- }
740
+ }
735
741
  }
736
742
 
737
743
  SocketOperation
@@ -748,7 +754,7 @@ EventHandlerWrapper::update(SocketOperation remove, SocketOperation add)
748
754
  {
749
755
  SocketOperation previous = _handler->_registered;
750
756
  _handler->_registered = static_cast<SocketOperation>(_handler->_registered & ~remove);
751
- _handler->_registered = static_cast<SocketOperation>(_handler->_registered | add);
757
+ _handler->_registered = static_cast<SocketOperation>(_handler->_registered | add);
752
758
  if(previous == _handler->_registered)
753
759
  {
754
760
  return false;
@@ -804,7 +810,7 @@ Selector::destroy()
804
810
  {
805
811
  CFRunLoopSourceSignal(_source);
806
812
  CFRunLoopWakeUp(_runLoop);
807
-
813
+
808
814
  wait();
809
815
  }
810
816
 
@@ -825,7 +831,7 @@ Selector::initialize(EventHandler* handler)
825
831
  _wrappers[handler] = new EventHandlerWrapper(handler, *this);
826
832
  }
827
833
 
828
- void
834
+ void
829
835
  Selector::update(EventHandler* handler, SocketOperation remove, SocketOperation add)
830
836
  {
831
837
  Lock sync(*this);
@@ -838,7 +844,7 @@ Selector::update(EventHandler* handler, SocketOperation remove, SocketOperation
838
844
  }
839
845
  }
840
846
 
841
- void
847
+ void
842
848
  Selector::enable(EventHandler* handler, SocketOperation op)
843
849
  {
844
850
  Lock sync(*this);
@@ -878,7 +884,7 @@ Selector::finish(EventHandler* handler, bool closeNow)
878
884
  notify();
879
885
  return closeNow;
880
886
  }
881
-
887
+
882
888
  void
883
889
  Selector::select(std::vector<std::pair<EventHandler*, SocketOperation> >& handlers, int timeout)
884
890
  {
@@ -902,7 +908,7 @@ Selector::select(std::vector<std::pair<EventHandler*, SocketOperation> >& handle
902
908
 
903
909
  //
904
910
  // Wait for handlers to be ready.
905
- //
911
+ //
906
912
  handlers.clear();
907
913
  while(_selectedHandlers.empty())
908
914
  {
@@ -910,7 +916,7 @@ Selector::select(std::vector<std::pair<EventHandler*, SocketOperation> >& handle
910
916
  {
911
917
  CFRunLoopSourceSignal(_source);
912
918
  CFRunLoopWakeUp(_runLoop);
913
-
919
+
914
920
  wait();
915
921
  }
916
922
 
@@ -966,7 +972,7 @@ Selector::processInterrupt()
966
972
  }
967
973
  }
968
974
 
969
- void
975
+ void
970
976
  Selector::ready(EventHandlerWrapper* wrapper, SocketOperation op, int error)
971
977
  {
972
978
  Lock sync(*this);
@@ -984,7 +990,7 @@ Selector::addReadyHandler(EventHandlerWrapper* wrapper)
984
990
  }
985
991
  }
986
992
 
987
- void
993
+ void
988
994
  Selector::run()
989
995
  {
990
996
  {
@@ -1087,7 +1093,7 @@ Selector::disable(EventHandler* handler, SocketOperation status)
1087
1093
  return;
1088
1094
  }
1089
1095
  handler->_disabled = static_cast<SocketOperation>(handler->_disabled | status);
1090
-
1096
+
1091
1097
  if(handler->_registered & status)
1092
1098
  {
1093
1099
  updateImpl(handler);
@@ -1125,7 +1131,7 @@ Selector::startSelect()
1125
1131
  {
1126
1132
  continue;
1127
1133
  }
1128
-
1134
+
1129
1135
  Ice::SocketException ex(__FILE__, __LINE__);
1130
1136
  ex.error = IceInternal::getSocketErrno();
1131
1137
  throw ex;
@@ -1148,7 +1154,7 @@ Selector::finishSelect()
1148
1154
  _selecting = false;
1149
1155
  }
1150
1156
 
1151
- void
1157
+ void
1152
1158
  Selector::select(vector<pair<EventHandler*, SocketOperation> >& handlers, int timeout)
1153
1159
  {
1154
1160
  int ret = 0;
@@ -1230,7 +1236,7 @@ Selector::select(vector<pair<EventHandler*, SocketOperation> >& handlers, int ti
1230
1236
  }
1231
1237
 
1232
1238
  if(fd == _fdIntrRead) // Interrupted, we have to process the interrupt before returning any handlers
1233
- {
1239
+ {
1234
1240
  handlers.clear();
1235
1241
  return;
1236
1242
  }
@@ -1292,7 +1298,7 @@ Selector::updateImpl(EventHandler* handler)
1292
1298
  {
1293
1299
  continue;
1294
1300
  }
1295
-
1301
+
1296
1302
  Ice::SocketException ex(__FILE__, __LINE__);
1297
1303
  ex.error = IceInternal::getSocketErrno();
1298
1304
  throw ex;