diff options
author | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-09-11 20:34:27 +0000 |
---|---|---|
committer | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-09-11 20:34:27 +0000 |
commit | 74bc324609254cb7ab193f19105f4e40c2e7fc25 (patch) | |
tree | 4632f6a914920cc3c05ec3aa61b6a83bd5359ba9 /TAO/tests | |
parent | 4b3de67fefbc7c5cfe98b11d233cfb0c1821a9a6 (diff) | |
download | ATCD-74bc324609254cb7ab193f19105f4e40c2e7fc25.tar.gz |
*** empty log message ***
Diffstat (limited to 'TAO/tests')
-rw-r--r-- | TAO/tests/Simple/chat/Broadcaster.idl | 26 | ||||
-rw-r--r-- | TAO/tests/Simple/chat/Broadcaster_i.cpp | 85 | ||||
-rw-r--r-- | TAO/tests/Simple/chat/Broadcaster_i.h | 29 | ||||
-rw-r--r-- | TAO/tests/Simple/chat/Receiver.idl | 2 | ||||
-rw-r--r-- | TAO/tests/Simple/chat/Receiver_i.cpp | 15 | ||||
-rw-r--r-- | TAO/tests/Simple/chat/Receiver_i.h | 3 | ||||
-rw-r--r-- | TAO/tests/Simple/chat/client.cpp (renamed from TAO/tests/Simple/chat/Chat.cpp) | 20 | ||||
-rw-r--r-- | TAO/tests/Simple/chat/client.h (renamed from TAO/tests/Simple/chat/Chat.h) | 0 |
8 files changed, 75 insertions, 105 deletions
diff --git a/TAO/tests/Simple/chat/Broadcaster.idl b/TAO/tests/Simple/chat/Broadcaster.idl index 932486f2a65..6398929e592 100644 --- a/TAO/tests/Simple/chat/Broadcaster.idl +++ b/TAO/tests/Simple/chat/Broadcaster.idl @@ -9,15 +9,25 @@ interface Broadcaster // It broadcasts messages received from one registered client to all // its registered clients. - long register (in Receiver receiver, in string nickname); - // registers a Receiver with the chat server. - // a registered client must call un_register before it goes away. - // returns 0 on success. + exception CannotAdd + { + string reason_; + }; - long un_register (in Receiver receiver); - // unregisters a Receiver. - // returns 0 on success. + exception CannotRemove + { + string reason_; + }; + + void add (in Receiver receiver) + raises (CannotAdd); + // Registers a Receiver with the chat server. A registered client + // must call un_register before it goes away. + + void remove (in Receiver receiver) + raises (CannotRemove); + // Unregisters a Receiver. void say (in string text); - // say something to all registered clients. + // Say something to all registered clients. }; diff --git a/TAO/tests/Simple/chat/Broadcaster_i.cpp b/TAO/tests/Simple/chat/Broadcaster_i.cpp index 6a8f28ef421..543a0781346 100644 --- a/TAO/tests/Simple/chat/Broadcaster_i.cpp +++ b/TAO/tests/Simple/chat/Broadcaster_i.cpp @@ -19,93 +19,56 @@ #include "Broadcaster_i.h" -Broadcaster_i::Broadcaster_i() +Broadcaster_i::Broadcaster_i (void) { } -Broadcaster_i::~Broadcaster_i() +Broadcaster_i::~Broadcaster_i (void) { - // clean up the receiver_set_ - Receiver_Set_Iterator iter(receiver_set_); - - Receiver_Data **receiver_data_ptr; - - if (iter.first() == 1) - while (iter.done() == 0) - { - iter.next(receiver_data_ptr); - - delete (*receiver_data_ptr)->nick_; - - iter.advance(); - } } -CORBA::Long Broadcaster_i:: _cxx_register (Receiver_ptr receiver, - const char * nickname, CORBA::Environment &_tao_environment) +void +Broadcaster_i::add (Receiver_ptr receiver, + CORBA::Environment &environment) { - // check if the set is full. - if (receiver_set_.is_full() == 1 ) - { - return -1; - } - - Receiver_Data *receiver_data_ptr; - - // create a Receiver_Data object. - ACE_NEW_RETURN(receiver_data_ptr, Receiver_Data(), -1); - // store the client information. - receiver_data_ptr->receiver_ptr_ = Receiver::_duplicate(receiver); - receiver_data_ptr->nick_ = CORBA::string_dup (nickname); + Receiver_var receiver = Receiver::_duplicate (receiver); // insert the Receiver reference to the set - if (receiver_set_.insert(receiver_data_ptr) == -1) + if (receiver_set_.insert (receiver) == -1) { - return -1; + // Raise exception + environment.exception (new Broadcaster::CannotAdd (/* reason */)); } - - return 0; } -CORBA::Long Broadcaster_i::un_register (Receiver_ptr receiver, - CORBA::Environment &_tao_environment) +void +Broadcaster_i::remove (Receiver_ptr receiver, + CORBA::Environment &environment) { - // NOT implemented yet.. - // - return -1; + } -void Broadcaster_i::say (const char * text, - CORBA::Environment &_tao_environment) +void +Broadcaster_i::say (const char *text, + CORBA::Environment &environment) { - // broadcast the message to all registered clients - Receiver_Set_Iterator iter(receiver_set_); - - Receiver_Data **receiver_data_ptr ; - CORBA::Environment TAO_TRY_ENV; TAO_TRY { - if (iter.first() == 1) - while (iter.done() == 0) - { - iter.next(receiver_data_ptr); - - char *msg = CORBA::string_dup(text); - //char *nick = (*receiver_data_ptr)->nick_; - - //(*receiver_data_ptr)->receiver_ptr_->message (nick, TAO_TRY_ENV); - (*receiver_data_ptr)->receiver_ptr_->message (msg, TAO_TRY_ENV); - - iter.advance(); - } + // Broadcast the message to all registered clients + for (RECEIVER_SET_ITERATOR iter = this->receiver_set_.begin (); + iter != this->receiver_set_.done (); + iter++) + { + (*iter)->message (msg, TAO_TRY_ENV); + } } TAO_CATCHANY { TAO_TRY_ENV.print_exception ("Broadcaster_i::say\t\n"); } - + TAO_ENDTRY; } diff --git a/TAO/tests/Simple/chat/Broadcaster_i.h b/TAO/tests/Simple/chat/Broadcaster_i.h index 75ebe5556f5..4b09a343265 100644 --- a/TAO/tests/Simple/chat/Broadcaster_i.h +++ b/TAO/tests/Simple/chat/Broadcaster_i.h @@ -23,6 +23,7 @@ #include "ReceiverC.h" #include "tao/TAO.h" #include "ace/Containers.h" +#include "ace/SString.h" class Broadcaster_i : public POA_Broadcaster { @@ -30,40 +31,42 @@ class Broadcaster_i : public POA_Broadcaster // The implementation of the Broadcaster class which is the servant // object for the chat server. - public: - Broadcaster_i(); +public: + Broadcaster_i (void); // Constructor - ~Broadcaster_i(); + ~Broadcaster_i (void); // Destructor - virtual CORBA::Long _cxx_register (Receiver_ptr receiver, - const char * nickname, CORBA::Environment &_tao_environment); + virtual CORBA::Long add (Receiver_ptr receiver, + const char * nickname, + CORBA::Environment &_tao_environment); // saves receiver references in a list. - virtual CORBA::Long un_register (Receiver_ptr receiver, CORBA::Environment &_tao_environment); + virtual CORBA::Long remove (Receiver_ptr receiver, + CORBA::Environment &_tao_environment); // removes receiver references from the list. virtual void say (const char * text, CORBA::Environment &_tao_environment); // called by Broadcaster clients to send messages. - private: +private: TAO_ORB_Manager orb_manager_; // the ORB manager. struct Receiver_Data { - Receiver_ptr receiver_ptr_; - char* nick_; + Receiver_var receiver_; + ACE_CString nick_; }; // per client info - typedef ACE_Unbounded_Set<Receiver_Data*> Receiver_Set; - typedef ACE_Unbounded_Set_Iterator<Receiver_Data*> Receiver_Set_Iterator; + typedef ACE_Unbounded_Set<Receiver_Data> RECEIVER_SET; + typedef ACE_Unbounded_Set_Iterator<Receiver_Data> RECEIVER_SET_ITERATOR; - Receiver_Set receiver_set_; - //set of registered clients. + RECEIVER_SET receiver_set_; + // set of registered clients. }; #endif /* BROADCASTER_I_H */ diff --git a/TAO/tests/Simple/chat/Receiver.idl b/TAO/tests/Simple/chat/Receiver.idl index 4f6ed3619aa..3a8ae47b3a7 100644 --- a/TAO/tests/Simple/chat/Receiver.idl +++ b/TAO/tests/Simple/chat/Receiver.idl @@ -9,6 +9,6 @@ interface Receiver void message (in string msg); // displays the message in the client application. - oneway void shutdown(); + oneway void shutdown (); // called by the chat server before it goes away. }; diff --git a/TAO/tests/Simple/chat/Receiver_i.cpp b/TAO/tests/Simple/chat/Receiver_i.cpp index a76780c7fbe..2797dfa7098 100644 --- a/TAO/tests/Simple/chat/Receiver_i.cpp +++ b/TAO/tests/Simple/chat/Receiver_i.cpp @@ -18,7 +18,8 @@ #include "Receiver_i.h" -Receiver_i::Receiver_i (void) : orb_(0) +Receiver_i::Receiver_i (void) + : orb_ (0) { } @@ -28,19 +29,17 @@ Receiver_i::~Receiver_i (void) } void -Receiver_i::message (const char * msg, CORBA::Environment &_tao_environment) +Receiver_i::message (const char *msg, + CORBA::Environment &) { - ACE_OS::printf(": "); - ACE_OS::printf(msg); - ACE_OS::printf("\n"); + ACE_DEBUG ((LM_DEBUG, ": %s\n", msg)); } void -Receiver_i::shutdown (CORBA::Environment &_tao_environment) +Receiver_i::shutdown (CORBA::Environment &) { ACE_DEBUG ((LM_DEBUG, - "%s\n", - "Receiver_i is shutting down")); + "Receiver_i is shutting down\n")); // Instruct the ORB to shutdown. this->orb_->shutdown (); diff --git a/TAO/tests/Simple/chat/Receiver_i.h b/TAO/tests/Simple/chat/Receiver_i.h index ddf2abf91c0..5dc74c82336 100644 --- a/TAO/tests/Simple/chat/Receiver_i.h +++ b/TAO/tests/Simple/chat/Receiver_i.h @@ -39,7 +39,8 @@ public: ~Receiver_i (void); // Destructor - virtual void message (const char * msg, CORBA::Environment &_tao_environment); + virtual void message (const char *msg, + CORBA::Environment &_tao_environment); // receives a message string virtual void shutdown (CORBA::Environment &_tao_environment); diff --git a/TAO/tests/Simple/chat/Chat.cpp b/TAO/tests/Simple/chat/client.cpp index 9d25b4504b2..356c65aa1ad 100644 --- a/TAO/tests/Simple/chat/Chat.cpp +++ b/TAO/tests/Simple/chat/client.cpp @@ -24,32 +24,26 @@ main(int argc, char* argv[]) { printf("\n============= Simple Chat ===========\n"); - char *nick; - char def_nick[] = "chat client"; + char *nick = "chat client"; - if (argc >=2 ) - { - nick = argv[1]; - } + if (argc >= 2) + nick = argv[1]; else - { - printf("\n usage: Chat <nickname>\n"); - nick = def_nick; - } + printf("\n usage: Chat <nickname>\n"); TAO_TRY { Chat_i chat_i ("chat.ior", nick); - if (chat_i.init (argc, argv) == -1 || chat_i.run() == -1) + if (chat_i.init (argc, argv) == -1 || chat_i.run () == -1) { - return 1; + return -1; } } TAO_CATCHANY { TAO_TRY_ENV.print_exception ("chat::main\t\n"); - return 1; + return -1; } TAO_ENDTRY; diff --git a/TAO/tests/Simple/chat/Chat.h b/TAO/tests/Simple/chat/client.h index d4108612b8d..d4108612b8d 100644 --- a/TAO/tests/Simple/chat/Chat.h +++ b/TAO/tests/Simple/chat/client.h |