summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/AV/sfp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/AV/sfp.cpp')
-rw-r--r--TAO/orbsvcs/orbsvcs/AV/sfp.cpp85
1 files changed, 17 insertions, 68 deletions
diff --git a/TAO/orbsvcs/orbsvcs/AV/sfp.cpp b/TAO/orbsvcs/orbsvcs/AV/sfp.cpp
index f103e7aa9a5..134dea31de0 100644
--- a/TAO/orbsvcs/orbsvcs/AV/sfp.cpp
+++ b/TAO/orbsvcs/orbsvcs/AV/sfp.cpp
@@ -3,23 +3,6 @@
// $Id$
-// default arguments to pass to use for the ORB
-const char *TAO_SFP::TAO_SFP_ORB_ARGUMENTS = "-ORBobjrefstyle URL";
-
-// SFP magic numbers
-const char *TAO_SFP::TAO_SFP_MAGIC_NUMBER = "=SFP";
-const char *TAO_SFP::TAO_SFP_FRAGMENT_MAGIC_NUMBER = "FRAG";
-const char *TAO_SFP::TAO_SFP_START_MAGIC_NUMBER = "=STA";
-const char *TAO_SFP::TAO_SFP_CREDIT_MAGIC_NUMBER = "=CRE";
-const char *TAO_SFP::TAO_SFP_STARTREPLY_MAGIC_NUMBER = "=STR";
-
-// SFP version 1.0
-const unsigned char TAO_SFP::TAO_SFP_MAJOR_VERSION = 1;
-const unsigned char TAO_SFP::TAO_SFP_MINOR_VERSION = 0;
-
-// lengths of various SFP headers
-const unsigned char TAO_SFP::TAO_SFP_FRAME_HEADER_LEN = 12;
-
int
operator< (const TAO_SFP_Fragment_Node& left,
const TAO_SFP_Fragment_Node& right)
@@ -35,10 +18,10 @@ TAO_SFP::TAO_SFP (CORBA::ORB_ptr orb,
SFP_Callback *callback)
:orb_ (orb),
reactor_ (reactor),
- start_tries_ (10),
- startReply_tries_ (10),
timeout1_ (timeout1),
timeout2_ (timeout2),
+ start_tries_ (10),
+ startReply_tries_ (10),
callback_ (callback),
sequence_num_ (0),
credit_num_ (10),
@@ -229,6 +212,7 @@ TAO_SFP::start_stream (const char *local_addr,int Credit)
}
else
ACE_ERROR_RETURN ((LM_ERROR,"Invalid messaged received while Start expected\n"),-1);
+ return 0;
}
// Sends the ACE_Message_Block data as a frame, fragmenting if necessary.
@@ -490,8 +474,7 @@ TAO_SFP::send_cdr_buffer (TAO_OutputCDR &cdr,ACE_Message_Block *mb)
// from the heap.
iovec iov[TAO_WRITEV_MAX];
int iovcnt = 0;
- const ACE_Message_Block* b = 0;
- for (b = cdr.begin ();
+ for (const ACE_Message_Block* b = cdr.begin ();
b != cdr.end () && iovcnt < TAO_WRITEV_MAX;
b = b->cont ())
{
@@ -587,9 +570,6 @@ TAO_SFP::handle_timeout (const ACE_Time_Value &tv,
{
this->end_stream ();
}
- break;
- default:
- ACE_DEBUG ((LM_DEBUG,"Handle_timeout: No Action in this state %d",this->state_));
}
return 0;
}
@@ -725,8 +705,6 @@ TAO_SFP::handle_input (ACE_HANDLE fd)
this->callback_->end_stream ();
return -1;
}
- default:
- break;
}
break;
case REPLY_RECEIVED:
@@ -744,14 +722,7 @@ TAO_SFP::handle_input (ACE_HANDLE fd)
else
ACE_DEBUG ((LM_DEBUG,"start reply consumed\n"));
}
- break;
- default:
- ACE_DEBUG ((LM_DEBUG,"Invalid message in state REPLY_RECEIVED\n"));
- break;
}
- break;
- default:
- break;
}
return 0;
}
@@ -759,9 +730,7 @@ TAO_SFP::handle_input (ACE_HANDLE fd)
int
TAO_SFP::end_stream (void)
{
- int result;
- ACE_DECLARE_NEW_CORBA_ENV;
- ACE_TRY
+ ACE_TRY_NEW_ENV
{
ACE_DEBUG ((LM_DEBUG,"SFP - ending the stream\n"));
// send the EndofStream message.
@@ -778,9 +747,9 @@ TAO_SFP::end_stream (void)
this->receiver_inet_addr_);
if ((n==-1) || (n==0))
ACE_ERROR_RETURN ((LM_ERROR,"Error sending endofstream message:%p",""),-1);
- result = this->reactor_->remove_handler (this,
+ int result = this->reactor_->remove_handler (this,
ACE_Event_Handler::READ_MASK);
-
+ return result;
}
ACE_CATCHANY
{
@@ -788,8 +757,6 @@ TAO_SFP::end_stream (void)
return -1;
}
ACE_ENDTRY;
- ACE_CHECK_RETURN (-1);
- return result;
}
int
@@ -810,7 +777,6 @@ TAO_SFP::get_handle (void) const
ACE_Message_Block *
TAO_SFP::read_simple_frame (void)
{
- ACE_Message_Block *message_block = 0;
ACE_DECLARE_NEW_CORBA_ENV;
ACE_TRY
{
@@ -826,7 +792,9 @@ TAO_SFP::read_simple_frame (void)
return 0;
int byte_order = frame_header.flags & 0x1;
int message_len = frame_header.message_size;
-
+ if (frame_header.message_size < 0)
+ ACE_ERROR_RETURN ((LM_ERROR,"Negative message size\n"),0);
+ ACE_Message_Block *message_block;
ACE_NEW_RETURN (message_block,
ACE_Message_Block (message_len),
0);
@@ -905,6 +873,8 @@ TAO_SFP::read_simple_frame (void)
return 0;
}
}
+ else
+ return message_block;
}
ACE_CATCHANY
{
@@ -913,7 +883,6 @@ TAO_SFP::read_simple_frame (void)
}
ACE_ENDTRY;
ACE_CHECK_RETURN (0);
- return message_block;
}
int
@@ -973,9 +942,7 @@ TAO_SFP::read_frame_header (flowProtocol::frameHeader &frame_header)
ACE_Message_Block *
TAO_SFP::read_fragment (void)
{
- TAO_SFP_Fragment_Table_Entry *fragment_entry = 0;
- ACE_DECLARE_NEW_CORBA_ENV;
- ACE_TRY
+ ACE_TRY_NEW_ENV
{
flowProtocol::fragment fragment;
ACE_INET_Addr sender;
@@ -1015,6 +982,8 @@ TAO_SFP::read_fragment (void)
ACE_DEBUG ((LM_DEBUG,"frag number = %d, frag size = %d,source id = %d\n",
fragment.frag_number,fragment.frag_sz,fragment.source_id));
+ if (fragment.frag_sz < 0)
+ ACE_ERROR_RETURN ((LM_ERROR,"negative fragment size:\n"),0);
ACE_Message_Block *data;
ACE_NEW_RETURN (data,
ACE_Message_Block(fragment.frag_sz),
@@ -1030,7 +999,7 @@ TAO_SFP::read_fragment (void)
ACE_DEBUG ((LM_DEBUG,"length of %dth fragment is: %d\n",
fragment.frag_number,
data->length ()));
-
+ TAO_SFP_Fragment_Table_Entry *fragment_entry;
TAO_SFP_Fragment_Node *new_node;
ACE_NEW_RETURN (new_node,
TAO_SFP_Fragment_Node,
@@ -1066,7 +1035,7 @@ TAO_SFP::read_fragment (void)
// since fragment number starts from 0 to n-1 we add 1.
fragment_entry->num_fragments_ = fragment.frag_number + 1;
}
-
+ return check_all_fragments (fragment_entry);
}
ACE_CATCHANY
{
@@ -1074,8 +1043,6 @@ TAO_SFP::read_fragment (void)
return 0;
}
ACE_ENDTRY;
- ACE_CHECK_RETURN (0);
- return check_all_fragments (fragment_entry);
}
ACE_Message_Block*
@@ -1126,21 +1093,3 @@ TAO_SFP::dump_buf(char *buffer,int size)
ACE_DEBUG ((LM_DEBUG,"%d ",buf[i]));
ACE_DEBUG ((LM_DEBUG,"n========================================n"));
}
-
-#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
-template class ACE_DNode<TAO_SFP_Fragment_Node>;
-template class ACE_Ordered_MultiSet<TAO_SFP_Fragment_Node>;
-template class ACE_Ordered_MultiSet_Iterator<TAO_SFP_Fragment_Node>;
-template class ACE_Hash_Map_Manager<CORBA::ULong,TAO_SFP_Fragment_Table_Entry*,ACE_Null_Mutex>;
-template class ACE_Hash_Map_Manager_Ex<unsigned int, TAO_SFP_Fragment_Table_Entry *, ACE_Hash<unsigned int>, ACE_Equal_To<unsigned int>, ACE_Null_Mutex>;
-template class ACE_Hash_Map_Entry<unsigned int, TAO_SFP_Fragment_Table_Entry *>;
-template class ACE_Hash_Map_Iterator_Base_Ex<unsigned int, TAO_SFP_Fragment_Table_Entry *, ACE_Hash<unsigned int>, ACE_Equal_To<unsigned int>, ACE_Null_Mutex>;
-#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
-#pragma instantiate ACE_DNode<TAO_SFP_Fragment_Node>
-#pragma instantiate ACE_Ordered_MultiSet<TAO_SFP_Fragment_Node>
-#pragma instantiate ACE_Ordered_MultiSet_Iterator<TAO_SFP_Fragment_Node>
-#pragma instantiate ACE_Hash_Map_Manager<CORBA::ULong,TAO_SFP_Fragment_Table_Entry*,ACE_Null_Mutex>
-#pragma instantiate ACE_Hash_Map_Manager_Ex<unsigned int, TAO_SFP_Fragment_Table_Entry *, ACE_Hash<unsigned int>, ACE_Equal_To<unsigned int>, ACE_Null_Mutex>
-#pragma instantiate ACE_Hash_Map_Entry<unsigned int, TAO_SFP_Fragment_Table_Entry *>
-#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<unsigned int, TAO_SFP_Fragment_Table_Entry *, ACE_Hash<unsigned int>, ACE_Equal_To<unsigned int>, ACE_Null_Mutex>
-#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */