00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef TAO_Notify_DISPATCH_METHOD_REQUEST_H
00012 #define TAO_Notify_DISPATCH_METHOD_REQUEST_H
00013 #include "ace/pre.h"
00014
00015 #include "orbsvcs/Notify/notify_serv_export.h"
00016
00017 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00018 # pragma once
00019 #endif
00020
00021 #include "orbsvcs/Notify/Method_Request.h"
00022 #include "orbsvcs/Notify/Refcountable.h"
00023 #include "orbsvcs/Notify/Method_Request_Event.h"
00024 #include "orbsvcs/Notify/ProxySupplier.h"
00025 #include "orbsvcs/Notify/Delivery_Request.h"
00026
00027 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00028
00029 class TAO_Notify_EventChannelFactory;
00030 class TAO_InputCDR;
00031 class TAO_Notify_Method_Request_Dispatch_Queueable;
00032
00033
00034
00035
00036
00037
00038
00039 class TAO_Notify_Serv_Export TAO_Notify_Method_Request_Dispatch
00040 : public TAO_Notify_Method_Request_Event
00041 {
00042 public:
00043
00044 enum {persistence_code = 1};
00045
00046
00047 TAO_Notify_Method_Request_Dispatch (
00048 const TAO_Notify_Event * event,
00049 TAO_Notify_ProxySupplier* proxy_supplier,
00050 bool filtering);
00051
00052
00053 TAO_Notify_Method_Request_Dispatch (
00054 const TAO_Notify::Delivery_Request_Ptr & delivery,
00055 TAO_Notify_ProxySupplier* proxy_supplier,
00056 bool filtering);
00057
00058
00059
00060
00061 TAO_Notify_Method_Request_Dispatch (
00062 const TAO_Notify_Method_Request_Event & request,
00063 const TAO_Notify_Event * event,
00064 TAO_Notify_ProxySupplier* proxy_supplier,
00065 bool filtering);
00066
00067 public:
00068
00069 virtual ~TAO_Notify_Method_Request_Dispatch ();
00070
00071
00072 static TAO_Notify_Method_Request_Dispatch_Queueable * unmarshal (
00073 TAO_Notify::Delivery_Request_Ptr & delivery_request,
00074 TAO_Notify_EventChannelFactory &ecf,
00075 TAO_InputCDR & cdr
00076 ACE_ENV_ARG_DECL);
00077
00078
00079 protected:
00080
00081 int execute_i (ACE_ENV_SINGLE_ARG_DECL);
00082
00083 protected:
00084
00085 TAO_Notify_ProxySupplier::Ptr proxy_supplier_;
00086
00087
00088 bool filtering_;
00089 };
00090
00091
00092
00093
00094
00095
00096
00097
00098 class TAO_Notify_Serv_Export TAO_Notify_Method_Request_Dispatch_Queueable
00099 : public TAO_Notify_Method_Request_Dispatch
00100 , public TAO_Notify_Method_Request_Queueable
00101 {
00102 public:
00103
00104
00105
00106 TAO_Notify_Method_Request_Dispatch_Queueable (
00107 const TAO_Notify_Method_Request_Event & request,
00108 TAO_Notify_Event::Ptr & event,
00109 TAO_Notify_ProxySupplier* proxy_supplier,
00110 bool filtering);
00111
00112
00113
00114 TAO_Notify_Method_Request_Dispatch_Queueable (
00115 const TAO_Notify::Delivery_Request_Ptr & request,
00116 TAO_Notify_ProxySupplier* proxy_supplier,
00117 bool filtering);
00118
00119
00120 virtual ~TAO_Notify_Method_Request_Dispatch_Queueable ();
00121
00122
00123 virtual int execute (ACE_ENV_SINGLE_ARG_DECL);
00124
00125 private:
00126 TAO_Notify_Event::Ptr event_var_;
00127 TAO_Notify_ProxySupplier::Ptr proxy_guard_;
00128 };
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138 class TAO_Notify_Serv_Export TAO_Notify_Method_Request_Dispatch_No_Copy
00139 : public TAO_Notify_Method_Request_Dispatch
00140 , public TAO_Notify_Method_Request
00141 {
00142 public:
00143
00144 TAO_Notify_Method_Request_Dispatch_No_Copy (
00145 const TAO_Notify_Event * event,
00146 TAO_Notify_ProxySupplier* proxy_supplier,
00147 bool filtering);
00148
00149
00150 TAO_Notify_Method_Request_Dispatch_No_Copy (
00151 const TAO_Notify_Method_Request_Event & request,
00152 TAO_Notify_ProxySupplier* proxy_supplier,
00153 bool filtering);
00154
00155
00156 virtual ~TAO_Notify_Method_Request_Dispatch_No_Copy ();
00157
00158
00159 virtual int execute (ACE_ENV_SINGLE_ARG_DECL);
00160
00161
00162 virtual TAO_Notify_Method_Request_Queueable* copy (ACE_ENV_SINGLE_ARG_DECL);
00163 };
00164
00165
00166
00167 TAO_END_VERSIONED_NAMESPACE_DECL
00168
00169 #include "ace/post.h"
00170 #endif