summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid
diff options
context:
space:
mode:
authorJoe George <joe@zeroc.com>2017-02-13 18:48:57 -0500
committerJoe George <joe@zeroc.com>2017-02-13 18:48:57 -0500
commitdc5678e6988bad79336033518f8f2378f7c34cb2 (patch)
treef1b7d00d8bfde31297c4473d62ace3d05031b985 /cpp/src/IceGrid
parentConnection wizard dialog becomes readonly (diff)
parentICE-7506 - Update copyright to 2017 (diff)
downloadice-dc5678e6988bad79336033518f8f2378f7c34cb2.tar.bz2
ice-dc5678e6988bad79336033518f8f2378f7c34cb2.tar.xz
ice-dc5678e6988bad79336033518f8f2378f7c34cb2.zip
Merge remote-tracking branch 'origin/3.6'
Diffstat (limited to 'cpp/src/IceGrid')
-rw-r--r--cpp/src/IceGrid/Activator.cpp2
-rw-r--r--cpp/src/IceGrid/Activator.h2
-rw-r--r--cpp/src/IceGrid/AdapterCache.cpp2
-rw-r--r--cpp/src/IceGrid/AdapterCache.h2
-rw-r--r--cpp/src/IceGrid/AdminCallbackRouter.cpp2
-rw-r--r--cpp/src/IceGrid/AdminCallbackRouter.h2
-rw-r--r--cpp/src/IceGrid/AdminI.cpp2
-rw-r--r--cpp/src/IceGrid/AdminI.h2
-rw-r--r--cpp/src/IceGrid/AdminRouter.cpp2
-rw-r--r--cpp/src/IceGrid/AdminRouter.h2
-rw-r--r--cpp/src/IceGrid/AdminSessionI.cpp2
-rw-r--r--cpp/src/IceGrid/AdminSessionI.h2
-rw-r--r--cpp/src/IceGrid/Allocatable.cpp2
-rw-r--r--cpp/src/IceGrid/Allocatable.h2
-rw-r--r--cpp/src/IceGrid/AllocatableObjectCache.cpp2
-rw-r--r--cpp/src/IceGrid/AllocatableObjectCache.h2
-rw-r--r--cpp/src/IceGrid/Cache.h2
-rw-r--r--cpp/src/IceGrid/Client.cpp2
-rw-r--r--cpp/src/IceGrid/Database.cpp2
-rw-r--r--cpp/src/IceGrid/Database.h2
-rw-r--r--cpp/src/IceGrid/DescriptorBuilder.cpp2
-rw-r--r--cpp/src/IceGrid/DescriptorBuilder.h2
-rw-r--r--cpp/src/IceGrid/DescriptorHelper.cpp2
-rw-r--r--cpp/src/IceGrid/DescriptorHelper.h2
-rw-r--r--cpp/src/IceGrid/DescriptorParser.cpp2
-rw-r--r--cpp/src/IceGrid/DescriptorParser.h2
-rw-r--r--cpp/src/IceGrid/FileCache.cpp2
-rw-r--r--cpp/src/IceGrid/FileCache.h2
-rw-r--r--cpp/src/IceGrid/FileParserI.cpp2
-rw-r--r--cpp/src/IceGrid/FileParserI.h2
-rw-r--r--cpp/src/IceGrid/FileUserAccountMapperI.cpp2
-rw-r--r--cpp/src/IceGrid/FileUserAccountMapperI.h2
-rw-r--r--cpp/src/IceGrid/Grammar.cpp2
-rw-r--r--cpp/src/IceGrid/Grammar.y2
-rw-r--r--cpp/src/IceGrid/IceGridNode.cpp2
-rw-r--r--cpp/src/IceGrid/IceGridRegistry.cpp2
-rw-r--r--cpp/src/IceGrid/Internal.ice2
-rw-r--r--cpp/src/IceGrid/InternalRegistryI.cpp2
-rw-r--r--cpp/src/IceGrid/InternalRegistryI.h2
-rw-r--r--cpp/src/IceGrid/LocatorI.cpp2
-rw-r--r--cpp/src/IceGrid/LocatorI.h2
-rw-r--r--cpp/src/IceGrid/LocatorRegistryI.cpp2
-rw-r--r--cpp/src/IceGrid/LocatorRegistryI.h2
-rw-r--r--cpp/src/IceGrid/NodeAdminRouter.cpp2
-rw-r--r--cpp/src/IceGrid/NodeAdminRouter.h2
-rw-r--r--cpp/src/IceGrid/NodeCache.cpp2
-rw-r--r--cpp/src/IceGrid/NodeCache.h2
-rw-r--r--cpp/src/IceGrid/NodeI.cpp2
-rw-r--r--cpp/src/IceGrid/NodeI.h2
-rw-r--r--cpp/src/IceGrid/NodeSessionI.cpp2
-rw-r--r--cpp/src/IceGrid/NodeSessionI.h2
-rw-r--r--cpp/src/IceGrid/NodeSessionManager.cpp2
-rw-r--r--cpp/src/IceGrid/NodeSessionManager.h2
-rw-r--r--cpp/src/IceGrid/ObjectCache.cpp2
-rw-r--r--cpp/src/IceGrid/ObjectCache.h2
-rw-r--r--cpp/src/IceGrid/Parser.cpp2964
-rw-r--r--cpp/src/IceGrid/Parser.h2
-rw-r--r--cpp/src/IceGrid/PlatformInfo.cpp2
-rw-r--r--cpp/src/IceGrid/PlatformInfo.h2
-rw-r--r--cpp/src/IceGrid/PluginFacadeI.cpp2
-rw-r--r--cpp/src/IceGrid/PluginFacadeI.h2
-rw-r--r--cpp/src/IceGrid/QueryI.cpp2
-rw-r--r--cpp/src/IceGrid/QueryI.h2
-rw-r--r--cpp/src/IceGrid/ReapThread.cpp2
-rw-r--r--cpp/src/IceGrid/ReapThread.h2
-rw-r--r--cpp/src/IceGrid/RegistryAdminRouter.cpp2
-rw-r--r--cpp/src/IceGrid/RegistryAdminRouter.h2
-rw-r--r--cpp/src/IceGrid/RegistryI.cpp2
-rw-r--r--cpp/src/IceGrid/RegistryI.h2
-rw-r--r--cpp/src/IceGrid/ReplicaCache.cpp2
-rw-r--r--cpp/src/IceGrid/ReplicaCache.h2
-rw-r--r--cpp/src/IceGrid/ReplicaSessionI.cpp2
-rw-r--r--cpp/src/IceGrid/ReplicaSessionI.h2
-rw-r--r--cpp/src/IceGrid/ReplicaSessionManager.cpp2
-rw-r--r--cpp/src/IceGrid/ReplicaSessionManager.h2
-rw-r--r--cpp/src/IceGrid/Scanner.cpp2
-rw-r--r--cpp/src/IceGrid/Scanner.l2
-rw-r--r--cpp/src/IceGrid/ServerAdapterI.cpp2
-rw-r--r--cpp/src/IceGrid/ServerAdapterI.h2
-rw-r--r--cpp/src/IceGrid/ServerCache.cpp2
-rw-r--r--cpp/src/IceGrid/ServerCache.h2
-rw-r--r--cpp/src/IceGrid/ServerI.cpp2
-rw-r--r--cpp/src/IceGrid/ServerI.h2
-rw-r--r--cpp/src/IceGrid/SessionI.cpp2
-rw-r--r--cpp/src/IceGrid/SessionI.h2
-rw-r--r--cpp/src/IceGrid/SessionManager.cpp2
-rw-r--r--cpp/src/IceGrid/SessionManager.h2
-rw-r--r--cpp/src/IceGrid/SessionServantManager.cpp2
-rw-r--r--cpp/src/IceGrid/SessionServantManager.h2
-rw-r--r--cpp/src/IceGrid/Topics.cpp2
-rw-r--r--cpp/src/IceGrid/Topics.h2
-rw-r--r--cpp/src/IceGrid/TraceLevels.cpp2
-rw-r--r--cpp/src/IceGrid/TraceLevels.h2
-rw-r--r--cpp/src/IceGrid/Util.cpp2
-rw-r--r--cpp/src/IceGrid/Util.h2
-rw-r--r--cpp/src/IceGrid/WaitQueue.cpp2
-rw-r--r--cpp/src/IceGrid/WaitQueue.h2
-rw-r--r--cpp/src/IceGrid/WellKnownObjectsManager.cpp2
-rw-r--r--cpp/src/IceGrid/WellKnownObjectsManager.h2
99 files changed, 98 insertions, 3062 deletions
diff --git a/cpp/src/IceGrid/Activator.cpp b/cpp/src/IceGrid/Activator.cpp
index adc9dce5070..6dea80ccc53 100644
--- a/cpp/src/IceGrid/Activator.cpp
+++ b/cpp/src/IceGrid/Activator.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Activator.h b/cpp/src/IceGrid/Activator.h
index bf5a683490e..018eb44d794 100644
--- a/cpp/src/IceGrid/Activator.h
+++ b/cpp/src/IceGrid/Activator.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/AdapterCache.cpp b/cpp/src/IceGrid/AdapterCache.cpp
index e9fd5d85e2b..e543c59e3e5 100644
--- a/cpp/src/IceGrid/AdapterCache.cpp
+++ b/cpp/src/IceGrid/AdapterCache.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/AdapterCache.h b/cpp/src/IceGrid/AdapterCache.h
index d83c18acd83..b81ed473d0c 100644
--- a/cpp/src/IceGrid/AdapterCache.h
+++ b/cpp/src/IceGrid/AdapterCache.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/AdminCallbackRouter.cpp b/cpp/src/IceGrid/AdminCallbackRouter.cpp
index 821658ed07f..33e5bae02e8 100644
--- a/cpp/src/IceGrid/AdminCallbackRouter.cpp
+++ b/cpp/src/IceGrid/AdminCallbackRouter.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/AdminCallbackRouter.h b/cpp/src/IceGrid/AdminCallbackRouter.h
index aa91e988baa..c8619352974 100644
--- a/cpp/src/IceGrid/AdminCallbackRouter.h
+++ b/cpp/src/IceGrid/AdminCallbackRouter.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/AdminI.cpp b/cpp/src/IceGrid/AdminI.cpp
index 21e190250e5..228f238efee 100644
--- a/cpp/src/IceGrid/AdminI.cpp
+++ b/cpp/src/IceGrid/AdminI.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/AdminI.h b/cpp/src/IceGrid/AdminI.h
index c644edb7e5b..45fe6cf6d17 100644
--- a/cpp/src/IceGrid/AdminI.h
+++ b/cpp/src/IceGrid/AdminI.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/AdminRouter.cpp b/cpp/src/IceGrid/AdminRouter.cpp
index 3808a4545e8..0af1609cfcd 100644
--- a/cpp/src/IceGrid/AdminRouter.cpp
+++ b/cpp/src/IceGrid/AdminRouter.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/AdminRouter.h b/cpp/src/IceGrid/AdminRouter.h
index d2b21cc2fdb..b6fb4ac2c35 100644
--- a/cpp/src/IceGrid/AdminRouter.h
+++ b/cpp/src/IceGrid/AdminRouter.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/AdminSessionI.cpp b/cpp/src/IceGrid/AdminSessionI.cpp
index 7cc46f74757..cba61e004ef 100644
--- a/cpp/src/IceGrid/AdminSessionI.cpp
+++ b/cpp/src/IceGrid/AdminSessionI.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/AdminSessionI.h b/cpp/src/IceGrid/AdminSessionI.h
index 5669503e148..b1928218aea 100644
--- a/cpp/src/IceGrid/AdminSessionI.h
+++ b/cpp/src/IceGrid/AdminSessionI.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Allocatable.cpp b/cpp/src/IceGrid/Allocatable.cpp
index 7ec293fc51a..a2979e1a883 100644
--- a/cpp/src/IceGrid/Allocatable.cpp
+++ b/cpp/src/IceGrid/Allocatable.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Allocatable.h b/cpp/src/IceGrid/Allocatable.h
index 2bf31a4447c..ae294ec7ade 100644
--- a/cpp/src/IceGrid/Allocatable.h
+++ b/cpp/src/IceGrid/Allocatable.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/AllocatableObjectCache.cpp b/cpp/src/IceGrid/AllocatableObjectCache.cpp
index 438add8b263..2a6e719b88b 100644
--- a/cpp/src/IceGrid/AllocatableObjectCache.cpp
+++ b/cpp/src/IceGrid/AllocatableObjectCache.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/AllocatableObjectCache.h b/cpp/src/IceGrid/AllocatableObjectCache.h
index 9f2db6f3121..51cd706a1fd 100644
--- a/cpp/src/IceGrid/AllocatableObjectCache.h
+++ b/cpp/src/IceGrid/AllocatableObjectCache.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Cache.h b/cpp/src/IceGrid/Cache.h
index cf822604c4a..661242c5c54 100644
--- a/cpp/src/IceGrid/Cache.h
+++ b/cpp/src/IceGrid/Cache.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Client.cpp b/cpp/src/IceGrid/Client.cpp
index f37bbf30ce5..35721f3cf74 100644
--- a/cpp/src/IceGrid/Client.cpp
+++ b/cpp/src/IceGrid/Client.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp
index e20d176cbe8..7d6c0da1c2f 100644
--- a/cpp/src/IceGrid/Database.cpp
+++ b/cpp/src/IceGrid/Database.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Database.h b/cpp/src/IceGrid/Database.h
index be7a89fae6c..18b3f55f160 100644
--- a/cpp/src/IceGrid/Database.h
+++ b/cpp/src/IceGrid/Database.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/DescriptorBuilder.cpp b/cpp/src/IceGrid/DescriptorBuilder.cpp
index 217cba7e7d6..e1d72475394 100644
--- a/cpp/src/IceGrid/DescriptorBuilder.cpp
+++ b/cpp/src/IceGrid/DescriptorBuilder.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/DescriptorBuilder.h b/cpp/src/IceGrid/DescriptorBuilder.h
index 3f2f427d69b..157eb9bcf72 100644
--- a/cpp/src/IceGrid/DescriptorBuilder.h
+++ b/cpp/src/IceGrid/DescriptorBuilder.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/DescriptorHelper.cpp b/cpp/src/IceGrid/DescriptorHelper.cpp
index 3eef14ff351..6dd1ba686fd 100644
--- a/cpp/src/IceGrid/DescriptorHelper.cpp
+++ b/cpp/src/IceGrid/DescriptorHelper.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/DescriptorHelper.h b/cpp/src/IceGrid/DescriptorHelper.h
index f8ff653e667..e39000da109 100644
--- a/cpp/src/IceGrid/DescriptorHelper.h
+++ b/cpp/src/IceGrid/DescriptorHelper.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/DescriptorParser.cpp b/cpp/src/IceGrid/DescriptorParser.cpp
index 8e8d96542d0..41f3de5254e 100644
--- a/cpp/src/IceGrid/DescriptorParser.cpp
+++ b/cpp/src/IceGrid/DescriptorParser.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/DescriptorParser.h b/cpp/src/IceGrid/DescriptorParser.h
index 80b8983fc95..648ec1363b5 100644
--- a/cpp/src/IceGrid/DescriptorParser.h
+++ b/cpp/src/IceGrid/DescriptorParser.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/FileCache.cpp b/cpp/src/IceGrid/FileCache.cpp
index ca98ef55c0a..1dea55994f1 100644
--- a/cpp/src/IceGrid/FileCache.cpp
+++ b/cpp/src/IceGrid/FileCache.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/FileCache.h b/cpp/src/IceGrid/FileCache.h
index 5db5237ab8e..94ed6398827 100644
--- a/cpp/src/IceGrid/FileCache.h
+++ b/cpp/src/IceGrid/FileCache.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/FileParserI.cpp b/cpp/src/IceGrid/FileParserI.cpp
index eb57e981441..36e8c40ffe7 100644
--- a/cpp/src/IceGrid/FileParserI.cpp
+++ b/cpp/src/IceGrid/FileParserI.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/FileParserI.h b/cpp/src/IceGrid/FileParserI.h
index 12d2ffe3f16..e7062688518 100644
--- a/cpp/src/IceGrid/FileParserI.h
+++ b/cpp/src/IceGrid/FileParserI.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/FileUserAccountMapperI.cpp b/cpp/src/IceGrid/FileUserAccountMapperI.cpp
index a52037562ba..cbd6b84a10e 100644
--- a/cpp/src/IceGrid/FileUserAccountMapperI.cpp
+++ b/cpp/src/IceGrid/FileUserAccountMapperI.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/FileUserAccountMapperI.h b/cpp/src/IceGrid/FileUserAccountMapperI.h
index a81571a2345..a342560c0c1 100644
--- a/cpp/src/IceGrid/FileUserAccountMapperI.h
+++ b/cpp/src/IceGrid/FileUserAccountMapperI.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Grammar.cpp b/cpp/src/IceGrid/Grammar.cpp
index a10ceeee3fc..01ea5aca0b2 100644
--- a/cpp/src/IceGrid/Grammar.cpp
+++ b/cpp/src/IceGrid/Grammar.cpp
@@ -159,7 +159,7 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Grammar.y b/cpp/src/IceGrid/Grammar.y
index 2ff576d9285..84911fe8a3d 100644
--- a/cpp/src/IceGrid/Grammar.y
+++ b/cpp/src/IceGrid/Grammar.y
@@ -2,7 +2,7 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/IceGridNode.cpp b/cpp/src/IceGrid/IceGridNode.cpp
index 789c3857332..ad6e132a260 100644
--- a/cpp/src/IceGrid/IceGridNode.cpp
+++ b/cpp/src/IceGrid/IceGridNode.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/IceGridRegistry.cpp b/cpp/src/IceGrid/IceGridRegistry.cpp
index 8d2a3659bd2..2cd4a8341b2 100644
--- a/cpp/src/IceGrid/IceGridRegistry.cpp
+++ b/cpp/src/IceGrid/IceGridRegistry.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Internal.ice b/cpp/src/IceGrid/Internal.ice
index 21282309477..5b17a72317f 100644
--- a/cpp/src/IceGrid/Internal.ice
+++ b/cpp/src/IceGrid/Internal.ice
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/InternalRegistryI.cpp b/cpp/src/IceGrid/InternalRegistryI.cpp
index c4551dba896..c97ad6ccffe 100644
--- a/cpp/src/IceGrid/InternalRegistryI.cpp
+++ b/cpp/src/IceGrid/InternalRegistryI.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/InternalRegistryI.h b/cpp/src/IceGrid/InternalRegistryI.h
index 3e7735c9b0e..139dbb3aba2 100644
--- a/cpp/src/IceGrid/InternalRegistryI.h
+++ b/cpp/src/IceGrid/InternalRegistryI.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/LocatorI.cpp b/cpp/src/IceGrid/LocatorI.cpp
index 575ebe71fd4..b680eaebcd7 100644
--- a/cpp/src/IceGrid/LocatorI.cpp
+++ b/cpp/src/IceGrid/LocatorI.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/LocatorI.h b/cpp/src/IceGrid/LocatorI.h
index ffea80fc37a..16bbead38bc 100644
--- a/cpp/src/IceGrid/LocatorI.h
+++ b/cpp/src/IceGrid/LocatorI.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/LocatorRegistryI.cpp b/cpp/src/IceGrid/LocatorRegistryI.cpp
index 7e5dd15eab7..11f4d077d6d 100644
--- a/cpp/src/IceGrid/LocatorRegistryI.cpp
+++ b/cpp/src/IceGrid/LocatorRegistryI.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/LocatorRegistryI.h b/cpp/src/IceGrid/LocatorRegistryI.h
index c6c4d87955a..f4f12f9d72d 100644
--- a/cpp/src/IceGrid/LocatorRegistryI.h
+++ b/cpp/src/IceGrid/LocatorRegistryI.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/NodeAdminRouter.cpp b/cpp/src/IceGrid/NodeAdminRouter.cpp
index 4d9ca4eebe2..5100c8c9880 100644
--- a/cpp/src/IceGrid/NodeAdminRouter.cpp
+++ b/cpp/src/IceGrid/NodeAdminRouter.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/NodeAdminRouter.h b/cpp/src/IceGrid/NodeAdminRouter.h
index 593b497a607..99059f2f530 100644
--- a/cpp/src/IceGrid/NodeAdminRouter.h
+++ b/cpp/src/IceGrid/NodeAdminRouter.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/NodeCache.cpp b/cpp/src/IceGrid/NodeCache.cpp
index 8757dc0fe2b..ce57c685ce5 100644
--- a/cpp/src/IceGrid/NodeCache.cpp
+++ b/cpp/src/IceGrid/NodeCache.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/NodeCache.h b/cpp/src/IceGrid/NodeCache.h
index 1346cdb3ee2..6e1c675cc77 100644
--- a/cpp/src/IceGrid/NodeCache.h
+++ b/cpp/src/IceGrid/NodeCache.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/NodeI.cpp b/cpp/src/IceGrid/NodeI.cpp
index 294e20f393d..661c4f38993 100644
--- a/cpp/src/IceGrid/NodeI.cpp
+++ b/cpp/src/IceGrid/NodeI.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/NodeI.h b/cpp/src/IceGrid/NodeI.h
index 829a8444c07..6e8706f8f7f 100644
--- a/cpp/src/IceGrid/NodeI.h
+++ b/cpp/src/IceGrid/NodeI.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/NodeSessionI.cpp b/cpp/src/IceGrid/NodeSessionI.cpp
index 01bbb7679c0..b23cffb4aac 100644
--- a/cpp/src/IceGrid/NodeSessionI.cpp
+++ b/cpp/src/IceGrid/NodeSessionI.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/NodeSessionI.h b/cpp/src/IceGrid/NodeSessionI.h
index 4cce4acac40..a180b09abf1 100644
--- a/cpp/src/IceGrid/NodeSessionI.h
+++ b/cpp/src/IceGrid/NodeSessionI.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/NodeSessionManager.cpp b/cpp/src/IceGrid/NodeSessionManager.cpp
index c29103ac0ce..abdb1ef0807 100644
--- a/cpp/src/IceGrid/NodeSessionManager.cpp
+++ b/cpp/src/IceGrid/NodeSessionManager.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/NodeSessionManager.h b/cpp/src/IceGrid/NodeSessionManager.h
index 49c000fd874..267f3377645 100644
--- a/cpp/src/IceGrid/NodeSessionManager.h
+++ b/cpp/src/IceGrid/NodeSessionManager.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/ObjectCache.cpp b/cpp/src/IceGrid/ObjectCache.cpp
index 8cd6aaedeb2..180289d28da 100644
--- a/cpp/src/IceGrid/ObjectCache.cpp
+++ b/cpp/src/IceGrid/ObjectCache.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/ObjectCache.h b/cpp/src/IceGrid/ObjectCache.h
index fbeb5aeb9f4..29dfa11c1da 100644
--- a/cpp/src/IceGrid/ObjectCache.h
+++ b/cpp/src/IceGrid/ObjectCache.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Parser.cpp b/cpp/src/IceGrid/Parser.cpp
deleted file mode 100644
index 3c45b2c44d6..00000000000
--- a/cpp/src/IceGrid/Parser.cpp
+++ /dev/null
@@ -1,2964 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
-//
-// This copy of Ice is licensed to you under the terms described in the
-// ICE_LICENSE file included in this distribution.
-//
-// **********************************************************************
-
-#include <IceUtil/DisableWarnings.h>
-#include <IceUtil/IceUtil.h>
-#include <IceUtil/Options.h>
-#include <Ice/Ice.h>
-#include <IceXML/Parser.h>
-#include <IceGrid/Parser.h>
-#include <IceGrid/Util.h>
-#include <IceGrid/DescriptorParser.h>
-#include <IceGrid/DescriptorHelper.h>
-#include <IceBox/IceBox.h>
-
-#ifdef HAVE_READLINE
-# include <readline/readline.h>
-# include <readline/history.h>
-#endif
-
-#include <iterator>
-#include <iomanip>
-
-extern FILE* yyin;
-extern int yydebug;
-
-using namespace std;
-using namespace IceUtil;
-using namespace IceUtilInternal;
-using namespace Ice;
-using namespace IceGrid;
-
-namespace
-{
-
-const char* _commandsHelp[][3] = {
-{ "application", "add",
-"application add [-n | --no-patch] DESC [TARGET ... ] [NAME=VALUE ... ]\n"
-" Add application described in DESC. If specified\n"
-" the optional targets TARGET will be deployed.\n"
-},
-{ "application", "remove",
-"application remove NAME Remove application NAME.\n"
-},
-{ "application", "describe",
-"application describe NAME Describe application NAME.\n"
-},
-{ "application", "diff",
-"application diff [-s | --servers] DESC [TARGET ... ] [NAME=VALUE ... ]\n"
-" Print the differences betwen the application\n"
-" described in DESC and the current deployment.\n"
-" If -s or --servers is specified, print the\n"
-" the list of servers affected by the differences.\n"
-},
-{ "application", "update",
-"application update [-n | --no-restart] DESC [TARGET ... ] [NAME=VALUE ... ]\n"
-" Update the application described in DESC. If -n or\n"
-" --no-restart is specified, the update will fail if\n"
-" it is necessary to stop some servers.\n"
-},
-{ "application", "patch",
-"application patch [-f | --force] NAME\n"
-" Patch the given application data. If -f or --force is\n"
-" specified, the servers depending on the data to patch\n"
-" will be stopped if necessary.\n"
-},
-{ "application", "list",
-"application list List all deployed applications.\n"
-},
-{ "server template", "instantiate",
-"server template instantiate APPLICATION NODE TEMPLATE [NAME=VALUE ...]\n"
-" Instantiate a server template.\n"
-},
-{ "server template", "describe",
-"server template describe APPLICATION TEMPLATE\n"
-" Describe application server template TEMPLATE.\n"
-},
-{ "service template", "describe",
-"service template describe APPLICATION TEMPLATE\n"
-" Describe application service template TEMPLATE.\n"
-},
-{ "node", "list",
-"node list List all registered nodes.\n"
-},
-{ "node", "describe",
-"node describe NAME Show information about node NAME.\n"
-},
-{ "node", "ping",
-"node ping NAME Ping node NAME.\n"
-},
-{ "node", "load",
-"node load NAME Print the load of the node NAME.\n"
-},
-{ "node", "sockets",
-"node sockets [NAME] Print the number of CPU sockets of the\n"
-" node NAME or all the nodes if NAME is omitted.\n"
-},
-{ "node", "show",
-"node show [OPTIONS] NAME [log | stderr | stdout]\n"
-" Show node NAME Ice log, stderr or stdout.\n"
-" Options:\n"
-" -f | --follow: Wait for new data to be available\n"
-" -t N | --tail N: Print the last N log messages or lines\n"
-" -h N | --head N: Print the first N lines (stderr and stdout only)\n"
-},
-{ "node", "shutdown",
-"node shutdown NAME Shutdown node NAME.\n"
-},
-{ "registry", "list",
-"registry list List all registered registries.\n"
-},
-{ "registry", "describe",
-"registry describe NAME Show information about registry NAME.\n"
-},
-{ "registry", "ping",
-"registry ping NAME Ping registry NAME.\n"
-},
-{ "registry", "show",
-"registry show [OPTIONS] NAME [log | stderr | stdout ]\n"
-" Show registry NAME Ice log, stderr or stdout.\n"
-" Options:\n"
-" -f | --follow: Wait for new log or data to be available\n"
-" -t N | --tail N: Print the last N log messages or lines\n"
-" -h N | --head N: Print the first N lines (stderr and stdout only)\n"
-},
-{ "registry", "shutdown",
-"registry shutdown NAME Shutdown registry NAME.\n"
-},
-{ "server", "list",
-"server list List all registered servers.\n"
-},
-{ "server", "remove",
-"server remove ID Remove server ID.\n"
-},
-{ "server", "describe",
-"server describe ID Describe server ID.\n"
-},
-{ "server", "properties",
-"server properties ID Get the run-time properties of server ID.\n"
-},
-{ "server", "property",
-"server property ID NAME Get the run-time property NAME of server ID.\n"
-},
-{ "server", "state",
-"server state ID Get the state of server ID.\n"
-},
-{ "server", "pid",
-"server pid ID Get the process id of server ID.\n"
-},
-{ "server", "start",
-"server start ID Start server ID.\n"
-},
-{ "server", "stop",
-"server stop ID Stop server ID.\n"
-},
-{ "server", "patch",
-"server patch ID Patch server ID.\n"
-},
-{ "server", "signal",
-"server signal ID SIGNAL Send SIGNAL (e.g. SIGTERM or 15) to server ID.\n"
-},
-{ "server", "stdout",
-"server stdout ID MESSAGE Write MESSAGE on server ID's stdout.\n"
-},
-{ "server", "stderr",
-"server stderr ID MESSAGE Write MESSAGE on server ID's stderr.\n"
-},
-{ "server", "show",
-"server show [OPTIONS] ID [log | stderr | stdout | LOGFILE ]\n"
-" Show server ID Ice log, stderr, stdout or log file LOGFILE.\n"
-" Options:\n"
-" -f | --follow: Wait for new data to be available\n"
-" -t N | --tail N: Print the last N log messages or lines\n"
-" -h N | --head N: Print the first N lines (not available for Ice log)\n"
-},
-{ "server", "enable",
-"server enable ID Enable server ID.\n"
-},
-{ "server", "disable",
-"server disable ID Disable server ID (a disabled server can't be\n"
-" started on demand or administratively).\n"
-},
-
-{ "service", "start",
-"service start ID NAME Starts service NAME in IceBox server ID.\n"
-},
-{ "service", "stop",
-"service stop ID NAME Stops service NAME in IceBox server ID.\n"
-},
-{ "service", "describe",
-"service describe ID NAME Describes service NAME in IceBox server ID.\n"
-},
-{ "service", "properties",
-"service properties ID NAME\n"
-" Get the run-time properties of service NAME in\n"
-" IceBox server ID.\n"
-},
-{ "service", "property",
-"service property ID NAME PROPERTY\n"
-" Get the run-time property PROPERTY of service NAME\n"
-" from IceBox server ID.\n"
-},
-{ "service", "list",
-"service list ID List the services in IceBox server ID.\n"
-},
-
-{ "adapter", "list",
-"adapter list List all registered adapters.\n"
-},
-{ "adapter", "endpoints",
-"adapter endpoints ID Show the endpoints of adapter or replica group ID.\n"
-},
-{ "adapter", "remove",
-"adapter remove ID Remove adapter or replica group ID.\n"
-},
-{ "object", "add",
-"object add PROXY [TYPE] Add an object to the object registry,\n"
-" optionally specifying its type.\n"
-},
-{ "object", "remove",
-"object remove IDENTITY Remove an object from the object registry.\n"
-},
-{ "object", "find",
-"object find TYPE Find all objects with the type TYPE.\n"
-},
-{ "object", "describe",
-"object describe EXPR Describe all registered objects whose stringified\n"
-" identities match the expression EXPR. A trailing\n"
-" wildcard is supported in EXPR, for example\n"
-" \"object describe Ice*\".\n"
-},
-{ "object", "list",
-"object list EXPR List all registered objects whose stringified\n"
-" identities match the expression EXPR. A trailing\n"
-" wildcard is supported in EXPR, for example\n"
-" \"object list Ice*\".\n"
-},
-{ 0, 0, 0 }
-};
-
-int loggerCallbackCount = 0;
-
-#ifdef _WIN32
-Ice::StringConverterPtr windowsConsoleConverter = 0;
-#endif
-
-void outputNewline()
-{
- consoleOut << endl;
-}
-
-void flushOutput()
-{
- consoleOut << flush;
-}
-
-void outputString(const string& s)
-{
- consoleOut << s;
-}
-
-void writeMessage(const string& message, bool indent)
-{
- string s = message;
-
- if(indent)
- {
- string::size_type idx = 0;
- while((idx = s.find("\n", idx)) != string::npos)
- {
- s.insert(idx + 1, " ");
- ++idx;
- }
- }
-
- outputString(s);
- outputNewline();
- flushOutput();
-}
-
-void printLogMessage(const string& p, const Ice::LogMessage& logMessage)
-{
- string prefix = p;
-
- if(!prefix.empty())
- {
- prefix += ": ";
- }
-
- string timestamp = IceUtil::Time::microSeconds(logMessage.timestamp).toDateTime();
-
- switch(logMessage.type)
- {
- case Ice::PrintMessage:
- {
- writeMessage(timestamp + " " + logMessage.message, false);
- break;
- }
- case Ice::TraceMessage:
- {
- string s = "-- " + timestamp + " " + prefix;
- if(!logMessage.traceCategory.empty())
- {
- s += logMessage.traceCategory + ": ";
- }
- s += logMessage.message;
- writeMessage(s, true);
- break;
- }
- case Ice::WarningMessage:
- {
- writeMessage("!- " + timestamp + " " + prefix + "warning: " + logMessage.message, true);
- break;
- }
- case Ice::ErrorMessage:
- {
- writeMessage("!! " + timestamp + " " + prefix + "error: " + logMessage.message, true);
- break;
- }
- default:
- {
- assert(0);
- }
- }
-}
-
-class RemoteLoggerI : public Ice::RemoteLogger
-{
-public:
-
- RemoteLoggerI();
-
- virtual void init(const string&, const Ice::LogMessageSeq&, const Ice::Current&);
- virtual void log(const Ice::LogMessage&, const Ice::Current&);
-
- void destroy();
-
-private:
-
- IceUtil::Monitor<IceUtil::Mutex> _monitor;
- bool _initDone;
- bool _destroyed;
- string _prefix;
-};
-
-typedef IceUtil::Handle<RemoteLoggerI> RemoteLoggerIPtr;
-
-RemoteLoggerI::RemoteLoggerI() :
- _initDone(false),
- _destroyed(false)
-{
-}
-
-void
-RemoteLoggerI::init(const string& prefix, const Ice::LogMessageSeq& logMessages, const Ice::Current&)
-{
- IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor);
- if(!_destroyed)
- {
- _prefix = prefix;
-
- for(Ice::LogMessageSeq::const_iterator p = logMessages.begin(); p != logMessages.end(); ++p)
- {
- printLogMessage(_prefix, *p);
- }
-
- _initDone = true;
- _monitor.notifyAll();
- }
-}
-
-void
-RemoteLoggerI::log(const Ice::LogMessage& logMessage, const Ice::Current&)
-{
- IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor);
- while(!_initDone && !_destroyed)
- {
- _monitor.wait();
- }
- if(!_destroyed)
- {
- printLogMessage(_prefix, logMessage);
- }
-}
-
-void
-RemoteLoggerI::destroy()
-{
- IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor);
- _destroyed = true;
- _monitor.notifyAll();
-}
-
-}
-
-namespace IceGrid
-{
-
-Parser* parser;
-
-}
-
-ParserPtr
-Parser::createParser(const CommunicatorPtr& communicator, const AdminSessionPrx& session, const AdminPrx& admin,
- bool interactive)
-{
- return new Parser(communicator, session, admin, interactive);
-}
-
-void
-Parser::usage(const string& category, const string& command)
-{
- if(_helpCommands.find(category) == _helpCommands.end())
- {
- invalidCommand("unknown command `" + category + "'");
- }
- else if(_helpCommands[category].find(command) == _helpCommands[category].end())
- {
- invalidCommand("unknown command `" + category + " " + command + "'");
- }
- else
- {
- consoleOut << _helpCommands[category][command];
- }
-}
-
-void
-Parser::usage(const string& category, const list<string>& args)
-{
- if(args.empty())
- {
- usage(category);
- }
- else if(args.size() > 1)
- {
- invalidCommand("`help' requires at most 1 argument");
- }
- else
- {
- usage(category, *args.begin());
- }
-}
-
-void
-Parser::usage()
-{
- consoleOut <<
- "help Print this message.\n"
- "exit, quit Exit this program.\n"
- "CATEGORY help Print the help section of the given CATEGORY.\n"
- "COMMAND help Print the help of the given COMMAND.\n"
- "\n"
- "List of help categories:\n"
- "\n"
- " application: commands to manage applications\n"
- " node: commands to manage nodes\n"
- " registry: commands to manage registries\n"
- " server: commands to manage servers\n"
- " service: commands to manage services\n"
- " adapter: commands to manage adapters\n"
- " object: commands to manage objects\n"
- " server template: commands to manage server templates\n"
- " service template: commands to manage service templates\n"
- "\n";
-}
-
-void
-Parser::interrupt()
-{
- Lock sync(*this);
- _interrupted = true;
- notifyAll();
-}
-
-bool
-Parser::interrupted() const
-{
- Lock sync(*this);
- return _interrupted;
-}
-
-void
-Parser::resetInterrupt()
-{
- Lock sync(*this);
- _interrupted = false;
-}
-
-void
-Parser::checkInterrupted()
-{
- if(!_interactive)
- {
- Lock sync(*this);
- if(_interrupted)
- {
- throw "interrupted with Ctrl-C";
- }
- }
-}
-
-void
-Parser::addApplication(const list<string>& origArgs)
-{
- list<string> copyArgs = origArgs;
- copyArgs.push_front("icegridadmin");
-
- IceUtilInternal::Options opts;
- opts.addOpt("n", "no-patch");
- vector<string> args;
- try
- {
- for(list<string>::const_iterator p = copyArgs.begin(); p != copyArgs.end(); ++p)
- {
- args.push_back(*p);
- }
- args = opts.parse(args);
- }
- catch(const IceUtilInternal::BadOptException& e)
- {
- error(e.reason);
- return;
- }
-
- if(args.size() < 1)
- {
- invalidCommand("application add", "requires at least one argument");
- return;
- }
-
- try
- {
- StringSeq targets;
- map<string, string> vars;
-
- vector<string>::const_iterator p = args.begin();
- string desc = *p++;
-
- for(; p != args.end(); ++p)
- {
- string::size_type pos = p->find('=');
- if(pos != string::npos)
- {
- vars[p->substr(0, pos)] = p->substr(pos + 1);
- }
- else
- {
- targets.push_back(*p);
- }
- }
-
- //
- // Add the application.
- //
- ApplicationDescriptor app = DescriptorParser::parseDescriptor(desc, targets, vars, _communicator, _admin);
- _admin->addApplication(app);
-
- if(!opts.isSet("no-patch"))
- {
- //
- // Patch the application.
- //
- try
- {
- _admin->patchApplication(app.name, true);
- }
- catch(const PatchException& ex)
- {
- warning(patchFailed(ex.reasons));
- }
- }
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::removeApplication(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("application remove", "requires exactly one argument");
- return;
- }
-
- try
- {
- list<string>::const_iterator p = args.begin();
-
- string name = *p++;
-
- _admin->removeApplication(name);
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::describeApplication(const list<string>& args)
-{
- if(args.size() < 1)
- {
- invalidCommand("application describe", "requires at least one argument");
- return;
- }
-
- try
- {
- list<string>::const_iterator p = args.begin();
-
- string name = *p++;
- ostringstream os;
- Output out(os);
- ApplicationInfo info = _admin->getApplicationInfo(name);
- ApplicationHelper helper(_communicator, info.descriptor);
- helper.print(out, info);
- out << nl;
- outputString(os.str());
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::diffApplication(const list<string>& origArgs)
-{
- list<string> copyArgs = origArgs;
- copyArgs.push_front("icegridadmin");
-
- IceUtilInternal::Options opts;
- opts.addOpt("s", "servers");
- vector<string> args;
- try
- {
- for(list<string>::const_iterator p = copyArgs.begin(); p != copyArgs.end(); ++p)
- {
- args.push_back(*p);
- }
- args = opts.parse(args);
- }
- catch(const IceUtilInternal::BadOptException& e)
- {
- error(e.reason);
- return;
- }
-
- if(args.size() < 1)
- {
- invalidCommand("application diff" , "requires at least one argument");
- return;
- }
-
- try
- {
- StringSeq targets;
- map<string, string> vars;
-
- vector<string>::const_iterator p = args.begin();
- string desc = *p++;
-
- for(; p != args.end(); ++p)
- {
- string::size_type pos = p->find('=');
- if(pos != string::npos)
- {
- vars[p->substr(0, pos)] = p->substr(pos + 1);
- }
- else
- {
- targets.push_back(*p);
- }
- }
-
- ApplicationDescriptor newApp = DescriptorParser::parseDescriptor(desc, targets, vars, _communicator, _admin);
- ApplicationInfo origApp = _admin->getApplicationInfo(newApp.name);
-
- ApplicationHelper newAppHelper(_communicator, newApp);
- ApplicationHelper oldAppHelper(_communicator, origApp.descriptor);
-
- ostringstream os;
- Output out(os);
- if(opts.isSet("servers"))
- {
- map<string, ServerInfo> oldServers = oldAppHelper.getServerInfos(origApp.uuid, origApp.revision);
- map<string, ServerInfo> newServers = newAppHelper.getServerInfos(origApp.uuid, origApp.revision);
-
- vector<string> messages;
- map<string, ServerInfo>::const_iterator p;
- for(p = oldServers.begin(); p != oldServers.end(); ++p)
- {
- map<string, ServerInfo>::const_iterator q = newServers.find(p->first);
- if(q == newServers.end())
- {
- messages.push_back("server `" + p->first + "': removed");
- }
- }
-
- for(p = newServers.begin(); p != newServers.end(); ++p)
- {
- map<string, ServerInfo>::const_iterator q = oldServers.find(p->first);
- if(q == oldServers.end())
- {
- messages.push_back("server `" + p->first + "': added");
- }
- else if(isServerUpdated(p->second, q->second))
- {
- if(isServerUpdated(p->second, q->second, true)) // Ignore properties
- {
- messages.push_back("server `" + p->first + "': updated (restart required)");
- }
- else
- {
- messages.push_back("server `" + p->first + "': properties updated (no restart required)");
- }
- }
- }
-
- out << "application `" << origApp.descriptor.name << "'";
- out << sb;
- sort(messages.begin(), messages.end());
- for(vector<string>::const_iterator r = messages.begin(); r != messages.end(); ++r)
- {
- out << nl << *r;
- }
- out << eb;
- }
- else
- {
- newAppHelper.printDiff(out, oldAppHelper);
- }
- out << nl;
- outputString(os.str());
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::updateApplication(const list<string>& origArgs)
-{
- list<string> copyArgs = origArgs;
- copyArgs.push_front("icegridadmin");
-
- IceUtilInternal::Options opts;
- opts.addOpt("n", "no-restart");
- vector<string> args;
- try
- {
- for(list<string>::const_iterator p = copyArgs.begin(); p != copyArgs.end(); ++p)
- {
- args.push_back(*p);
- }
- args = opts.parse(args);
- }
- catch(const IceUtilInternal::BadOptException& e)
- {
- error(e.reason);
- return;
- }
-
- if(args.size() < 1)
- {
- invalidCommand("application update", "requires at least one argument");
- return;
- }
-
- try
- {
- StringSeq targets;
- map<string, string> vars;
-
- vector<string>::const_iterator p = args.begin();
- string xml = *p++;
-
- for(; p != args.end(); ++p)
- {
- string::size_type pos = p->find('=');
- if(pos != string::npos)
- {
- vars[p->substr(0, pos)] = p->substr(pos + 1);
- }
- else
- {
- targets.push_back(*p);
- }
- }
-
- ApplicationDescriptor desc = DescriptorParser::parseDescriptor(xml, targets, vars, _communicator, _admin);
- if(opts.isSet("no-restart"))
- {
- _admin->syncApplicationWithoutRestart(desc);
- }
- else
- {
- _admin->syncApplication(desc);
- }
- }
- catch(const Ice::OperationNotExistException&)
- {
- error("registry doesn't support updates without restart");
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::patchApplication(const list<string>& origArgs)
-{
- list<string> copyArgs = origArgs;
- copyArgs.push_front("icegridadmin");
-
- IceUtilInternal::Options opts;
- opts.addOpt("f", "force");
- vector<string> args;
- try
- {
- for(list<string>::const_iterator p = copyArgs.begin(); p != copyArgs.end(); ++p)
- {
- args.push_back(*p);
- }
- args = opts.parse(args);
- }
- catch(const IceUtilInternal::BadOptException& e)
- {
- error(e.reason);
- return;
- }
-
- if(args.size() != 1)
- {
- invalidCommand("application patch", "requires exactly one argument");
- return;
- }
-
- try
- {
- vector<string>::const_iterator p = args.begin();
- string name = *p++;
- _admin->patchApplication(name, opts.isSet("force"));
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::listAllApplications(const list<string>& args)
-{
- if(!args.empty())
- {
- invalidCommand("application list", "doesn't require any argument");
- return;
- }
-
- try
- {
- Ice::StringSeq names = _admin->getAllApplicationNames();
- ostringstream os;
- copy(names.begin(), names.end(), ostream_iterator<string>(os,"\n"));
- outputString(os.str());
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::describeServerTemplate(const list<string>& args)
-{
- if(args.size() != 2)
- {
- invalidCommand("server template describe", "requires exactly two arguments");
- return;
- }
-
- try
- {
- list<string>::const_iterator p = args.begin();
-
- string name = *p++;
- string templ = *p++;
-
- ApplicationInfo application = _admin->getApplicationInfo(name);
-
- ostringstream os;
- Output out(os);
- TemplateDescriptorDict::const_iterator q = application.descriptor.serverTemplates.find(templ);
- if(q != application.descriptor.serverTemplates.end())
- {
- out << "server template `" << templ << "'";
- out << sb;
-
- out << nl << "parameters = `" << toString(q->second.parameters) << "'";
- out << nl;
-
- ServerDescriptorPtr server = ServerDescriptorPtr::dynamicCast(q->second.descriptor);
- IceBoxDescriptorPtr iceBox = IceBoxDescriptorPtr::dynamicCast(server);
- if(iceBox)
- {
- IceBoxHelper(iceBox).print(_communicator, out);
- }
- else
- {
- ServerHelper(server).print(_communicator, out);
- }
- out << eb;
- out << nl;
- }
- else
- {
- error("no server template with id `" + templ + "'");
- }
- outputString(os.str());
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::instantiateServerTemplate(const list<string>& args)
-{
- if(args.size() < 3)
- {
- invalidCommand("server template instantiate", "requires at least three arguments");
- return;
- }
-
- try
- {
- map<string, string> vars;
-
- list<string>::const_iterator p = args.begin();
- string application = *p++;
- string node = *p++;
- string templ = *p++;
- for(; p != args.end(); ++p)
- {
- string::size_type pos = p->find('=');
- if(pos != string::npos)
- {
- vars[p->substr(0, pos)] = p->substr(pos + 1);
- }
- }
-
- ServerInstanceDescriptor desc;
- desc._cpp_template = templ;
- desc.parameterValues = vars;
- _admin->instantiateServer(application, node, desc);
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::describeServiceTemplate(const list<string>& args)
-{
- if(args.size() != 2)
- {
- invalidCommand("service template describe", "requires exactly two arguments");
- return;
- }
-
- try
- {
- list<string>::const_iterator p = args.begin();
-
- string name = *p++;
- string templ = *p++;
-
- ApplicationInfo application = _admin->getApplicationInfo(name);
-
- ostringstream os;
- Output out(os);
- TemplateDescriptorDict::const_iterator q = application.descriptor.serviceTemplates.find(templ);
- if(q != application.descriptor.serviceTemplates.end())
- {
- out << "service template `" << templ << "'";
- out << sb;
-
- out << nl << "parameters = `" << toString(q->second.parameters) << "'";
- out << nl;
-
- ServiceDescriptorPtr desc = ServiceDescriptorPtr::dynamicCast(q->second.descriptor);
- ServiceHelper(desc).print(_communicator, out);
- out << eb;
- out << nl;
- }
- else
- {
- invalidCommand("no service template with id `" + templ + "'");
- }
- outputString(os.str());
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::describeNode(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("node describe", "requires exactly one argument");
- return;
- }
-
- try
- {
- NodeInfo info = _admin->getNodeInfo(args.front());
- ostringstream os;
- Output out(os);
- out << "node `" << args.front() << "'";
- out << sb;
- out << nl << "operating system = `" << info.os << "'";
- out << nl << "host name = `" << info.hostname << "'";
- out << nl << "release = `" << info.release << "'";
- out << nl << "version = `" << info.version << "'";
- out << nl << "machine type = `" << info.machine << "'";
- out << nl << "number of threads = `" << info.nProcessors << "'";
- out << eb;
- out << nl;
- outputString(os.str());
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::pingNode(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("node ping", "requires exactly one argument");
- return;
- }
-
- try
- {
- if(_admin->pingNode(args.front()))
- {
- consoleOut << "node is up" << endl;
- }
- else
- {
- consoleOut << "node is down" << endl;
- }
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::printLoadNode(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("node load", "requires exactly one argument");
- return;
- }
-
- try
- {
- LoadInfo load = _admin->getNodeLoad(args.front());
- consoleOut << "load average (1/5/15): " << load.avg1 << " / " << load.avg5 << " / " << load.avg15 << endl;
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::printNodeProcessorSockets(const list<string>& args)
-{
- if(args.size() > 1)
- {
- invalidCommand("node sockets", "requires no more than one argument");
- return;
- }
-
- try
- {
- if(args.size() == 1)
- {
- try
- {
- consoleOut << _admin->getNodeProcessorSocketCount(args.front()) << endl;
- }
- catch(const Ice::OperationNotExistException&)
- {
- consoleOut << "not supported" << endl;
- }
- }
- else
- {
- Ice::StringSeq names = _admin->getAllNodeNames();
- map<string, pair< vector<string>, int> > processorSocketCounts;
- for(Ice::StringSeq::const_iterator p = names.begin(); p != names.end(); p++)
- {
- try
- {
- NodeInfo info = _admin->getNodeInfo(*p);
- processorSocketCounts[info.hostname].first.push_back(*p);
- try
- {
- processorSocketCounts[info.hostname].second = _admin->getNodeProcessorSocketCount(*p);
- }
- catch(const Ice::OperationNotExistException&)
- {
- // Not supported.
- processorSocketCounts[info.hostname].second = 0;
- }
- }
- catch(const NodeNotExistException&)
- {
- }
- catch(const NodeUnreachableException&)
- {
- }
- }
-
- ostringstream os;
- os.flags(ios::left);
- os << setw(20) << "Hostname" << setw(20) << "| # of sockets" << setw(39) << "| Nodes" << endl;
- os << setw(79) << "=====================================================================" << endl;
- for(map<string, pair< vector<string>, int> >::const_iterator q = processorSocketCounts.begin();
- q != processorSocketCounts.end(); ++q)
- {
- os << setw(20) << setiosflags(ios::left) <<q->first;
- os << "| " << setw(18) << setiosflags(ios::left) << q->second.second;
- os << "| " << setw(37) << setiosflags(ios::left) << toString(q->second.first);
- os << endl;
- }
- consoleOut << os.str() << flush;
- }
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::shutdownNode(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("node shutdown", "requires exactly one argument");
- return;
- }
-
- try
- {
- _admin->shutdownNode(args.front());
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::listAllNodes(const list<string>& args)
-{
- if(!args.empty())
- {
- invalidCommand("node list", "doesn't require any argument");
- return;
- }
-
- try
- {
- ostringstream os;
- Ice::StringSeq names = _admin->getAllNodeNames();
- copy(names.begin(), names.end(), ostream_iterator<string>(os,"\n"));
- consoleOut << os.str();
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::describeRegistry(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("registry describe", "requires exactly one argument");
- return;
- }
-
- try
- {
- RegistryInfo info = _admin->getRegistryInfo(args.front());
- ostringstream os;
- Output out(os);
- out << "registry `" << args.front() << "'";
- out << sb;
- out << nl << "host name = `" << info.hostname << "'";
- out << eb;
- out << nl;
- outputString(os.str());
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::pingRegistry(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("registry ping", "requires exactly one argument");
- return;
- }
-
- try
- {
- if(_admin->pingRegistry(args.front()))
- {
- consoleOut << "registry is up" << endl;
- }
- else
- {
- consoleOut << "registry is down" << endl;
- }
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::shutdownRegistry(const list<string>& args)
-{
- if(args.size() > 1)
- {
- invalidCommand("registry shutdown", "requires at most one argument");
- return;
- }
-
- try
- {
- if(args.empty())
- {
- _admin->shutdown();
- }
- else
- {
- _admin->shutdownRegistry(args.front());
- }
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::listAllRegistries(const list<string>& args)
-{
- if(!args.empty())
- {
- invalidCommand("registry list", "doesn't require any argument");
- return;
- }
-
- try
- {
- ostringstream os;
- Ice::StringSeq names = _admin->getAllRegistryNames();
- copy(names.begin(), names.end(), ostream_iterator<string>(os,"\n"));
- consoleOut << os.str();
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::removeServer(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("server remove", "requires exactly one argument");
- return;
- }
-
- try
- {
- ServerInfo info = _admin->getServerInfo(args.front());
- NodeUpdateDescriptor nodeUpdate;
- nodeUpdate.name = info.node;
- nodeUpdate.removeServers.push_back(args.front());
- ApplicationUpdateDescriptor update;
- update.name = info.application;
- update.nodes.push_back(nodeUpdate);
- _admin->updateApplication(update);
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::startServer(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("server start", "requires exactly one argument");
- return;
- }
-
- try
- {
- _admin->startServer(args.front());
- }
- catch(const ServerStartException& ex)
- {
- error("the server didn't start successfully:\n" + ex.reason);
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::stopServer(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("server stop", "requires exactly one argument");
- return;
- }
-
- try
- {
- _admin->stopServer(args.front());
- }
- catch(const ServerStopException& ex)
- {
- error("the server didn't stop successfully:\n" + ex.reason);
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::patchServer(const list<string>& origArgs)
-{
- list<string> copyArgs = origArgs;
- copyArgs.push_front("icegridadmin");
-
- IceUtilInternal::Options opts;
- opts.addOpt("f", "force");
- vector<string> args;
- try
- {
- for(list<string>::const_iterator p = copyArgs.begin(); p != copyArgs.end(); ++p)
- {
- args.push_back(*p);
- }
- args = opts.parse(args);
- }
- catch(const IceUtilInternal::BadOptException& e)
- {
- error(e.reason);
- return;
- }
-
- if(args.size() != 1)
- {
- invalidCommand("server patch", "requires exactly one argument");
- return;
- }
-
- try
- {
- _admin->patchServer(args.front(), opts.isSet("force"));
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::signalServer(const list<string>& args)
-{
- if(args.size() != 2)
- {
- invalidCommand("server signal", "requires exactly two arguments");
- return;
- }
-
- try
- {
- list<string>::const_iterator p = args.begin();
- string server = *p++;
- _admin->sendSignal(server, *p);
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-
-void
-Parser::writeMessage(const list<string>& args, int fd)
-{
- if(args.size() != 2)
- {
- invalidCommand("server stdout or server stderr", "requires exactly two arguments");
- return;
- }
-
- try
- {
- list<string>::const_iterator p = args.begin();
- string server = *p++;
-
- Ice::ObjectPrx serverAdmin = _admin->getServerAdmin(server);
- Ice::ProcessPrx process = Ice::ProcessPrx::uncheckedCast(serverAdmin, "Process");
-
- process->writeMessage(*p, fd);
- }
- catch(const Ice::ObjectNotExistException&)
- {
- error("couldn't reach the server's Admin object");
- }
- catch(const Ice::FacetNotExistException&)
- {
- error("the server's Admin object does not provide a 'Process' facet");
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::describeServer(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("server describe", "requires exactly one argument");
- return;
- }
-
- try
- {
- ServerInfo info = _admin->getServerInfo(args.front());
- ostringstream os;
- Output out(os);
- IceBoxDescriptorPtr iceBox = IceBoxDescriptorPtr::dynamicCast(info.descriptor);
- if(iceBox)
- {
- IceBoxHelper(iceBox).print(_communicator, out, info);
- }
- else
- {
- ServerHelper(info.descriptor).print(_communicator, out, info);
- }
- out << nl;
- outputString(os.str());
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::stateServer(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("server state", "requires exactly one argument");
- return;
- }
-
- try
- {
- ServerState state = _admin->getServerState(args.front());
- string enabled = _admin->isServerEnabled(args.front()) ? "enabled" : "disabled";
- switch(state)
- {
- case Inactive:
- {
- consoleOut << "inactive (" << enabled << ")" << endl;
- break;
- }
- case Activating:
- {
- consoleOut << "activating (" << enabled << ")" << endl;
- break;
- }
- case Active:
- {
- int pid = _admin->getServerPid(args.front());
- consoleOut << "active (pid = " << pid << ", " << enabled << ")" << endl;
- break;
- }
- case ActivationTimedOut:
- {
- int pid = _admin->getServerPid(args.front());
- consoleOut << "activation timed out (pid = " << pid << ", " << enabled << ")" << endl;
- break;
- }
- case Deactivating:
- {
- consoleOut << "deactivating (" << enabled << ")" << endl;
- break;
- }
- case Destroying:
- {
- consoleOut << "destroying (" << enabled << ")" << endl;
- break;
- }
- case Destroyed:
- {
- consoleOut << "destroyed (" << enabled << ")" << endl;
- break;
- }
- default:
- assert(false);
- }
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::pidServer(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("server pid", "requires exactly one argument");
- return;
- }
-
- try
- {
- int pid = _admin->getServerPid(args.front());
- if(pid > 0)
- {
- consoleOut << pid << endl;
- }
- else
- {
- error("server is not running");
- }
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::propertiesServer(const list<string>& args, bool single)
-{
- if(single && args.size() != 2)
- {
- invalidCommand("server property", "requires exactly two arguments");
- return;
- }
- else if(!single && args.size() != 1)
- {
- invalidCommand("server properties", "requires exactly one argument");
- return;
- }
-
- try
- {
- Ice::ObjectPrx serverAdmin = _admin->getServerAdmin(args.front());
- Ice::PropertiesAdminPrx propAdmin = Ice::PropertiesAdminPrx::uncheckedCast(serverAdmin, "Properties");
-
- if(single)
- {
- string val = propAdmin->getProperty(*(++args.begin()));
- consoleOut << val << endl;
- }
- else
- {
- Ice::PropertyDict properties = propAdmin->getPropertiesForPrefix("");
- for(Ice::PropertyDict::const_iterator p = properties.begin(); p != properties.end(); ++p)
- {
- consoleOut << p->first << "=" << p->second << endl;
- }
- }
- }
- catch(const Ice::ObjectNotExistException&)
- {
- error("couldn't reach the server's Admin object");
- }
- catch(const Ice::FacetNotExistException&)
- {
- error("the server's Admin object does not provide a 'Properties' facet");
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::enableServer(const list<string>& args, bool enable)
-{
- if(args.size() != 1)
- {
- if(enable)
- {
- invalidCommand("server enable", "requires exactly one argument");
- }
- else
- {
- invalidCommand("server disable", "requires exactly one argument");
- }
- return;
- }
-
- try
- {
- _admin->enableServer(args.front(), enable);
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::listAllServers(const list<string>& args)
-{
- if(!args.empty())
- {
- invalidCommand("server list", "doesn't require any argument");
- return;
- }
-
- try
- {
- ostringstream os;
- Ice::StringSeq ids = _admin->getAllServerIds();
- copy(ids.begin(), ids.end(), ostream_iterator<string>(os,"\n"));
- consoleOut << os.str();
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::startService(const list<string>& args)
-{
- if(args.size() != 2)
- {
- invalidCommand("service start", "requires exactly two arguments");
- return;
- }
-
- string server = args.front();
- string service = *(++args.begin());
- try
- {
- Ice::ObjectPrx admin = _admin->getServerAdmin(server);
- IceBox::ServiceManagerPrx manager = IceBox::ServiceManagerPrx::uncheckedCast(admin, "IceBox.ServiceManager");
- manager->startService(service);
- }
- catch(const IceBox::AlreadyStartedException&)
- {
- error("the service `" + service + "' is already started");
- }
- catch(const IceBox::NoSuchServiceException&)
- {
- error("couldn't find service `" + service + "'");
- }
- catch(const Ice::ObjectNotExistException&)
- {
- error("couldn't reach the server's Admin object");
- }
- catch(const Ice::FacetNotExistException&)
- {
- error("the server's Admin object does not provide a 'IceBox.ServiceManager' facet");
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::stopService(const list<string>& args)
-{
- if(args.size() != 2)
- {
- invalidCommand("service stop", "requires exactly two arguments");
- return;
- }
-
- string server = args.front();
- string service = *(++args.begin());
- try
- {
- Ice::ObjectPrx admin = _admin->getServerAdmin(server);
- IceBox::ServiceManagerPrx manager = IceBox::ServiceManagerPrx::uncheckedCast(admin, "IceBox.ServiceManager");
- manager->stopService(service);
- }
- catch(const IceBox::AlreadyStoppedException&)
- {
- error("the service `" + service + "' is already stopped");
- }
- catch(const IceBox::NoSuchServiceException&)
- {
- error("couldn't find service `" + service + "'");
- }
- catch(const Ice::ObjectNotExistException&)
- {
- error("couldn't reach the server's Admin object");
- }
- catch(const Ice::FacetNotExistException&)
- {
- error("the server's Admin object does not provide a 'IceBox.ServiceManager' facet");
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::describeService(const list<string>& args)
-{
- if(args.size() != 2)
- {
- invalidCommand("service describe", "requires exactly two arguments");
- return;
- }
-
- string server = args.front();
- string service = *(++args.begin());
- try
- {
- ServerInfo info = _admin->getServerInfo(server);
- IceBoxDescriptorPtr iceBox = IceBoxDescriptorPtr::dynamicCast(info.descriptor);
- if(!iceBox)
- {
- error("server `" + server + "' is not an IceBox server");
- return;
- }
-
- ostringstream os;
- Output out(os);
- bool found = false;
- for(ServiceInstanceDescriptorSeq::const_iterator p = iceBox->services.begin(); p != iceBox->services.end(); ++p)
- {
- if(p->descriptor && p->descriptor->name == service)
- {
- ServiceHelper(p->descriptor).print(_communicator, out);
- out << nl;
- found = true;
- break;
- }
- }
- outputString(os.str());
-
- if(!found)
- {
- error("couldn't find service `" + service + "'");
- return;
- }
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::propertiesService(const list<string>& args, bool single)
-{
- if(single && args.size() != 3)
- {
- invalidCommand("service property", "requires exactly three arguments");
- return;
- }
- else if(!single && args.size() != 2)
- {
- invalidCommand("service properties", "requires exactly two argument");
- return;
- }
-
- list<string>::const_iterator a = args.begin();
- string server = *a++;
- string service = *a++;
- string property = single ? *a++ : string();
-
- try
- {
- //
- // First, we ensure that the service exists.
- //
- ServerInfo info = _admin->getServerInfo(server);
- IceBoxDescriptorPtr iceBox = IceBoxDescriptorPtr::dynamicCast(info.descriptor);
- if(!iceBox)
- {
- error("server `" + server + "' is not an IceBox server");
- return;
- }
-
- bool found = false;
- for(ServiceInstanceDescriptorSeq::const_iterator p = iceBox->services.begin(); p != iceBox->services.end(); ++p)
- {
- if(p->descriptor && p->descriptor->name == service)
- {
- found = true;
- break;
- }
- }
- if(!found)
- {
- error("couldn't find service `" + service + "'");
- return;
- }
-
- Ice::ObjectPrx admin = _admin->getServerAdmin(server);
- Ice::PropertiesAdminPrx propAdmin;
- if(getPropertyAsInt(info.descriptor->propertySet.properties, "IceBox.UseSharedCommunicator." + service) > 0)
- {
- propAdmin = Ice::PropertiesAdminPrx::uncheckedCast(admin, "IceBox.SharedCommunicator.Properties");
- }
- else
- {
- propAdmin = Ice::PropertiesAdminPrx::uncheckedCast(admin, "IceBox.Service." + service + ".Properties");
- }
-
- if(single)
- {
- string val = propAdmin->getProperty(property);
- consoleOut << val << endl;
- }
- else
- {
- Ice::PropertyDict properties = propAdmin->getPropertiesForPrefix("");
- for(Ice::PropertyDict::const_iterator p = properties.begin(); p != properties.end(); ++p)
- {
- consoleOut << p->first << "=" << p->second << endl;
- }
- }
- }
- catch(const Ice::ObjectNotExistException&)
- {
- error("couldn't reach the server's Admin object");
- }
- catch(const Ice::FacetNotExistException&)
- {
- error("the server's Admin object does not provide an 'IceBox.Service." + service + ".Properties' facet");
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::listServices(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("service list", "requires exactly one argument");
- return;
- }
-
- string server = args.front();
- try
- {
- ServerInfo info = _admin->getServerInfo(server);
- IceBoxDescriptorPtr iceBox = IceBoxDescriptorPtr::dynamicCast(info.descriptor);
- if(!iceBox)
- {
- error("server `" + server + "' is not an IceBox server");
- return;
- }
- for(ServiceInstanceDescriptorSeq::const_iterator p = iceBox->services.begin(); p != iceBox->services.end(); ++p)
- {
- if(p->descriptor)
- {
- consoleOut << p->descriptor->name << endl;
- }
- }
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-
-void
-Parser::endpointsAdapter(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("adapter endpoints", "requires exactly one argument");
- return;
- }
-
- try
- {
- string adapterId = args.front();
- AdapterInfoSeq adpts = _admin->getAdapterInfo(adapterId);
- if(adpts.size() == 1 && adpts.begin()->id == adapterId)
- {
- string endpoints = _communicator->proxyToString(adpts.begin()->proxy);
- consoleOut << (endpoints.empty() ? string("<inactive>") : endpoints) << endl;
- }
- else
- {
- for(AdapterInfoSeq::const_iterator p = adpts.begin(); p != adpts.end(); ++p)
- {
- consoleOut << (p->id.empty() ? string("<empty>") : p->id) << ": ";
- string endpoints = _communicator->proxyToString(p->proxy);
- consoleOut << (endpoints.empty() ? string("<inactive>") : endpoints) << endl;
- }
- }
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::removeAdapter(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("adapter remove", "requires exactly one argument");
- return;
- }
-
- try
- {
- _admin->removeAdapter(*args.begin());
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::listAllAdapters(const list<string>& args)
-{
- if(!args.empty())
- {
- invalidCommand("adapter list", "doesn't require any argument");
- return;
- }
-
- try
- {
- ostringstream os;
- Ice::StringSeq ids = _admin->getAllAdapterIds();
- copy(ids.begin(), ids.end(), ostream_iterator<string>(os,"\n"));
- consoleOut << os.str();
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::addObject(const list<string>& args)
-{
- if(args.size() != 1 && args.size() != 2)
- {
- invalidCommand("object add", "requires one or two arguments");
- return;
- }
-
- try
- {
- list<string>::const_iterator p = args.begin();
-
- string proxy = *p++;
-
- if(p != args.end())
- {
- string type = *p++;
- _admin->addObjectWithType(_communicator->stringToProxy(proxy), type);
- }
- else
- {
- _admin->addObject(_communicator->stringToProxy(proxy));
- }
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::removeObject(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("object remove", "requires exactly one argument");
- return;
- }
-
- try
- {
- _admin->removeObject(Ice::stringToIdentity((*(args.begin()))));
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::findObject(const list<string>& args)
-{
- if(args.size() != 1)
- {
- invalidCommand("object find", "requires exactly one argument");
- return;
- }
-
- try
- {
- ObjectInfoSeq objects = _admin->getObjectInfosByType(*(args.begin()));
- for(ObjectInfoSeq::const_iterator p = objects.begin(); p != objects.end(); ++p)
- {
- consoleOut << _communicator->proxyToString(p->proxy) << endl;
- }
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::describeObject(const list<string>& args)
-{
- if(args.size() > 1)
- {
- invalidCommand("object describe", "requires at most one argument");
- return;
- }
-
- try
- {
- ObjectInfoSeq objects;
- if(args.size() == 1)
- {
- string arg = *(args.begin());
- if(arg.find('*') == string::npos)
- {
- ObjectInfo info = _admin->getObjectInfo(Ice::stringToIdentity(arg));
- consoleOut << "proxy = `" << _communicator->proxyToString(info.proxy) << "'" << endl;
- consoleOut << "type = `" << info.type << "'" << endl;
- return;
- }
- else
- {
- objects = _admin->getAllObjectInfos(arg);
- }
- }
- else
- {
- objects = _admin->getAllObjectInfos("");
- }
-
- for(ObjectInfoSeq::const_iterator p = objects.begin(); p != objects.end(); ++p)
- {
- consoleOut << "proxy = `" << _communicator->proxyToString(p->proxy) << "' type = `" << p->type << "'" << endl;
- }
-
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::listObject(const list<string>& args)
-{
- if(args.size() > 1)
- {
- invalidCommand("object list", "requires at most one argument");
- return;
- }
-
- try
- {
- ObjectInfoSeq objects;
- if(args.size() == 1)
- {
- objects = _admin->getAllObjectInfos(*(args.begin()));
- }
- else
- {
- objects = _admin->getAllObjectInfos("");
- }
-
- for(ObjectInfoSeq::const_iterator p = objects.begin(); p != objects.end(); ++p)
- {
- consoleOut << _communicator->identityToString(p->proxy->ice_getIdentity()) << endl;
- }
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::show(const string& reader, const list<string>& origArgs)
-{
- list<string> copyArgs = origArgs;
- copyArgs.push_front("icegridadmin");
-
- IceUtilInternal::Options opts;
- opts.addOpt("f", "follow");
- opts.addOpt("h", "head", IceUtilInternal::Options::NeedArg);
- opts.addOpt("t", "tail", IceUtilInternal::Options::NeedArg);
-
- vector<string> args;
- try
- {
- for(list<string>::const_iterator p = copyArgs.begin(); p != copyArgs.end(); ++p)
- {
- args.push_back(*p);
- }
- args = opts.parse(args);
- }
- catch(const IceUtilInternal::BadOptException& e)
- {
- error(e.reason);
- return;
- }
-
- if(args.size() != 2)
- {
- invalidCommand(reader + " show", "requires two arguments");
- return;
- }
-
- try
- {
- vector<string>::const_iterator p = args.begin();
- string id = *p++;
- string filename = *p++;
-
- consoleOut << reader << " `" << id << "' " << filename << ": " << flush;
- Ice::StringSeq lines;
-
- bool head = opts.isSet("head");
- bool tail = opts.isSet("tail");
- if(head && tail)
- {
- invalidCommand("can't specify both -h | --head and -t | --tail options");
- return;
- }
- if(head && reader == "log")
- {
- invalidCommand("can't specify -h | --head option with log");
- return;
- }
-
- int lineCount = 20;
- if(head || tail)
- {
- if(head)
- {
- istringstream is(opts.optArg("head"));
- is >> lineCount;
- }
- else
- {
- istringstream is(opts.optArg("tail"));
- is >> lineCount;
- }
- if(lineCount <= 0)
- {
- invalidCommand("invalid argument for -h | --head or -t | --tail option");
- return;
- }
- }
-
- bool follow = opts.isSet("follow");
-
- if(head && follow)
- {
- invalidCommand("can't use -f | --follow option with -h | --head option");
- return;
- }
-
- if(filename == "log")
- {
- showLog(id, reader, tail, follow, lineCount);
- }
- else
- {
- showFile(id, reader, filename, head, tail, follow, lineCount);
- }
- }
- catch(const Ice::Exception& ex)
- {
- exception(ex);
- }
-}
-
-void
-Parser::showFile(const string& id, const string& reader, const string& filename,
- bool head, bool tail, bool follow, int lineCount)
-{
-
- int maxBytes = _communicator->getProperties()->getPropertyAsIntWithDefault("Ice.MessageSizeMax", 1024) * 1024;
-
- FileIteratorPrx it;
-
- try
- {
- if(reader == "node")
- {
- if(filename == "stderr")
- {
- it = _session->openNodeStdErr(id, tail ? lineCount : -1);
- }
- else if(filename == "stdout")
- {
- it = _session->openNodeStdOut(id, tail ? lineCount : -1);
- }
- else
- {
- invalidCommand("invalid node log filename `" + filename + "'");
- return;
- }
- }
- else if(reader == "registry")
- {
- if(filename == "stderr")
- {
- it = _session->openRegistryStdErr(id, tail ? lineCount : -1);
- }
- else if(filename == "stdout")
- {
- it = _session->openRegistryStdOut(id, tail ? lineCount : -1);
- }
- else
- {
- invalidCommand("invalid registry log filename `" + filename + "'");
- return;
- }
- }
- else if(reader == "server")
- {
- if(filename == "stderr")
- {
- it = _session->openServerStdErr(id, tail ? lineCount : -1);
- }
- else if(filename == "stdout")
- {
- it = _session->openServerStdOut(id, tail ? lineCount : -1);
- }
- else
- {
- it = _session->openServerLog(id, filename, tail ? lineCount : -1);
- }
- }
-
- resetInterrupt();
- Ice::StringSeq lines;
- if(head)
- {
- assert(!follow);
-
- int i = 0;
- bool eof = false;
- while(!interrupted() && !eof && i < lineCount)
- {
- eof = it->read(maxBytes, lines);
- for(Ice::StringSeq::const_iterator p = lines.begin(); i < lineCount && p != lines.end(); ++p, ++i)
- {
- outputNewline();
- outputString(*p);
- flushOutput();
- }
- }
- }
- else
- {
- bool eof = false;
- while(!interrupted() && !eof)
- {
- eof = it->read(maxBytes, lines);
- for(Ice::StringSeq::const_iterator p = lines.begin(); p != lines.end(); ++p)
- {
- outputNewline();
- outputString(*p);
- flushOutput();
- }
- }
- }
-
- if(follow)
- {
- while(!interrupted())
- {
- bool eof = it->read(maxBytes, lines);
- for(Ice::StringSeq::const_iterator p = lines.begin(); p != lines.end(); ++p)
- {
- outputString(*p);
- if((p + 1) != lines.end())
- {
- outputNewline();
- }
- else
- {
- flushOutput();
- }
- }
-
- if(eof)
- {
- Lock sync(*this);
- if(_interrupted)
- {
- break;
- }
- timedWait(IceUtil::Time::seconds(5));
- }
- }
- }
-
- if(lines.empty() || !lines.back().empty())
- {
- outputNewline();
- flushOutput();
- }
-
- it->destroy();
- }
- catch(...)
- {
- if(it != 0)
- {
- try
- {
- it->destroy();
- }
- catch(...)
- {
- }
- }
- throw;
- }
-}
-
-void
-Parser::showLog(const string& id, const string& reader, bool tail, bool follow, int lineCount)
-{
- outputNewline();
-
- Ice::ObjectPrx admin;
-
- if(reader == "server")
- {
- admin = _admin->getServerAdmin(id);
- }
- else if(reader == "node")
- {
- admin = _admin->getNodeAdmin(id);
- }
- else if(reader == "registry")
- {
- admin = _admin->getRegistryAdmin(id);
- }
-
- if(admin == 0)
- {
- error("cannot retrieve Admin proxy for " + reader + " `" + id + "'");
- return;
- }
-
- Ice::LoggerAdminPrx loggerAdmin;
-
- try
- {
- loggerAdmin = Ice::LoggerAdminPrx::checkedCast(admin, "Logger");
- }
- catch(const Ice::Exception&)
- {
- }
-
- if(loggerAdmin == 0)
- {
- error("cannot retrieve Logger admin facet for " + reader + " `" + id + "'");
- return;
- }
-
- if(follow)
- {
- Ice::ObjectPrx adminCallbackTemplate = _session->getAdminCallbackTemplate();
-
- if(adminCallbackTemplate == 0)
- {
- error("cannot retriever Callback template from IceGrid registry");
- return;
- }
-
- const Ice::EndpointSeq endpoints = adminCallbackTemplate->ice_getEndpoints();
- string publishedEndpoints;
-
- for(Ice::EndpointSeq::const_iterator p = endpoints.begin(); p != endpoints.end(); ++p)
- {
- if(publishedEndpoints.empty())
- {
- publishedEndpoints = (*p)->toString();
- }
- else
- {
- publishedEndpoints += ":" + (*p)->toString();
- }
- }
-
- _communicator->getProperties()->setProperty("RemoteLoggerAdapter.PublishedEndpoints", publishedEndpoints);
-
- Ice::ObjectAdapterPtr adapter = _communicator->createObjectAdapter("RemoteLoggerAdapter");
-
- _session->ice_getConnection()->setAdapter(adapter);
-
- Ice::Identity id;
- ostringstream name;
- name << "RemoteLogger-" << loggerCallbackCount++;
- id.name = name.str();
- id.category = adminCallbackTemplate->ice_getIdentity().category;
-
- RemoteLoggerIPtr servant = new RemoteLoggerI;
- Ice::RemoteLoggerPrx prx =
- Ice::RemoteLoggerPrx::uncheckedCast(adapter->add(servant, id));
- adapter->activate();
-
- loggerAdmin->attachRemoteLogger(prx, Ice::LogMessageTypeSeq(), Ice::StringSeq(), tail ? lineCount : -1);
-
- resetInterrupt();
- {
- Lock lock(*this);
- while(!_interrupted)
- {
- wait();
- }
- }
-
- servant->destroy();
- adapter->destroy();
-
- try
- {
- loggerAdmin->detachRemoteLogger(prx);
- }
- catch(const Ice::ObjectNotExistException&)
- {
- // ignored
- }
- }
- else
- {
- string prefix;
- const Ice::LogMessageSeq logMessages = loggerAdmin->getLog(Ice::LogMessageTypeSeq(), Ice::StringSeq(),
- tail ? lineCount : -1, prefix);
-
- for(Ice::LogMessageSeq::const_iterator p = logMessages.begin(); p != logMessages.end(); ++p)
- {
- printLogMessage(prefix, *p);
- }
- }
-}
-
-void
-Parser::showBanner()
-{
- consoleOut << "Ice " << ICE_STRING_VERSION << " Copyright (c) 2003-2016 ZeroC, Inc." << endl;
-}
-
-void
-Parser::showCopying()
-{
- consoleOut << "This command is not implemented." << endl;
-}
-
-void
-Parser::showWarranty()
-{
- consoleOut << "This command is not implemented." << endl;
-}
-
-//
-// With older flex version <= 2.5.35 YY_INPUT second
-// paramenter is of type int&, in newer versions it
-// changes to size_t&
-//
-void
-Parser::getInput(char* buf, int& result, size_t maxSize)
-{
- size_t r = static_cast<size_t>(result);
- getInput(buf, r, maxSize);
- result = static_cast<int>(r);
-}
-
-void
-Parser::getInput(char* buf, size_t& result, size_t maxSize)
-{
- if(!_commands.empty())
- {
- if(_commands == ";")
- {
- result = 0;
- }
- else
- {
- result = min(maxSize, _commands.length());
- strncpy(buf, _commands.c_str(), result);
- _commands.erase(0, result);
- if(_commands.empty())
- {
- _commands = ";";
- }
- }
- }
- else
- {
-#ifdef HAVE_READLINE
-
- const char* prompt = parser->getPrompt();
- char* line = readline(const_cast<char*>(prompt));
- if(!line)
- {
- result = 0;
- }
- else
- {
- if(*line)
- {
- add_history(line);
- }
-
- result = strlen(line) + 1;
- if(result > maxSize)
- {
- free(line);
- error("input line too long");
- result = 0;
- }
- else
- {
- strcpy(buf, line);
- strcat(buf, "\n");
- free(line);
- }
- }
-#else
- consoleOut << parser->getPrompt() << flush;
- string line;
- while(true)
- {
- char c = static_cast<char>(getc(yyin));
- if(c == EOF)
- {
- if(line.size())
- {
- line += '\n';
- }
- break;
- }
-
- line += c;
- if(c == '\n')
- {
- break;
- }
- }
-#ifdef _WIN32
- if(windowsConsoleConverter)
- {
- line = nativeToUTF8(line, windowsConsoleConverter);
- }
-#endif
- result = line.length();
- if(result > maxSize)
- {
- error("input line too long");
- buf[0] = EOF;
- result = 1;
- }
- else
- {
- strcpy(buf, line.c_str());
- }
-#endif
- }
-}
-
-void
-Parser::continueLine()
-{
- _continue = true;
-}
-
-const char*
-Parser::getPrompt()
-{
- assert(_commands.empty());
-
- if(_continue)
- {
- _continue = false;
- return "(cont) ";
- }
- else
- {
- return ">>> ";
- }
-}
-
-void
-Parser::invalidCommand(const char* s)
-{
- error(s);
-}
-
-void
-Parser::invalidCommand(const string& s)
-{
- error(s.c_str());
-}
-
-void
-Parser::invalidCommand(const string& command, const string& msg)
-{
- error("`" + command + "' " + msg + "\n(`" + command + " help' for more info)");
-}
-
-void
-Parser::invalidCommand(const list<string>& s)
-{
- if(s.empty())
- {
- return;
- }
-
- string cat = *s.begin();
- if(_helpCommands.find(cat) == _helpCommands.end())
- {
- consoleErr << "unknown `" << cat << "' command (see `help' for more info)" << endl;
- }
- else if(s.size() == 1)
- {
- consoleErr << "invalid `" << cat << "' command (see `" << cat << " help' for more info)" << endl;
- }
- else
- {
- string cmd = *(++s.begin());
- if(_helpCommands[cat].find(cmd) == _helpCommands[cat].end())
- {
- cmd = cat + " " + cmd;
- consoleErr << "unknown `" << cmd << "' command (see `" << cat << " help' for more info)" << endl;
- }
- else
- {
- cmd = cat + " " + cmd;
- consoleErr << "invalid `" << cmd << "' command (see `" << cmd << " help' for more info)" << endl;
- }
- }
-}
-
-string
-Parser::patchFailed(const Ice::StringSeq& reasons)
-{
- if(reasons.size() == 1)
- {
- ostringstream s;
- s << "the patch failed:\n" << reasons[0];
- return s.str();
- }
- else
- {
- ostringstream os;
- IceUtilInternal::Output out(os);
- out.setIndent(2);
- out << "the patch failed on some nodes:\n";
- for(Ice::StringSeq::const_iterator p = reasons.begin(); p != reasons.end(); ++p)
- {
- string reason = *p;
- string::size_type beg = 0;
- string::size_type end = reason.find_first_of("\n");
- if(end == string::npos)
- {
- end = reason.size();
- }
- out << "- " << reason.substr(beg, end - beg);
- out.inc();
- while(end < reason.size())
- {
- beg = end + 1;
- end = reason.find_first_of("\n", beg);
- if(end == string::npos)
- {
- end = reason.size();
- }
- out.newline();
- out << reason.substr(beg, end - beg);
- }
- out.dec();
- if(p + 1 != reasons.end())
- {
- out.newline();
- }
- }
- return os.str();
- }
-}
-
-void
-Parser::error(const char* s)
-{
-
- consoleErr << "error: " << s << endl;
- _errors++;
-}
-
-void
-Parser::error(const string& s)
-{
- error(s.c_str());
-}
-
-void
-Parser::warning(const char* s)
-{
- consoleErr << "warning: " << s << endl;
-}
-
-void
-Parser::warning(const string& s)
-{
- warning(s.c_str());
-}
-
-int
-Parser::parse(FILE* file, bool debug)
-{
- yydebug = debug ? 1 : 0;
-
- assert(!parser);
- parser = this;
-
- _errors = 0;
- _commands.empty();
- yyin = file;
- assert(yyin);
-
- _continue = false;
-
- int status = yyparse();
- if(_errors)
- {
- status = EXIT_FAILURE;
- }
-
- parser = 0;
- return status;
-}
-
-int
-Parser::parse(const std::string& commands, bool debug)
-{
- yydebug = debug ? 1 : 0;
-
- assert(!parser);
- parser = this;
-
- _errors = 0;
- _commands = commands;
- assert(!_commands.empty());
- yyin = 0;
-
- _continue = false;
-
- int status = yyparse();
- if(_errors)
- {
- status = EXIT_FAILURE;
- }
-
- parser = 0;
- return status;
-}
-
-Parser::Parser(const CommunicatorPtr& communicator,
- const AdminSessionPrx& session,
- const AdminPrx& admin,
- bool interactive) :
- _communicator(communicator),
- _session(session),
- _admin(admin),
- _interrupted(false),
- _interactive(interactive)
-{
- for(int i = 0; _commandsHelp[i][0]; i++)
- {
- const string category = _commandsHelp[i][0];
- const string cmd = _commandsHelp[i][1];
- const string help = _commandsHelp[i][2];
- _helpCommands[category][""] += help;
- _helpCommands[category][cmd] += help;
- }
-
-#ifdef _WIN32
- if(!windowsConsoleConverter)
- {
- windowsConsoleConverter = Ice::createWindowsStringConverter(GetConsoleOutputCP());
- }
-#endif
-}
-
-void
-Parser::exception(const Ice::Exception& ex)
-{
- try
- {
- ex.ice_throw();
- }
- catch(const ApplicationNotExistException& ex)
- {
- error("couldn't find application `" + ex.name + "'");
- }
- catch(const NodeNotExistException& ex)
- {
- error("couldn't find node `" + ex.name + "'");
- }
- catch(const RegistryNotExistException& ex)
- {
- error("couldn't find registry `" + ex.name + "'");
- }
- catch(const ServerNotExistException& ex)
- {
- error("couldn't find server `" + ex.id + "'");
- }
- catch(const AdapterNotExistException& ex)
- {
- error("couldn't find adapter `" + ex.id + "'");
- }
- catch(const ObjectNotRegisteredException& ex)
- {
- error("couldn't find object `" + _communicator->identityToString(ex.id) + "'");
- }
- catch(const ObjectExistsException& ex)
- {
- error("object `" + _communicator->identityToString(ex.id) + "' already exists");
- }
- catch(const DeploymentException& ex)
- {
- ostringstream s;
- s << ex << ":\n" << ex.reason;
- error(s.str());
- }
- catch(const PatchException& ex)
- {
- error(patchFailed(ex.reasons));
- }
- catch(const BadSignalException& ex)
- {
- ostringstream s;
- s << ex.reason;
- error(s.str());
- }
- catch(const NodeUnreachableException& ex)
- {
- error("node `" + ex.name + "' couldn't be reached:\n" + ex.reason);
- }
- catch(const RegistryUnreachableException& ex)
- {
- error("registry `" + ex.name + "' couldn't be reached:\n" + ex.reason);
- }
- catch(const ServerUnreachableException& ex)
- {
- error("server `" + ex.name + "' couldn't be reached:\n" + ex.reason);
- }
- catch(const AccessDeniedException& ex)
- {
- error("couldn't update the registry, the session from `" + ex.lockUserId + "' is updating the registry");
- }
- catch(const FileNotAvailableException& ex)
- {
- error("couldn't access file:\n" + ex.reason);
- }
- catch(const IceXML::ParserException& ex)
- {
- ostringstream s;
- s << ex;
- error(s.str());
- }
- catch(const Ice::LocalException& ex)
- {
- ostringstream s;
- s << "couldn't reach the IceGrid registry:\n" << ex;
- error(s.str());
- }
- catch(const Ice::Exception& ex)
- {
- ostringstream s;
- s << ex;
- error(s.str());
- }
-}
diff --git a/cpp/src/IceGrid/Parser.h b/cpp/src/IceGrid/Parser.h
index 9104cccc57f..45e7fe15df8 100644
--- a/cpp/src/IceGrid/Parser.h
+++ b/cpp/src/IceGrid/Parser.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/PlatformInfo.cpp b/cpp/src/IceGrid/PlatformInfo.cpp
index c64a121176e..f5d425ab8af 100644
--- a/cpp/src/IceGrid/PlatformInfo.cpp
+++ b/cpp/src/IceGrid/PlatformInfo.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/PlatformInfo.h b/cpp/src/IceGrid/PlatformInfo.h
index 04b1012a266..c66d73157c8 100644
--- a/cpp/src/IceGrid/PlatformInfo.h
+++ b/cpp/src/IceGrid/PlatformInfo.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/PluginFacadeI.cpp b/cpp/src/IceGrid/PluginFacadeI.cpp
index f285c85598e..9c43edb7c28 100644
--- a/cpp/src/IceGrid/PluginFacadeI.cpp
+++ b/cpp/src/IceGrid/PluginFacadeI.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/PluginFacadeI.h b/cpp/src/IceGrid/PluginFacadeI.h
index 0af98df65ca..c31dd1a4b6f 100644
--- a/cpp/src/IceGrid/PluginFacadeI.h
+++ b/cpp/src/IceGrid/PluginFacadeI.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/QueryI.cpp b/cpp/src/IceGrid/QueryI.cpp
index 713b197c36c..4225cfa3d17 100644
--- a/cpp/src/IceGrid/QueryI.cpp
+++ b/cpp/src/IceGrid/QueryI.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/QueryI.h b/cpp/src/IceGrid/QueryI.h
index e675f19d344..76a920107b0 100644
--- a/cpp/src/IceGrid/QueryI.h
+++ b/cpp/src/IceGrid/QueryI.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/ReapThread.cpp b/cpp/src/IceGrid/ReapThread.cpp
index a2994808faf..3da61cce70b 100644
--- a/cpp/src/IceGrid/ReapThread.cpp
+++ b/cpp/src/IceGrid/ReapThread.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/ReapThread.h b/cpp/src/IceGrid/ReapThread.h
index 2c5cae00cab..2174a2dbb8b 100644
--- a/cpp/src/IceGrid/ReapThread.h
+++ b/cpp/src/IceGrid/ReapThread.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/RegistryAdminRouter.cpp b/cpp/src/IceGrid/RegistryAdminRouter.cpp
index 2edbf27005d..294d802507e 100644
--- a/cpp/src/IceGrid/RegistryAdminRouter.cpp
+++ b/cpp/src/IceGrid/RegistryAdminRouter.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/RegistryAdminRouter.h b/cpp/src/IceGrid/RegistryAdminRouter.h
index 244cf4170ca..7030f7c8ed2 100644
--- a/cpp/src/IceGrid/RegistryAdminRouter.h
+++ b/cpp/src/IceGrid/RegistryAdminRouter.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/RegistryI.cpp b/cpp/src/IceGrid/RegistryI.cpp
index 5f3de89880c..09c81d5a40f 100644
--- a/cpp/src/IceGrid/RegistryI.cpp
+++ b/cpp/src/IceGrid/RegistryI.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/RegistryI.h b/cpp/src/IceGrid/RegistryI.h
index 8fa74eb3938..e4e8d436893 100644
--- a/cpp/src/IceGrid/RegistryI.h
+++ b/cpp/src/IceGrid/RegistryI.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/ReplicaCache.cpp b/cpp/src/IceGrid/ReplicaCache.cpp
index 117c6775ee7..d7e183da212 100644
--- a/cpp/src/IceGrid/ReplicaCache.cpp
+++ b/cpp/src/IceGrid/ReplicaCache.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/ReplicaCache.h b/cpp/src/IceGrid/ReplicaCache.h
index 8a4aadccbcf..8cbc31c0918 100644
--- a/cpp/src/IceGrid/ReplicaCache.h
+++ b/cpp/src/IceGrid/ReplicaCache.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/ReplicaSessionI.cpp b/cpp/src/IceGrid/ReplicaSessionI.cpp
index acb3f2e56d2..70d90c307fe 100644
--- a/cpp/src/IceGrid/ReplicaSessionI.cpp
+++ b/cpp/src/IceGrid/ReplicaSessionI.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/ReplicaSessionI.h b/cpp/src/IceGrid/ReplicaSessionI.h
index a2a191bff04..579a30d29d3 100644
--- a/cpp/src/IceGrid/ReplicaSessionI.h
+++ b/cpp/src/IceGrid/ReplicaSessionI.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/ReplicaSessionManager.cpp b/cpp/src/IceGrid/ReplicaSessionManager.cpp
index dfc55e299bd..d42a0bbbed7 100644
--- a/cpp/src/IceGrid/ReplicaSessionManager.cpp
+++ b/cpp/src/IceGrid/ReplicaSessionManager.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/ReplicaSessionManager.h b/cpp/src/IceGrid/ReplicaSessionManager.h
index c188d1adb14..78d88f70b6a 100644
--- a/cpp/src/IceGrid/ReplicaSessionManager.h
+++ b/cpp/src/IceGrid/ReplicaSessionManager.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Scanner.cpp b/cpp/src/IceGrid/Scanner.cpp
index 7424fb48374..860914b9389 100644
--- a/cpp/src/IceGrid/Scanner.cpp
+++ b/cpp/src/IceGrid/Scanner.cpp
@@ -478,7 +478,7 @@ char *yytext;
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Scanner.l b/cpp/src/IceGrid/Scanner.l
index f8ef6731fc8..9985c210db9 100644
--- a/cpp/src/IceGrid/Scanner.l
+++ b/cpp/src/IceGrid/Scanner.l
@@ -2,7 +2,7 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/ServerAdapterI.cpp b/cpp/src/IceGrid/ServerAdapterI.cpp
index f1551681e13..d01a824c80d 100644
--- a/cpp/src/IceGrid/ServerAdapterI.cpp
+++ b/cpp/src/IceGrid/ServerAdapterI.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/ServerAdapterI.h b/cpp/src/IceGrid/ServerAdapterI.h
index 476960a604c..aaa39078a0a 100644
--- a/cpp/src/IceGrid/ServerAdapterI.h
+++ b/cpp/src/IceGrid/ServerAdapterI.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/ServerCache.cpp b/cpp/src/IceGrid/ServerCache.cpp
index bafafa42553..7051f608430 100644
--- a/cpp/src/IceGrid/ServerCache.cpp
+++ b/cpp/src/IceGrid/ServerCache.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/ServerCache.h b/cpp/src/IceGrid/ServerCache.h
index 8379fe4f8c3..f73039e2f08 100644
--- a/cpp/src/IceGrid/ServerCache.h
+++ b/cpp/src/IceGrid/ServerCache.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/ServerI.cpp b/cpp/src/IceGrid/ServerI.cpp
index 891241ebe2f..c74f85af73b 100644
--- a/cpp/src/IceGrid/ServerI.cpp
+++ b/cpp/src/IceGrid/ServerI.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/ServerI.h b/cpp/src/IceGrid/ServerI.h
index d2fc8ccc28b..7dcde8608c8 100644
--- a/cpp/src/IceGrid/ServerI.h
+++ b/cpp/src/IceGrid/ServerI.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/SessionI.cpp b/cpp/src/IceGrid/SessionI.cpp
index 5b018a5dfe9..4cecfef3bf2 100644
--- a/cpp/src/IceGrid/SessionI.cpp
+++ b/cpp/src/IceGrid/SessionI.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/SessionI.h b/cpp/src/IceGrid/SessionI.h
index 2eac4117fa2..9cd627ffc24 100644
--- a/cpp/src/IceGrid/SessionI.h
+++ b/cpp/src/IceGrid/SessionI.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/SessionManager.cpp b/cpp/src/IceGrid/SessionManager.cpp
index 1aa2701574e..f7908fe3ec9 100644
--- a/cpp/src/IceGrid/SessionManager.cpp
+++ b/cpp/src/IceGrid/SessionManager.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/SessionManager.h b/cpp/src/IceGrid/SessionManager.h
index 1853e3b4a62..21f2cd5b524 100644
--- a/cpp/src/IceGrid/SessionManager.h
+++ b/cpp/src/IceGrid/SessionManager.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/SessionServantManager.cpp b/cpp/src/IceGrid/SessionServantManager.cpp
index 70b0d004e98..066d39d589e 100644
--- a/cpp/src/IceGrid/SessionServantManager.cpp
+++ b/cpp/src/IceGrid/SessionServantManager.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/SessionServantManager.h b/cpp/src/IceGrid/SessionServantManager.h
index 15ca8e0af32..45004d0b4fe 100644
--- a/cpp/src/IceGrid/SessionServantManager.h
+++ b/cpp/src/IceGrid/SessionServantManager.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Topics.cpp b/cpp/src/IceGrid/Topics.cpp
index 140c2673140..568e753f16d 100644
--- a/cpp/src/IceGrid/Topics.cpp
+++ b/cpp/src/IceGrid/Topics.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Topics.h b/cpp/src/IceGrid/Topics.h
index 44affbacec3..a17fcc0005e 100644
--- a/cpp/src/IceGrid/Topics.h
+++ b/cpp/src/IceGrid/Topics.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/TraceLevels.cpp b/cpp/src/IceGrid/TraceLevels.cpp
index bf227a2d5a7..86b4b913e2d 100644
--- a/cpp/src/IceGrid/TraceLevels.cpp
+++ b/cpp/src/IceGrid/TraceLevels.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/TraceLevels.h b/cpp/src/IceGrid/TraceLevels.h
index 399f423b0cc..5a35dcf78af 100644
--- a/cpp/src/IceGrid/TraceLevels.h
+++ b/cpp/src/IceGrid/TraceLevels.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Util.cpp b/cpp/src/IceGrid/Util.cpp
index c56e30717c0..aa88d4a54f5 100644
--- a/cpp/src/IceGrid/Util.cpp
+++ b/cpp/src/IceGrid/Util.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/Util.h b/cpp/src/IceGrid/Util.h
index 75e6be83dab..2bf1cff7f90 100644
--- a/cpp/src/IceGrid/Util.h
+++ b/cpp/src/IceGrid/Util.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/WaitQueue.cpp b/cpp/src/IceGrid/WaitQueue.cpp
index 802fcd3674a..a0f6812f1be 100644
--- a/cpp/src/IceGrid/WaitQueue.cpp
+++ b/cpp/src/IceGrid/WaitQueue.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/WaitQueue.h b/cpp/src/IceGrid/WaitQueue.h
index 42559ea0185..000b717318e 100644
--- a/cpp/src/IceGrid/WaitQueue.h
+++ b/cpp/src/IceGrid/WaitQueue.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/WellKnownObjectsManager.cpp b/cpp/src/IceGrid/WellKnownObjectsManager.cpp
index 20974539dd0..391a2be3b82 100644
--- a/cpp/src/IceGrid/WellKnownObjectsManager.cpp
+++ b/cpp/src/IceGrid/WellKnownObjectsManager.cpp
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
diff --git a/cpp/src/IceGrid/WellKnownObjectsManager.h b/cpp/src/IceGrid/WellKnownObjectsManager.h
index aa9be0e8509..38d8006c938 100644
--- a/cpp/src/IceGrid/WellKnownObjectsManager.h
+++ b/cpp/src/IceGrid/WellKnownObjectsManager.h
@@ -1,6 +1,6 @@
// **********************************************************************
//
-// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.
+// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.