From d51bacad6b00da68c9b3ef8a2361408fbcf0b48a Mon Sep 17 00:00:00 2001 From: yamuna Date: Thu, 24 Apr 2003 18:38:32 +0000 Subject: *** empty log message *** --- .../Asynch_Three_Stage/Connection_Manager.cpp | 113 +++++++++++++++------ .../Asynch_Three_Stage/Connection_Manager.h | 2 +- .../AVStreams/Asynch_Three_Stage/distributer.cpp | 8 +- .../AVStreams/Asynch_Three_Stage/receiver.cpp | 8 +- .../tests/AVStreams/Asynch_Three_Stage/sender.cpp | 10 +- 5 files changed, 108 insertions(+), 33 deletions(-) diff --git a/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/Connection_Manager.cpp b/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/Connection_Manager.cpp index e7ebc01b795..3cf4cf1ae21 100644 --- a/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/Connection_Manager.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/Connection_Manager.cpp @@ -11,15 +11,17 @@ Connection_Manager::~Connection_Manager (void) } void -Connection_Manager::load_ep_addr (char* file_name) +Connection_Manager::load_ep_addr (const char* file_name) { FILE* addr_file = ACE_OS::fopen (file_name, "r"); if (addr_file == 0) - ACE_ERROR_RETURN ((LM_DEBUG, - "Cannot open addr file %s\n", - file_name), - -1); + { + ACE_ERROR ((LM_DEBUG, + "Cannot open addr file %s\n", + file_name)); + return; + } else ACE_DEBUG ((LM_DEBUG, "Addr file opened successfully\n")); @@ -27,48 +29,71 @@ Connection_Manager::load_ep_addr (char* file_name) while (1) { char buf [BUFSIZ]; + // Read from the file into a buffer + + + /* int n = ACE_OS::fread (buf, 1, BUFSIZ, addr_file); - - if (n < 0) - ACE_ERROR_RETURN ((LM_ERROR, - "Sender::pace_data fread failed\n"), - -1); + */ - if (n == 0) + if ((ACE_OS::fgets (buf,BUFSIZ,addr_file)) == NULL) { // At end of file break the loop and end the sender. if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"End of Addr file\n")); break; } + + + if (TAO_debug_level > 0) + ACE_DEBUG ((LM_DEBUG, + "%s\n", + buf)); Endpoint_Addresses* addr; ACE_NEW (addr, Endpoint_Addresses); - TAO_Tokenizer addr_tokenizer (address,'/'); + TAO_Tokenizer addr_tokenizer (buf,'/'); ACE_CString flowname; if (addr_tokenizer [0] == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "Corresponding flow name not specified for endpoint addresses\n"), - -1); + { + ACE_ERROR ((LM_ERROR, + "Corresponding flow name not specified for endpoint addresses\n")); + return; + } else - flowname += addr_tokenizer [0]; + flowname += addr_tokenizer [0]; if (addr_tokenizer [1] != 0) - addr->sender_addr += addr_tokenizer [1]; + addr->sender_addr += CORBA::string_dup (addr_tokenizer [1]); if (addr_tokenizer [2] != 0) - addr->receiver_addr += addr_tokenizer [2]; + addr->receiver_addr += CORBA::string_dup (addr_tokenizer [2]); + + int result = ep_addr_.bind (flowname, + addr); + if (result == 0) + { + if (TAO_debug_level > 0) + ACE_DEBUG ((LM_DEBUG, + "Flowname %s Bound Successfully\n", + flowname.c_str ())); + } + else if (result == 1) + ACE_DEBUG ((LM_DEBUG, + "Flowname %s already exists\n", + flowname.c_str ())); + else ACE_DEBUG ((LM_DEBUG, + "Flowname %s Bound Failed\n", + flowname.c_str ())); - ep_addr_.bind (flowname, - addr); } @@ -264,12 +289,26 @@ Connection_Manager::connect_to_receivers (AVStreams::MMDevice_ptr sender ACE_CString flowname = (*iterator).ext_id_; - Endpoint_Addresses* addr; - ep_addr_.find (floname, + + Endpoint_Addresses* addr = 0; + ep_addr_.find (flowname, addr); - ACE_INET_Addr sender_addr (addr->sender_addr.c_str ()); - ACE_INET_Addr receiver_addr (addr->receiver_addr); + ACE_CString sender_addr_str; + ACE_CString receiver_addr_str; + + if (addr != 0) + { + sender_addr_str = addr->sender_addr; + receiver_addr_str = addr->receiver_addr; + } + else ACE_DEBUG ((LM_DEBUG, + "No endpoint address for flowname %s\n", + flowname.c_str ())); + + ACE_INET_Addr receiver_addr (receiver_addr_str.c_str ()); + ACE_INET_Addr sender_addr (sender_addr_str.c_str ()); + // Create the forward flow specification to describe the flow. TAO_Forward_FlowSpec_Entry sender_entry (flowname.c_str (), @@ -281,6 +320,7 @@ Connection_Manager::connect_to_receivers (AVStreams::MMDevice_ptr sender sender_entry.set_peer_addr (&receiver_addr); + // Set the flow specification for the stream between receiver // and distributer AVStreams::flowSpec flow_spec (1); @@ -446,24 +486,39 @@ Connection_Manager::connect_to_sender (ACE_ENV_SINGLE_ARG_DECL) "_" + this->receiver_name_; + Endpoint_Addresses* addr; - ep_addr_.find (floname, + ep_addr_.find (flowname, addr); - ACE_INET_Addr sender_addr (addr->sender_addr.c_str ()); - ACE_INET_Addr receiver_addr (addr->receiver_addr.c_str ()); + ACE_CString sender_addr_str; + ACE_CString receiver_addr_str; + if (addr != 0) + { + sender_addr_str = addr->sender_addr; + receiver_addr_str = addr->receiver_addr; + + ACE_DEBUG ((LM_DEBUG, + "Address Strings %s %s\n", + sender_addr_str.c_str (), + receiver_addr_str.c_str ())); + } + ACE_INET_Addr sender_addr (sender_addr_str.c_str ()); + ACE_INET_Addr receiver_addr (receiver_addr_str.c_str ()); + // Create the forward flow specification to describe the flow. TAO_Forward_FlowSpec_Entry sender_entry (flowname.c_str (), "IN", "USER_DEFINED", "", "UDP", - &local_addr); - + &sender_addr); + sender_entry.set_peer_addr (&receiver_addr); + // Set the flow specification for the stream between sender and // receiver. AVStreams::flowSpec flow_spec (1); diff --git a/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/Connection_Manager.h b/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/Connection_Manager.h index 1d79d1e6e3d..f27b97eef2f 100644 --- a/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/Connection_Manager.h +++ b/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/Connection_Manager.h @@ -112,7 +112,7 @@ public: Protocol_Objects &protocol_objects (void); StreamCtrls &streamctrls (void); - void load_ep_addr (char* file_name); + void load_ep_addr (const char* file_name); protected: diff --git a/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/distributer.cpp b/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/distributer.cpp index 5c21b5c9225..de4512bf7da 100644 --- a/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/distributer.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/distributer.cpp @@ -97,6 +97,7 @@ Distributer::Distributer (void) : sender_name_ ("sender") , distributer_name_ ("distributer") , done_ (0) + , addr_file_ ("addr_file") { } @@ -115,13 +116,16 @@ Distributer::parse_args (int argc, char **argv) { // Parse command line arguments - ACE_Get_Opt opts (argc, argv, "s:r:"); + ACE_Get_Opt opts (argc, argv, "s:r:a:"); int c; while ((c= opts ()) != -1) { switch (c) { + case 'a': + this->addr_file_ = opts.opt_arg (); + break; case 's': this->sender_name_ = opts.opt_arg (); break; @@ -168,6 +172,8 @@ Distributer::init (int argc, if (result != 0) return result; + this->connection_manager_.load_ep_addr (this->addr_file_.c_str ()); + ACE_NEW_RETURN (this->distributer_sender_mmdevice_, TAO_MMDevice (&this->sender_endpoint_strategy_), -1); diff --git a/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/receiver.cpp b/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/receiver.cpp index a2cd8fade22..4c1d94125a0 100644 --- a/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/receiver.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/receiver.cpp @@ -84,6 +84,7 @@ Receiver_Callback::handle_destroy (void) Receiver::Receiver (void) : mmdevice_ (0), output_file_name_ ("output"), + addr_file_ ("addr_file"), sender_name_ ("distributer"), receiver_name_ ("receiver") { @@ -111,6 +112,8 @@ Receiver::init (int, if (result != 0) return result; + this->connection_manager_.load_ep_addr (this->addr_file_.c_str ()); + // Register the receiver mmdevice object with the ORB ACE_NEW_RETURN (this->mmdevice_, TAO_MMDevice (&this->reactive_strategy_), @@ -145,13 +148,16 @@ Receiver::parse_args (int argc, // Parse the command line arguments ACE_Get_Opt opts (argc, argv, - "f:s:r:"); + "f:s:r:a:"); int c; while ((c = opts ()) != -1) { switch (c) { + case 'a': + this->addr_file_ = opts.opt_arg (); + break; case 'f': this->output_file_name_ = opts.opt_arg (); break; diff --git a/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/sender.cpp b/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/sender.cpp index d440d1f55fb..6fb8655f858 100644 --- a/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/sender.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/sender.cpp @@ -41,6 +41,7 @@ Sender::Sender (void) frame_count_ (0), filename_ ("input"), input_file_ (0), + addr_file_ ("addr_file"), frame_rate_ (10.0), mb_ (BUFSIZ), sender_name_ ("sender") @@ -52,13 +53,16 @@ Sender::parse_args (int argc, char **argv) { // Parse command line arguments - ACE_Get_Opt opts (argc, argv, "s:f:r:d"); + ACE_Get_Opt opts (argc, argv, "s:f:r:da:"); int c; while ((c= opts ()) != -1) { switch (c) { + case 'a': + this->addr_file_ = opts.opt_arg (); + break; case 'f': this->filename_ = opts.opt_arg (); break; @@ -97,6 +101,8 @@ Sender::init (int argc, if (result != 0) return result; + + // Parse the command line arguments result = this->parse_args (argc, @@ -104,6 +110,8 @@ Sender::init (int argc, if (result != 0) return result; + this->connection_manager_.load_ep_addr (this->addr_file_.c_str ()); + // Open file to read. this->input_file_ = ACE_OS::fopen (this->filename_.c_str (), -- cgit v1.2.1