summaryrefslogtreecommitdiff
path: root/examples/Misc/test_XtReactor1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/Misc/test_XtReactor1.cpp')
-rw-r--r--examples/Misc/test_XtReactor1.cpp175
1 files changed, 0 insertions, 175 deletions
diff --git a/examples/Misc/test_XtReactor1.cpp b/examples/Misc/test_XtReactor1.cpp
deleted file mode 100644
index d2d94036285..00000000000
--- a/examples/Misc/test_XtReactor1.cpp
+++ /dev/null
@@ -1,175 +0,0 @@
-// $Id$
-
-// The following is another test that exercises the Eric C. Newton's
-// <ecn@clark.net> XtReactor implementation.
-
-#include "ace/XtReactor.h"
-#include "ace/Reactor.h"
-#include "ace/Message_Block.h"
-
-ACE_RCSID(Misc, test_XtReactor1, "$Id$")
-
-#if defined (ACE_HAS_XT)
-#define String XtString
-#include <Xm/PushB.h>
-
-class Stdout : public ACE_Event_Handler
-{
-public:
- Stdout (ACE_Reactor * r)
- : reactor_ (r),
- msg_ (1000000) // Make a very big message block.
- {
- int flags = ACE_OS::fcntl (ACE_STDOUT, F_GETFL);
-
- if (flags != -1
- && ACE_OS::fcntl (ACE_STDOUT,
- F_SETFL, flags | O_NONBLOCK) != -1)
- return;
- else
- ACE_DEBUG ((LM_DEBUG,
- "Unable to set stdout to non-block."));
- }
-
- ACE_HANDLE get_handle (void) const { return ACE_STDOUT; }
-
- int handle_output (ACE_HANDLE)
- {
- char *s = msg_.rd_ptr ();
-
- if (ACE_OS::write (ACE_STDOUT, s, 1) == 1)
- {
- ACE_DEBUG ((LM_DEBUG,
- "wrote output '%d'\n",
- (int) *s));
- msg_.rd_ptr (1);
- }
-
- if (msg_.length () == 0)
- {
- reactor_->remove_handler (this,
- ACE_Event_Handler::WRITE_MASK);
- msg_.rd_ptr (msg_.base ());
- msg_.wr_ptr (msg_.base ());
- }
- return 0;
- }
-
- void put (char c)
- {
- if (msg_.length () == 0)
- reactor_->register_handler (this,
- ACE_Event_Handler::WRITE_MASK);
-
- if (msg_.wr_ptr () < msg_.end ())
- {
- *msg_.wr_ptr () = c;
- msg_.wr_ptr (1);
- }
- else
- ACE_DEBUG ((LM_DEBUG,
- "Oops... data falling off the end of the buffer!\n"));
- }
-
-private:
- ACE_Reactor *reactor_;
- ACE_Message_Block msg_;
-};
-
-class Stdin : public ACE_Event_Handler
-{
-public:
- Stdin (Stdout *out)
- : out_ (out) {}
-
- ACE_HANDLE get_handle () const { return ACE_STDIN; }
-
- int handle_input (ACE_HANDLE)
- {
- char c;
-
- if (ACE_OS::read (ACE_STDIN, &c, 1) == 1)
- out_->put (c);
-
- return 0;
- }
-
- int handle_timeout (const ACE_Time_Value &tv, const void *)
- {
- ACE_DEBUG ((LM_DEBUG,
- "Timeout! %f\n",
- (double) (tv.msec () / 1000.)));
- return 0;
- }
-
-private:
- Stdout *out_;
-};
-
-static void
-ActivateCB (Widget, XtPointer, XtPointer)
-{
- ACE_DEBUG ((LM_DEBUG,
- "Button pushed!\n"));
-}
-
-int
-main (int argc, char**argv)
-{
- // The worlds most useless user interface
- Widget top_level = XtVaAppInitialize (NULL,
- "buttontest",
- NULL,
- 0,
- &argc,
- argv,
- NULL,
- NULL);
- Widget button = XmCreatePushButton (top_level,
- "change",
- 0,
- 0);
- XtManageChild (button);
- XtAddCallback (button,
- XmNactivateCallback,
- ActivateCB,
- NULL);
-
- // A reactor beastie.
- ACE_XtReactor xreactor (XtWidgetToApplicationContext (top_level));
- ACE_Reactor reactor (&xreactor);
-
- // Print a message when data is recv'd on stdin...
- ACE_Event_Handler *stdin_;
- ACE_NEW_RETURN (stdin_,
- Stdin (new Stdout (&reactor)),
- -1);
- reactor.register_handler (stdin_,
- ACE_Event_Handler::READ_MASK);
-
- // Print a message every 10 seconds.
- if (reactor.schedule_timer (stdin_, 0,
- ACE_Time_Value (10),
- ACE_Time_Value (10)) == -1)
- ACE_ERROR_RETURN ((LM_ERROR,
- "%p\n",
- "schedule_timer"),
- -1);
-
- // Show the top_level widget.
- XtRealizeWidget (top_level);
-
- // Demonstrate Reactor/Xt event loop unification.
- XtAppMainLoop (XtWidgetToApplicationContext (top_level));
-
- return 0;
-}
-#else
-int
-main (int, char *[])
-{
- ACE_ERROR_RETURN ((LM_ERROR,
- "XT not configured for this platform\n"),
- 0);
-}
-#endif /* ACE_HAS_XT */