diff options
Diffstat (limited to 'TAO/tests/AMI_Buffering/AMI_Buffering.h')
-rw-r--r-- | TAO/tests/AMI_Buffering/AMI_Buffering.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/TAO/tests/AMI_Buffering/AMI_Buffering.h b/TAO/tests/AMI_Buffering/AMI_Buffering.h new file mode 100644 index 00000000000..57b8390347c --- /dev/null +++ b/TAO/tests/AMI_Buffering/AMI_Buffering.h @@ -0,0 +1,64 @@ +// +// $Id$ +// + +#ifndef AMI_BUFFERING_H +#define AMI_BUFFERING_H +#include /**/ "ace/pre.h" + +#include "TestS.h" + +/// Implement the Test::AMI_Buffering interface +class AMI_Buffering + : public virtual POA_Test::AMI_Buffering +{ +public: + /// Constructor + AMI_Buffering (CORBA::ORB_ptr orb, + Test::AMI_Buffering_Admin_ptr admin); + + // = The skeleton methods + virtual void receive_data (const Test::Payload &the_payload + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void flush (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void sync (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + + /// internal implementation of shutdown. This + void try_shutdown (ACE_ENV_SINGLE_ARG_DECL); + + class Nest_Guard + { + public: + Nest_Guard (AMI_Buffering &); + ~Nest_Guard (void); + private: + AMI_Buffering &target_; + }; + + /// Use an ORB reference to shutdown the application. + CORBA::ORB_var orb_; + + /// Report request progress to this interface + Test::AMI_Buffering_Admin_var admin_; + + /// nesting depth count for receive_data processing + int nest_; + + /// maximum nesting depth reached during run + int max_nest_; + + /// flag indicating that a shutdown is required as soon + /// as the nest count reaches 0. + bool must_shutdown_; +}; + +#include /**/ "ace/post.h" +#endif /* AMI_BUFFERING_H */ |