summaryrefslogtreecommitdiff
path: root/cpp/include/Ice/Application.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/include/Ice/Application.h')
-rw-r--r--cpp/include/Ice/Application.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/cpp/include/Ice/Application.h b/cpp/include/Ice/Application.h
index 4a05124fff8..45686caae85 100644
--- a/cpp/include/Ice/Application.h
+++ b/cpp/include/Ice/Application.h
@@ -16,6 +16,12 @@
namespace Ice
{
+#ifdef _WIN32
+BOOL WINAPI interruptHandler(DWORD);
+#else
+void interruptHandler(int);
+#endif
+
class ICE_API Application : public IceUtil::noncopyable
{
public:
@@ -59,10 +65,23 @@ public:
static void ignoreInterrupt();
static void defaultInterrupt();
+ //
+ // Return true if communicator()->shutdown() has been called
+ // because of an interrupt.
+ //
+ static bool isShutdownFromInterrupt();
+
private:
static const char* _appName;
static CommunicatorPtr _communicator;
+ static bool _shutdown;
+
+#ifdef _WIN32
+ friend BOOL WINAPI interruptHandler(DWORD);
+#else
+ friend void interruptHandler(int);
+#endif
};
};