diff options
-rw-r--r-- | TAO/ChangeLog | 28 | ||||
-rw-r--r-- | TAO/tao/DynamicInterface/DII_Reply_Dispatcher.cpp | 11 | ||||
-rw-r--r-- | TAO/tao/Messaging/Asynch_Reply_Dispatcher.cpp | 17 | ||||
-rw-r--r-- | TAO/tao/PollableC.cpp | 172 | ||||
-rw-r--r-- | TAO/tao/PollableC.h | 311 | ||||
-rw-r--r-- | TAO/tao/PollableC.i | 24 | ||||
-rw-r--r-- | TAO/tao/Remote_Invocation.cpp | 4 | ||||
-rw-r--r-- | TAO/tao/Synch_Invocation.cpp | 8 | ||||
-rw-r--r-- | TAO/tao/Synch_Reply_Dispatcher.cpp | 20 |
9 files changed, 336 insertions, 259 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 36203045391..d525b82273a 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,31 @@ +Wed Nov 5 19:19:08 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> + + * tao/PollableC.cpp: + * tao/PollableC.h: + * tao/PollableC.i: + + Regenerated the code. + + * tao/Synch_Reply_Dispatcher.cpp: + * tao/DynamicInterface/DII_Reply_Dispatcher.cpp: + * tao/Messaging/Asynch_Reply_Dispatcher.cpp: + + Added debugging statements to indicate failure of clone_from () + when debugging level is cranked up. + + * tao/Remote_Invocation.cpp: + * tao/Synch_Invocation.cpp: + * tao/Messaging/Asynch_Reply_Dispatcher.cpp (handle_timeout): + + Changed the completion status of the CORBA::TIMEOUT exception + thrown. For example returning a completion status of + COMPLETED_NO while timing out waiting for the reply seems brain + dead. Further fixed the minor code to return the SEND_MINOR_CODE + or RECV_MINOR_CODE as the case maybe. + + This fixes a problem reported by Torsten Kuepper + <torsten.kuepper@nokia.com> [BUG 1600]. + Wed Nov 5 16:03:08 2003 Yamuna Krishnamurthy <yamuna@oomworks.com> * orbsvcs/orbsvcs/AV/SCTP_SEQ.h: diff --git a/TAO/tao/DynamicInterface/DII_Reply_Dispatcher.cpp b/TAO/tao/DynamicInterface/DII_Reply_Dispatcher.cpp index 783405bd445..1ef07265194 100644 --- a/TAO/tao/DynamicInterface/DII_Reply_Dispatcher.cpp +++ b/TAO/tao/DynamicInterface/DII_Reply_Dispatcher.cpp @@ -55,6 +55,17 @@ TAO_DII_Deferred_Reply_Dispatcher::dispatch_reply ( ACE_Data_Block *db = this->reply_cdr_.clone_from (params.input_cdr_); + + if (db == 0) + { + if (TAO_debug_level > 2) + ACE_ERROR (( + LM_ERROR, + "TAO (%P|%t) - DII_Deferred_Reply_Dispatcher::dispatch_reply ", + "clone_from failed \n")); + return -1; + } + // See whether we need to delete the data block by checking the // flags. We cannot be happy that we initally allocated the // datablocks of the stack. If this method is called twice, as is in diff --git a/TAO/tao/Messaging/Asynch_Reply_Dispatcher.cpp b/TAO/tao/Messaging/Asynch_Reply_Dispatcher.cpp index 60a221a54fe..6150142a87b 100644 --- a/TAO/tao/Messaging/Asynch_Reply_Dispatcher.cpp +++ b/TAO/tao/Messaging/Asynch_Reply_Dispatcher.cpp @@ -50,6 +50,16 @@ TAO_Asynch_Reply_Dispatcher::dispatch_reply ( ACE_Data_Block *db = this->reply_cdr_.clone_from (params.input_cdr_); + if (db == 0) + { + if (TAO_debug_level > 2) + ACE_ERROR (( + LM_ERROR, + "TAO (%P|%t) - Asynch_Reply_Dispatcher::dispatch_reply ", + "clone_from failed \n")); + return -1; + } + // See whether we need to delete the data block by checking the // flags. We cannot be happy that we initally allocated the // datablocks of the stack. If this method is called twice, as is in @@ -179,9 +189,10 @@ TAO_Asynch_Reply_Dispatcher::reply_timed_out (void) { // Generate a fake exception.... CORBA::TIMEOUT timeout_failure ( - CORBA::SystemException::_tao_minor_code (TAO_TIMEOUT_SEND_MINOR_CODE, - errno), - CORBA::COMPLETED_NO); + CORBA::SystemException::_tao_minor_code ( + TAO_TIMEOUT_RECV_MINOR_CODE, + errno), + CORBA::COMPLETED_MAYBE); TAO_OutputCDR out_cdr; diff --git a/TAO/tao/PollableC.cpp b/TAO/tao/PollableC.cpp index 4e814ff87d9..2429aa2ecb5 100644 --- a/TAO/tao/PollableC.cpp +++ b/TAO/tao/PollableC.cpp @@ -26,7 +26,7 @@ // http://www.cs.wustl.edu/~schmidt/TAO.html // TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_codegen.cpp:301 +// be/be_codegen.cpp:302 #include "PollableC.h" @@ -41,86 +41,19 @@ #endif /* !defined INLINE */ // TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_arg_traits.cpp:59 +// be/be_visitor_arg_traits.cpp:62 // Arg traits specializations. namespace TAO { - -#if !defined (_CORBA_POLLABLESET__ARG_TRAITS_CS_) -#define _CORBA_POLLABLESET__ARG_TRAITS_CS_ - - ACE_TEMPLATE_SPECIALIZATION - class TAO_Export Arg_Traits<CORBA::PollableSet> - : public - Object_Arg_Traits_T< - CORBA::PollableSet_ptr, - CORBA::PollableSet_var, - CORBA::PollableSet_out, - TAO::Objref_Traits<CORBA::PollableSet> - > - { - }; - -#endif /* end #if !defined */ - -#if !defined (_CORBA_POLLABLE__ARG_TRAITS_CS_) -#define _CORBA_POLLABLE__ARG_TRAITS_CS_ - - ACE_TEMPLATE_SPECIALIZATION - class TAO_Export Arg_Traits<CORBA::Pollable> - : public - Object_Arg_Traits_T< - CORBA::Pollable_ptr, - CORBA::Pollable_var, - CORBA::Pollable_out, - TAO::Objref_Traits<CORBA::Pollable> - > - { - }; - -#endif /* end #if !defined */ - -#if !defined (_CORBA_DIIPOLLABLE__ARG_TRAITS_CS_) -#define _CORBA_DIIPOLLABLE__ARG_TRAITS_CS_ - - ACE_TEMPLATE_SPECIALIZATION - class TAO_Export Arg_Traits<CORBA::DIIPollable> - : public - Object_Arg_Traits_T< - CORBA::DIIPollable_ptr, - CORBA::DIIPollable_var, - CORBA::DIIPollable_out, - TAO::Objref_Traits<CORBA::DIIPollable> - > - { - }; - -#endif /* end #if !defined */ - -#if !defined (_CORBA_POLLABLESET__ARG_TRAITS_CS_) -#define _CORBA_POLLABLESET__ARG_TRAITS_CS_ - - ACE_TEMPLATE_SPECIALIZATION - class TAO_Export Arg_Traits<CORBA::PollableSet> - : public - Object_Arg_Traits_T< - CORBA::PollableSet_ptr, - CORBA::PollableSet_var, - CORBA::PollableSet_out, - TAO::Objref_Traits<CORBA::PollableSet> - > - { - }; - -#endif /* end #if !defined */ }; // TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface/interface_cs.cpp:60 +// be/be_visitor_interface/interface_cs.cpp:60 // Traits specializations for CORBA::Pollable. +ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION CORBA::Pollable_ptr TAO::Objref_Traits<CORBA::Pollable>::tao_duplicate ( CORBA::Pollable_ptr p @@ -129,6 +62,7 @@ TAO::Objref_Traits<CORBA::Pollable>::tao_duplicate ( return CORBA::Pollable::_duplicate (p); } +ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION void TAO::Objref_Traits<CORBA::Pollable>::tao_release ( CORBA::Pollable_ptr p @@ -137,12 +71,14 @@ TAO::Objref_Traits<CORBA::Pollable>::tao_release ( CORBA::release (p); } +ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION CORBA::Pollable_ptr TAO::Objref_Traits<CORBA::Pollable>::tao_nil (void) { return CORBA::Pollable::_nil (); } +ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION CORBA::Boolean TAO::Objref_Traits<CORBA::Pollable>::tao_marshal ( CORBA::Pollable_ptr p, @@ -153,7 +89,7 @@ TAO::Objref_Traits<CORBA::Pollable>::tao_marshal ( } // Function pointer for collocation factory initialization. -TAO::Collocation_Proxy_Broker * +TAO::Collocation_Proxy_Broker * (*CORBA__TAO_Pollable_Proxy_Broker_Factory_function_pointer) ( CORBA::Object_ptr obj ) = 0; @@ -174,10 +110,10 @@ CORBA::Pollable::_narrow ( { return Pollable::_nil (); } - + Pollable_ptr proxy = dynamic_cast<Pollable_ptr> (_tao_objref); - + return Pollable::_duplicate (proxy); } @@ -188,7 +124,7 @@ CORBA::Pollable::_duplicate (Pollable_ptr obj) { obj->_add_ref (); } - + return obj; } @@ -233,10 +169,11 @@ CORBA::Pollable::marshal (TAO_OutputCDR &) } // TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface/interface_cs.cpp:60 +// be/be_visitor_interface/interface_cs.cpp:60 // Traits specializations for CORBA::DIIPollable. +ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION CORBA::DIIPollable_ptr TAO::Objref_Traits<CORBA::DIIPollable>::tao_duplicate ( CORBA::DIIPollable_ptr p @@ -245,6 +182,7 @@ TAO::Objref_Traits<CORBA::DIIPollable>::tao_duplicate ( return CORBA::DIIPollable::_duplicate (p); } +ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION void TAO::Objref_Traits<CORBA::DIIPollable>::tao_release ( CORBA::DIIPollable_ptr p @@ -253,12 +191,14 @@ TAO::Objref_Traits<CORBA::DIIPollable>::tao_release ( CORBA::release (p); } +ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION CORBA::DIIPollable_ptr TAO::Objref_Traits<CORBA::DIIPollable>::tao_nil (void) { return CORBA::DIIPollable::_nil (); } +ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION CORBA::Boolean TAO::Objref_Traits<CORBA::DIIPollable>::tao_marshal ( CORBA::DIIPollable_ptr p, @@ -269,7 +209,7 @@ TAO::Objref_Traits<CORBA::DIIPollable>::tao_marshal ( } // Function pointer for collocation factory initialization. -TAO::Collocation_Proxy_Broker * +TAO::Collocation_Proxy_Broker * (*CORBA__TAO_DIIPollable_Proxy_Broker_Factory_function_pointer) ( CORBA::Object_ptr obj ) = 0; @@ -290,10 +230,10 @@ CORBA::DIIPollable::_narrow ( { return DIIPollable::_nil (); } - + DIIPollable_ptr proxy = dynamic_cast<DIIPollable_ptr> (_tao_objref); - + return DIIPollable::_duplicate (proxy); } @@ -304,7 +244,7 @@ CORBA::DIIPollable::_duplicate (DIIPollable_ptr obj) { obj->_add_ref (); } - + return obj; } @@ -353,10 +293,11 @@ CORBA::DIIPollable::marshal (TAO_OutputCDR &) } // TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface/interface_cs.cpp:60 +// be/be_visitor_interface/interface_cs.cpp:60 // Traits specializations for CORBA::PollableSet. +ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION CORBA::PollableSet_ptr TAO::Objref_Traits<CORBA::PollableSet>::tao_duplicate ( CORBA::PollableSet_ptr p @@ -365,6 +306,7 @@ TAO::Objref_Traits<CORBA::PollableSet>::tao_duplicate ( return CORBA::PollableSet::_duplicate (p); } +ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION void TAO::Objref_Traits<CORBA::PollableSet>::tao_release ( CORBA::PollableSet_ptr p @@ -373,12 +315,14 @@ TAO::Objref_Traits<CORBA::PollableSet>::tao_release ( CORBA::release (p); } +ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION CORBA::PollableSet_ptr TAO::Objref_Traits<CORBA::PollableSet>::tao_nil (void) { return CORBA::PollableSet::_nil (); } +ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION CORBA::Boolean TAO::Objref_Traits<CORBA::PollableSet>::tao_marshal ( CORBA::PollableSet_ptr p, @@ -389,13 +333,13 @@ TAO::Objref_Traits<CORBA::PollableSet>::tao_marshal ( } // Function pointer for collocation factory initialization. -TAO::Collocation_Proxy_Broker * +TAO::Collocation_Proxy_Broker * (*CORBA__TAO_PollableSet_Proxy_Broker_Factory_function_pointer) ( CORBA::Object_ptr obj ) = 0; -// TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_exception/exception_cs.cpp:63 +// TAO_IDL - Generated from +// be/be_visitor_exception/exception_cs.cpp:63 CORBA::PollableSet::NoPossiblePollable::NoPossiblePollable (void) : CORBA::UserException ( @@ -479,8 +423,8 @@ void CORBA::PollableSet::NoPossiblePollable::_tao_decode ( -// TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_exception/exception_cs.cpp:63 +// TAO_IDL - Generated from +// be/be_visitor_exception/exception_cs.cpp:63 CORBA::PollableSet::UnknownPollable::UnknownPollable (void) : CORBA::UserException ( @@ -580,10 +524,10 @@ CORBA::PollableSet::_narrow ( { return PollableSet::_nil (); } - + PollableSet_ptr proxy = dynamic_cast<PollableSet_ptr> (_tao_objref); - + return PollableSet::_duplicate (proxy); } @@ -594,7 +538,7 @@ CORBA::PollableSet::_duplicate (PollableSet_ptr obj) { obj->_add_ref (); } - + return obj; } @@ -639,41 +583,50 @@ CORBA::PollableSet::marshal (TAO_OutputCDR &) } // TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_root/root.cpp:1703 +// be/be_visitor_root/root.cpp:1702 #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - template class TAO::Objref_Traits<CORBA::PollableSet>; + template class + TAO::Objref_Traits< + CORBA::PollableSet + >; template class TAO_Objref_Var_T< CORBA::PollableSet >; - + template class TAO_Objref_Out_T< CORBA::PollableSet >; - template class TAO::Objref_Traits<CORBA::Pollable>; + template class + TAO::Objref_Traits< + CORBA::Pollable + >; template class TAO_Objref_Var_T< CORBA::Pollable >; - + template class TAO_Objref_Out_T< CORBA::Pollable >; - template class TAO::Objref_Traits<CORBA::DIIPollable>; + template class + TAO::Objref_Traits< + CORBA::DIIPollable + >; template class TAO_Objref_Var_T< CORBA::DIIPollable >; - + template class TAO_Objref_Out_T< CORBA::DIIPollable @@ -681,45 +634,50 @@ CORBA::PollableSet::marshal (TAO_OutputCDR &) #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -# pragma instantiate TAO::Objref_Traits<CORBA::PollableSet> +# pragma instantiate \ + TAO::Objref_Traits< \ + CORBA::PollableSet \ + > # pragma instantiate \ TAO_Objref_Var_T< \ CORBA::PollableSet > - + # pragma instantiate \ TAO_Objref_Out_T< \ CORBA::PollableSet > -# pragma instantiate TAO::Objref_Traits<CORBA::Pollable> +# pragma instantiate \ + TAO::Objref_Traits< \ + CORBA::Pollable \ + > # pragma instantiate \ TAO_Objref_Var_T< \ CORBA::Pollable > - + # pragma instantiate \ TAO_Objref_Out_T< \ CORBA::Pollable > -# pragma instantiate TAO::Objref_Traits<CORBA::DIIPollable> +# pragma instantiate \ + TAO::Objref_Traits< \ + CORBA::DIIPollable \ + > # pragma instantiate \ TAO_Objref_Var_T< \ CORBA::DIIPollable > - + # pragma instantiate \ TAO_Objref_Out_T< \ CORBA::DIIPollable > -# pragma instantiate \ - TAO::Any_Impl_T< \ - CORBA::DIIPollable \ - > +#endif /* !ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ -#endif /* !ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/tao/PollableC.h b/TAO/tao/PollableC.h index 8634880fa48..d016461fef4 100644 --- a/TAO/tao/PollableC.h +++ b/TAO/tao/PollableC.h @@ -26,20 +26,23 @@ // http://www.cs.wustl.edu/~schmidt/TAO.html // TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_codegen.cpp:151 +// be/be_codegen.cpp:150 #ifndef _TAO_IDL_ORIG_POLLABLEC_H_ #define _TAO_IDL_ORIG_POLLABLEC_H_ #include /**/ "ace/pre.h" -#include "Exception.h" +#include "tao/ORB.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -#include "Object.h" +#include "tao/CDR.h" +#include "tao/Environment.h" +#include "tao/Object.h" +#include "tao/Objref_VarOut_T.h" #if defined (TAO_EXPORT_MACRO) #undef TAO_EXPORT_MACRO @@ -64,37 +67,38 @@ #pragma option push -w-rvl -w-rch -w-ccc -w-inl #endif /* __BORLANDC__ */ -// TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_root/root_ch.cpp:63 +// TAO_IDL - Generated from +// be/be_visitor_root/root_ch.cpp:63 namespace TAO { class Collocation_Proxy_Broker; - + template<typename T> class Narrow_Utils; + template<typename T> class AbstractBase_Narrow_Utils; } // TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_module/module_ch.cpp:48 +// be/be_visitor_module/module_ch.cpp:48 namespace CORBA { - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_interface.cpp:601 + // be/be_interface.cpp:612 #if !defined (_CORBA_POLLABLESET__VAR_OUT_CH_) #define _CORBA_POLLABLESET__VAR_OUT_CH_ - + class PollableSet; typedef PollableSet *PollableSet_ptr; - + typedef TAO_Objref_Var_T< PollableSet > PollableSet_var; - + typedef TAO_Objref_Out_T< PollableSet @@ -102,22 +106,22 @@ namespace CORBA PollableSet_out; #endif /* end #if !defined */ - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_interface.cpp:601 + // be/be_interface.cpp:612 #if !defined (_CORBA_POLLABLE__VAR_OUT_CH_) #define _CORBA_POLLABLE__VAR_OUT_CH_ - + class Pollable; typedef Pollable *Pollable_ptr; - + typedef TAO_Objref_Var_T< Pollable > Pollable_var; - + typedef TAO_Objref_Out_T< Pollable @@ -125,38 +129,38 @@ namespace CORBA Pollable_out; #endif /* end #if !defined */ - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface/interface_ch.cpp:53 + // be/be_visitor_interface/interface_ch.cpp:54 #if !defined (_CORBA_POLLABLE_CH_) #define _CORBA_POLLABLE_CH_ - + class TAO_Export Pollable : public virtual CORBA::Object { public: typedef Pollable_ptr _ptr_type; typedef Pollable_var _var_type; - + // The static operations. static Pollable_ptr _duplicate (Pollable_ptr obj); - + static Pollable_ptr _narrow ( CORBA::Object_ptr obj ACE_ENV_ARG_DECL_WITH_DEFAULTS ); - + static Pollable_ptr _nil (void) - { - return (Pollable_ptr)0; - } - - - + { + return (Pollable_ptr)0; + } + + + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_operation/operation_ch.cpp:46 - + // be/be_visitor_operation/operation_ch.cpp:46 + virtual CORBA::Boolean is_ready ( CORBA::ULong timeout ACE_ENV_ARG_DECL_WITH_DEFAULTS @@ -164,54 +168,58 @@ namespace CORBA ACE_THROW_SPEC (( CORBA::SystemException )) = 0; - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_operation/operation_ch.cpp:46 - + // be/be_visitor_operation/operation_ch.cpp:46 + virtual ::CORBA::PollableSet_ptr create_pollable_set ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC (( CORBA::SystemException )) = 0; - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface/interface_ch.cpp:185 - + // be/be_visitor_interface/interface_ch.cpp:192 + virtual CORBA::Boolean _is_a ( const char *type_id ACE_ENV_ARG_DECL_WITH_DEFAULTS ); - + virtual const char* _interface_repository_id (void) const; virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr); - + protected: + // Abstract or local interface only. Pollable (void); + virtual ~Pollable (void); - + private: + // Private and unimplemented for concrete interfaces. Pollable (const Pollable &); + void operator= (const Pollable &); }; #endif /* end #if !defined */ - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_interface.cpp:601 + // be/be_interface.cpp:612 #if !defined (_CORBA_DIIPOLLABLE__VAR_OUT_CH_) #define _CORBA_DIIPOLLABLE__VAR_OUT_CH_ - + class DIIPollable; typedef DIIPollable *DIIPollable_ptr; - + typedef TAO_Objref_Var_T< DIIPollable > DIIPollable_var; - + typedef TAO_Objref_Out_T< DIIPollable @@ -219,101 +227,105 @@ namespace CORBA DIIPollable_out; #endif /* end #if !defined */ - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface/interface_ch.cpp:53 + // be/be_visitor_interface/interface_ch.cpp:54 #if !defined (_CORBA_DIIPOLLABLE_CH_) #define _CORBA_DIIPOLLABLE_CH_ - + class TAO_Export DIIPollable : public virtual CORBA::Pollable { public: typedef DIIPollable_ptr _ptr_type; typedef DIIPollable_var _var_type; - + // The static operations. static DIIPollable_ptr _duplicate (DIIPollable_ptr obj); - + static DIIPollable_ptr _narrow ( CORBA::Object_ptr obj ACE_ENV_ARG_DECL_WITH_DEFAULTS ); - + static DIIPollable_ptr _nil (void) - { - return (DIIPollable_ptr)0; - } - - - + { + return (DIIPollable_ptr)0; + } + + + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface/interface_ch.cpp:185 - + // be/be_visitor_interface/interface_ch.cpp:192 + virtual CORBA::Boolean _is_a ( const char *type_id ACE_ENV_ARG_DECL_WITH_DEFAULTS ); - + virtual const char* _interface_repository_id (void) const; virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr); - + protected: + // Abstract or local interface only. DIIPollable (void); + virtual ~DIIPollable (void); - + private: + // Private and unimplemented for concrete interfaces. DIIPollable (const DIIPollable &); + void operator= (const DIIPollable &); }; #endif /* end #if !defined */ - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface/interface_ch.cpp:53 + // be/be_visitor_interface/interface_ch.cpp:54 #if !defined (_CORBA_POLLABLESET_CH_) #define _CORBA_POLLABLESET_CH_ - + class TAO_Export PollableSet : public virtual CORBA::Object { public: typedef PollableSet_ptr _ptr_type; typedef PollableSet_var _var_type; - + // The static operations. static PollableSet_ptr _duplicate (PollableSet_ptr obj); - + static PollableSet_ptr _narrow ( CORBA::Object_ptr obj ACE_ENV_ARG_DECL_WITH_DEFAULTS ); - + static PollableSet_ptr _nil (void) - { - return (PollableSet_ptr)0; - } - - - + { + return (PollableSet_ptr)0; + } + + + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_exception/exception_ch.cpp:51 + // be/be_visitor_exception/exception_ch.cpp:51 #if !defined (_CORBA_POLLABLESET_NOPOSSIBLEPOLLABLE_CH_) #define _CORBA_POLLABLESET_NOPOSSIBLEPOLLABLE_CH_ - + class TAO_Export NoPossiblePollable : public CORBA::UserException { public: - + NoPossiblePollable (void); NoPossiblePollable (const NoPossiblePollable &); ~NoPossiblePollable (void); NoPossiblePollable &operator= (const NoPossiblePollable &); - + static NoPossiblePollable *_downcast (CORBA::Exception *); static CORBA::Exception *_alloc (void); @@ -325,34 +337,34 @@ namespace CORBA TAO_OutputCDR & ACE_ENV_ARG_DECL ) const; - + virtual void _tao_decode ( TAO_InputCDR & ACE_ENV_ARG_DECL ); - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_exception/exception_ch.cpp:125 + // be/be_visitor_exception/exception_ch.cpp:125 }; #endif /* end #if !defined */ - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_exception/exception_ch.cpp:51 + // be/be_visitor_exception/exception_ch.cpp:51 #if !defined (_CORBA_POLLABLESET_UNKNOWNPOLLABLE_CH_) #define _CORBA_POLLABLESET_UNKNOWNPOLLABLE_CH_ - + class TAO_Export UnknownPollable : public CORBA::UserException { public: - + UnknownPollable (void); UnknownPollable (const UnknownPollable &); ~UnknownPollable (void); UnknownPollable &operator= (const UnknownPollable &); - + static UnknownPollable *_downcast (CORBA::Exception *); static CORBA::Exception *_alloc (void); @@ -364,31 +376,31 @@ namespace CORBA TAO_OutputCDR & ACE_ENV_ARG_DECL ) const; - + virtual void _tao_decode ( TAO_InputCDR & ACE_ENV_ARG_DECL ); - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_exception/exception_ch.cpp:125 + // be/be_visitor_exception/exception_ch.cpp:125 }; #endif /* end #if !defined */ - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_operation/operation_ch.cpp:46 - + // be/be_visitor_operation/operation_ch.cpp:46 + virtual ::CORBA::DIIPollable_ptr create_dii_pollable ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC (( CORBA::SystemException )) = 0; - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_operation/operation_ch.cpp:46 - + // be/be_visitor_operation/operation_ch.cpp:46 + virtual void add_pollable ( CORBA::Pollable_ptr potential ACE_ENV_ARG_DECL_WITH_DEFAULTS @@ -396,10 +408,10 @@ namespace CORBA ACE_THROW_SPEC (( CORBA::SystemException )) = 0; - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_operation/operation_ch.cpp:46 - + // be/be_visitor_operation/operation_ch.cpp:46 + virtual ::CORBA::Pollable_ptr poll ( CORBA::ULong timeout ACE_ENV_ARG_DECL_WITH_DEFAULTS @@ -408,10 +420,10 @@ namespace CORBA CORBA::SystemException , CORBA::PollableSet::NoPossiblePollable )) = 0; - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_operation/operation_ch.cpp:46 - + // be/be_visitor_operation/operation_ch.cpp:46 + virtual void remove ( CORBA::Pollable_ptr potential ACE_ENV_ARG_DECL_WITH_DEFAULTS @@ -420,64 +432,131 @@ namespace CORBA CORBA::SystemException , CORBA::PollableSet::UnknownPollable )) = 0; - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_operation/operation_ch.cpp:46 - + // be/be_visitor_operation/operation_ch.cpp:46 + virtual CORBA::UShort number_left ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC (( CORBA::SystemException )) = 0; - + // TAO_IDL - Generated from - // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface/interface_ch.cpp:185 - + // be/be_visitor_interface/interface_ch.cpp:192 + virtual CORBA::Boolean _is_a ( const char *type_id ACE_ENV_ARG_DECL_WITH_DEFAULTS ); - + virtual const char* _interface_repository_id (void) const; virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr); - + protected: + // Abstract or local interface only. PollableSet (void); + virtual ~PollableSet (void); - + private: + // Private and unimplemented for concrete interfaces. PollableSet (const PollableSet &); + void operator= (const PollableSet &); }; #endif /* end #if !defined */ // TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_module/module_ch.cpp:66 +// be/be_visitor_module/module_ch.cpp:66 } // module CORBA // TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_traits.cpp:48 +// be/be_visitor_traits.cpp:50 // Traits specializations. namespace TAO { + +#if !defined (_CORBA_POLLABLESET__TRAITS_CH_) +#define _CORBA_POLLABLESET__TRAITS_CH_ + + ACE_TEMPLATE_SPECIALIZATION + struct TAO_Export Objref_Traits<CORBA::PollableSet> + { + static CORBA::PollableSet_ptr tao_duplicate ( + CORBA::PollableSet_ptr + ); + static void tao_release ( + CORBA::PollableSet_ptr + ); + static CORBA::PollableSet_ptr tao_nil (void); + static CORBA::Boolean tao_marshal ( + CORBA::PollableSet_ptr p, + TAO_OutputCDR & cdr + ); + }; + +#endif /* end #if !defined */ + +#if !defined (_CORBA_POLLABLE__TRAITS_CH_) +#define _CORBA_POLLABLE__TRAITS_CH_ + + ACE_TEMPLATE_SPECIALIZATION + struct TAO_Export Objref_Traits<CORBA::Pollable> + { + static CORBA::Pollable_ptr tao_duplicate ( + CORBA::Pollable_ptr + ); + static void tao_release ( + CORBA::Pollable_ptr + ); + static CORBA::Pollable_ptr tao_nil (void); + static CORBA::Boolean tao_marshal ( + CORBA::Pollable_ptr p, + TAO_OutputCDR & cdr + ); + }; + +#endif /* end #if !defined */ + +#if !defined (_CORBA_DIIPOLLABLE__TRAITS_CH_) +#define _CORBA_DIIPOLLABLE__TRAITS_CH_ + + ACE_TEMPLATE_SPECIALIZATION + struct TAO_Export Objref_Traits<CORBA::DIIPollable> + { + static CORBA::DIIPollable_ptr tao_duplicate ( + CORBA::DIIPollable_ptr + ); + static void tao_release ( + CORBA::DIIPollable_ptr + ); + static CORBA::DIIPollable_ptr tao_nil (void); + static CORBA::Boolean tao_marshal ( + CORBA::DIIPollable_ptr p, + TAO_OutputCDR & cdr + ); + }; + +#endif /* end #if !defined */ }; // TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_root/cdr_op.cpp:48 +// be/be_visitor_root/cdr_op.cpp:48 #ifndef __ACE_INLINE__ // TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_root/cdr_op.cpp:64 +// be/be_visitor_root/cdr_op.cpp:64 #endif /* __ACE_INLINE__ */ // TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_codegen.cpp:969 +// be/be_codegen.cpp:911 #if defined (__ACE_INLINE__) #include "PollableC.i" @@ -492,4 +571,6 @@ namespace TAO #endif /* __BORLANDC__ */ #include /**/ "ace/post.h" + #endif /* ifndef */ + diff --git a/TAO/tao/PollableC.i b/TAO/tao/PollableC.i index b8797227eb2..38aa32569ba 100644 --- a/TAO/tao/PollableC.i +++ b/TAO/tao/PollableC.i @@ -26,27 +26,3 @@ // http://www.cs.wustl.edu/~schmidt/TAO.html -// TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface/interface_ci.cpp:63 - -#if !defined (_CORBA_POLLABLE___CI_) -#define _CORBA_POLLABLE___CI_ - -#endif /* end #if !defined */ - -// TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface/interface_ci.cpp:63 - -#if !defined (_CORBA_DIIPOLLABLE___CI_) -#define _CORBA_DIIPOLLABLE___CI_ - -#endif /* end #if !defined */ - -// TAO_IDL - Generated from -// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface/interface_ci.cpp:63 - -#if !defined (_CORBA_POLLABLESET___CI_) -#define _CORBA_POLLABLESET___CI_ - -#endif /* end #if !defined */ - diff --git a/TAO/tao/Remote_Invocation.cpp b/TAO/tao/Remote_Invocation.cpp index 97377e5371f..e2545e35a2c 100644 --- a/TAO/tao/Remote_Invocation.cpp +++ b/TAO/tao/Remote_Invocation.cpp @@ -149,13 +149,15 @@ namespace TAO { if (errno == ETIME) { + // We sent a message already and we haven't gotten a + // reply. Just throw YIMMEOUT with *COMPLETED_MAYBE*. ACE_THROW_RETURN ( CORBA::TIMEOUT ( CORBA::SystemException::_tao_minor_code ( TAO_TIMEOUT_SEND_MINOR_CODE, errno ), - CORBA::COMPLETED_NO + CORBA::COMPLETED_MAYBE ), TAO_INVOKE_FAILURE ); diff --git a/TAO/tao/Synch_Invocation.cpp b/TAO/tao/Synch_Invocation.cpp index ac50afd0906..9a1ebfb7f1f 100644 --- a/TAO/tao/Synch_Invocation.cpp +++ b/TAO/tao/Synch_Invocation.cpp @@ -278,13 +278,13 @@ namespace TAO // dispatching has started. This is fragile. if (bd.unbind_dispatcher () == 0) { - // Just a timeout, don't close the connection or - // anything... + // Just a timeout with completed_maybe, don't close + // the connection or anything ACE_THROW_RETURN (CORBA::TIMEOUT ( CORBA::SystemException::_tao_minor_code ( - TAO_TIMEOUT_SEND_MINOR_CODE, + TAO_TIMEOUT_RECV_MINOR_CODE, errno), - CORBA::COMPLETED_NO), + CORBA::COMPLETED_MAYBE), TAO_INVOKE_FAILURE); } } diff --git a/TAO/tao/Synch_Reply_Dispatcher.cpp b/TAO/tao/Synch_Reply_Dispatcher.cpp index edf59c5d67a..47b0b31cc70 100644 --- a/TAO/tao/Synch_Reply_Dispatcher.cpp +++ b/TAO/tao/Synch_Reply_Dispatcher.cpp @@ -1,11 +1,12 @@ // $Id$ -#include "tao/Synch_Reply_Dispatcher.h" -#include "tao/ORB_Core.h" -#include "tao/Pluggable_Messaging_Utils.h" +#include "Synch_Reply_Dispatcher.h" +#include "ORB_Core.h" +#include "Pluggable_Messaging_Utils.h" +#include "debug.h" -ACE_RCSID (tao, - Synch_Reply_Dispatcher, +ACE_RCSID (tao, + Synch_Reply_Dispatcher, "$Id$") // Constructor. @@ -65,6 +66,15 @@ TAO_Synch_Reply_Dispatcher::dispatch_reply ( ACE_Data_Block *db = this->reply_cdr_.clone_from (params.input_cdr_); + if (db == 0) + { + if (TAO_debug_level > 2) + ACE_ERROR ((LM_ERROR, + "TAO (%P|%t) - Synch_Reply_Dispatcher::dispatch_reply ", + "clone_from failed \n")); + return -1; + } + // See whether we need to delete the data block by checking the // flags. We cannot be happy that we initally allocated the // datablocks of the stack. If this method is called twice, as is in |