#include <OperationDef.h>
Inheritance diagram for Omniifr::OperationDef_impl:
Public Member Functions | |
TypeCode_ptr | result () |
IDLType_ptr | result_def () |
void | result_def (IDLType_ptr v) |
ParDescriptionSeq * | params () |
void | params (const ParDescriptionSeq &v) |
OperationMode | mode () |
void | mode (OperationMode v) |
ContextIdSeq * | contexts () |
void | contexts (const ContextIdSeq &v) |
ExceptionDefSeq * | exceptions () |
void | exceptions (const ExceptionDefSeq &v) |
DefinitionKind | def_kind () |
CORBA::Contained::Description * | describe () |
OperationDef_impl () | |
virtual | ~OperationDef_impl () |
void | uncheckedDestroy () |
Destroys this object, without first checking for dependencies. | |
void | reincarnate (const PersistNode &node) |
Re-create the repository from information saved in the log file. | |
void | output (ostream &os) |
Save this object's state to a stream. | |
Private Member Functions | |
void | checkOneway (const OperationMode mode, const ParDescriptionSeq ¶ms, IDLType_ptr result_def) const |
Tests for a violation of the rules on oneway operations. | |
Private Attributes | |
TypeCode_var | _result |
set from _result_def | |
Dependency1< IDLType > | _result_def |
Dependency3< ParDescriptionSeq > | _params |
OperationMode | _mode |
ContextIdSeq | _contexts |
Dependency2< ExceptionDefSeq > | _exceptions |
ExcDescriptionSeq | _excDescriptionSeq |
set from _exceptions |
|
Definition at line 66 of file OperationDef.h. References _contexts, _excDescriptionSeq, _exceptions, _mode, _params, _result, and _result_def. 00066 : 00067 _result(), 00068 _result_def(this), 00069 _params(this), 00070 _mode(CORBA::OP_NORMAL), 00071 _contexts(), 00072 _exceptions(this), 00073 _excDescriptionSeq() 00074 {} virtual ~OperationDef_impl() {}
|
|
Definition at line 75 of file OperationDef.h. 00075 {}
|
|
Tests for a violation of the rules on oneway operations. If a violation is found, then raises BAD_PARAM(31), else does nothing. Definition at line 190 of file OperationDef.cc. References params(). Referenced by mode(), params(), and result_def(). 00195 { 00196 // Only worry about oneway operations. 00197 // If result_def is not yet set, then don't perform the check. This should 00198 // only happen during a call to InterfaceDef_impl::create_operation(). 00199 if(mode==OP_ONEWAY && !CORBA::is_nil(result_def)) 00200 { 00201 // Return type must be void. 00202 TypeCode_var resultTc =result_def->type(); 00203 if(resultTc->kind()!=tk_void) 00204 throw CORBA::BAD_PARAM(31,CORBA::COMPLETED_NO); 00205 00206 // Parameters' modes must be PARAM_IN. 00207 for(ULong i=0; i<params.length(); ++i) 00208 { 00209 if(params[i].mode!=PARAM_IN) 00210 throw CORBA::BAD_PARAM(31,CORBA::COMPLETED_NO); 00211 } 00212 } 00213 }
|
|
Definition at line 88 of file OperationDef.cc. References _contexts, and Omniifr::IRObject_impl::checkReadonly(). 00089 { 00090 checkReadonly(); 00091 _contexts=v; 00092 }
|
|
Definition at line 83 of file OperationDef.cc. References _contexts. 00084 { 00085 return new ContextIdSeq(_contexts); 00086 }
|
|
Implements Omniifr::IRObject_impl. Definition at line 52 of file OperationDef.h. Referenced by describe(). 00052 {return CORBA::dk_Operation;}
|
|
Implements Omniifr::Contained_impl. Definition at line 126 of file OperationDef.cc. References _contexts, _excDescriptionSeq, _mode, _params, def_kind(), Omniifr::Contained_impl::definedInId(), Omniifr::Contained_impl::id(), Omniifr::Dependency3< T_xxxDescriptionSeq >::in(), Omniifr::Contained_impl::name(), result(), and Omniifr::Contained_impl::version(). 00127 { 00128 OperationDescription_var desc =new OperationDescription(); 00129 desc->name = name(); 00130 desc->id = id(); 00131 desc->version = version(); 00132 desc->result = result(); 00133 desc->mode = _mode; 00134 desc->contexts = _contexts; 00135 desc->parameters = _params.in(); 00136 desc->exceptions = _excDescriptionSeq; 00137 desc->defined_in = definedInId(); 00138 00139 CORBA::Contained::Description_var description = 00140 new CORBA::Contained::Description(); 00141 description->kind = def_kind(); 00142 description->value <<= desc._retn(); 00143 00144 return description._retn(); 00145 }
|
|
Definition at line 99 of file OperationDef.cc. References _excDescriptionSeq, _exceptions, Omniifr::Dependency2< T_IRObjectSeq >::assign(), Omniifr::IRObject_impl::checkReadonly(), and IFELSE_OMNIORB4. 00100 { 00101 checkReadonly(); 00102 // Construct a new ExcDescriptionSeq, ready to assign to _excDescriptionSeq. 00103 // (Checks for problems before we do anything irrevocable.) 00104 ExcDescriptionSeq eds; 00105 eds.length(v.length()); 00106 for(CORBA::ULong i=0; i<v.length(); i++) 00107 { 00108 CORBA::Contained::Description_var description =v[i]->describe(); 00109 const ExceptionDescription* exceptionDescription; 00110 Boolean ok( description->value >>= exceptionDescription ); 00111 if(!ok) 00112 throw CORBA::BAD_PARAM( 00113 IFELSE_OMNIORB4(omni::BAD_PARAM_EnumValueOutOfRange,25), 00114 CORBA::COMPLETED_NO 00115 ); 00116 eds[i]=*exceptionDescription; // take a copy 00117 // No need to delete exceptionDescription - it's still owned by the Any. 00118 } 00119 // Perform the following two assignments in the correct order to ensure that 00120 // both _exceptions & _excDescriptionSeq remain untouched if an exception 00121 // occurs. 00122 _exceptions.assign(v); // may throw BAD_PARAM 00123 _excDescriptionSeq=eds; // does not throw. 00124 }
|
|
Definition at line 94 of file OperationDef.cc. References _exceptions, and Omniifr::Dependency2< T_IRObjectSeq >::copy(). 00095 { 00096 return _exceptions.copy(); 00097 }
|
|
Definition at line 71 of file OperationDef.cc. References _mode, _params, _result_def, checkOneway(), Omniifr::IRObject_impl::checkReadonly(), IFELSE_OMNIORB4, Omniifr::Dependency1< T_IRObject >::in(), and Omniifr::Dependency3< T_xxxDescriptionSeq >::in(). 00072 { 00073 checkReadonly(); 00074 if(v!=OP_NORMAL && v!=OP_ONEWAY) 00075 throw CORBA::BAD_PARAM( 00076 IFELSE_OMNIORB4(omni::BAD_PARAM_EnumValueOutOfRange,25), 00077 CORBA::COMPLETED_NO 00078 ); 00079 checkOneway(v,_params.in(),_result_def.in()); 00080 _mode=v; 00081 }
|
|
Definition at line 66 of file OperationDef.cc. References _mode. 00067 { 00068 return _mode; 00069 }
|
|
Save this object's state to a stream.
Implements Omniifr::IRObject_impl. Definition at line 175 of file OperationDef.cc. References _contexts, _excDescriptionSeq, _exceptions, _mode, _params, _result, _result_def, Omniifr::Dependency2< T_IRObjectSeq >::in(), Omniifr::Dependency3< T_xxxDescriptionSeq >::in(), Omniifr::Dependency1< T_IRObject >::in(), and Omniifr::Contained_impl::outputSelf(). 00176 { 00177 outputSelf(os,"OperationDef"); 00178 PersistNode::outputIOR(os,_result_def.in(),"\n result_def="); 00179 cdrMemoryStream memstr(CORBA::ULong(0),CORBA::Boolean(1)/*clearMemory*/); 00180 TypeCode::marshalTypeCode(_result.in(),memstr); 00181 _params.in()>>=memstr; 00182 _mode>>=memstr; 00183 _contexts>>=memstr; 00184 _exceptions.in()>>=memstr; 00185 _excDescriptionSeq>>=memstr; 00186 PersistNode::outputCdrMemoryStream(os,memstr,"\n state="); 00187 os<<" ;;\n"; 00188 }
|
|
Definition at line 59 of file OperationDef.cc. References _mode, _params, _result_def, Omniifr::Dependency3< T_xxxDescriptionSeq >::assign(), checkOneway(), Omniifr::IRObject_impl::checkReadonly(), and Omniifr::Dependency1< T_IRObject >::in(). 00060 { 00061 checkReadonly(); 00062 checkOneway(_mode,v,_result_def.in()); // throws BAD_PARAM if check fails 00063 _params.assign(v); 00064 }
|
|
Definition at line 54 of file OperationDef.cc. References _params, and Omniifr::Dependency3< T_xxxDescriptionSeq >::copy(). Referenced by checkOneway(). 00055 { 00056 return _params.copy(); 00057 }
|
|
Re-create the repository from information saved in the log file.
Reimplemented from Omniifr::IRObject_impl. Definition at line 155 of file OperationDef.cc. References _contexts, _excDescriptionSeq, _exceptions, _mode, _params, _result, _result_def, Omniifr::Dependency2< T_IRObjectSeq >::assign(), Omniifr::Dependency1< T_IRObject >::assign(), and Omniifr::Dependency3< T_xxxDescriptionSeq >::uncheckedAssign(). 00156 { 00157 _result_def.assign( 00158 string_to_<CORBA::IDLType>(node.attrString("result_def").c_str()) 00159 ); 00160 // Read state. 00161 // Order must match that in OperationDef_impl::output(): 00162 cdrMemoryStream memstr =node.attrCdrStream("state"); 00163 _result=TypeCode::unmarshalTypeCode(memstr); // _result 00164 ParDescriptionSeq p; // _params 00165 p<<=memstr; 00166 _params.uncheckedAssign(p); 00167 _mode<<=memstr; // _mode 00168 _contexts<<=memstr; // _contexts 00169 ExceptionDefSeq e; // _exceptions 00170 e<<=memstr; 00171 _exceptions.assign(e); 00172 _excDescriptionSeq<<=memstr; // _excDescriptionSeq 00173 }
|
|
Definition at line 34 of file OperationDef.cc. References _result. Referenced by describe(). 00035 { 00036 return TypeCode::_duplicate(_result.in()); 00037 }
|
|
Definition at line 46 of file OperationDef.cc. References _mode, _params, _result, _result_def, Omniifr::Dependency1< T_IRObject >::assign(), checkOneway(), Omniifr::IRObject_impl::checkReadonly(), and Omniifr::Dependency3< T_xxxDescriptionSeq >::in(). 00047 { 00048 checkReadonly(); 00049 checkOneway(_mode,_params.in(),v); // throws BAD_PARAM if check fails 00050 _result_def.assign(IDLType::_duplicate(v)); 00051 _result=v->type(); 00052 }
|
|
Definition at line 40 of file OperationDef.cc. References _result_def, and Omniifr::Dependency1< T_IRObject >::in(). 00041 { 00042 return IDLType::_duplicate(_result_def.in()); 00043 }
|
|
Destroys this object, without first checking for dependencies.
Implements Omniifr::Contained_impl. Definition at line 147 of file OperationDef.cc. References _exceptions, _params, _result_def, Omniifr::Dependency2< T_IRObjectSeq >::clear(), Omniifr::Dependency3< T_xxxDescriptionSeq >::clear(), and Omniifr::Dependency1< T_IRObject >::clear(). 00148 { 00149 _result_def.clear(); 00150 _params.clear(); 00151 _exceptions.clear(); 00152 Contained_impl::uncheckedDestroy(); // superclass 00153 }
|
|
Definition at line 61 of file OperationDef.h. Referenced by contexts(), describe(), OperationDef_impl(), output(), and reincarnate(). |
|
set from _exceptions
Definition at line 63 of file OperationDef.h. Referenced by describe(), exceptions(), OperationDef_impl(), output(), and reincarnate(). |
|
Definition at line 62 of file OperationDef.h. Referenced by exceptions(), OperationDef_impl(), output(), reincarnate(), and uncheckedDestroy(). |
|
Definition at line 60 of file OperationDef.h. Referenced by describe(), mode(), OperationDef_impl(), output(), params(), reincarnate(), and result_def(). |
|
Definition at line 59 of file OperationDef.h. Referenced by describe(), mode(), OperationDef_impl(), output(), params(), reincarnate(), result_def(), and uncheckedDestroy(). |
|
set from _result_def
Definition at line 57 of file OperationDef.h. Referenced by OperationDef_impl(), output(), reincarnate(), result(), and result_def(). |
|
Definition at line 58 of file OperationDef.h. Referenced by mode(), OperationDef_impl(), output(), params(), reincarnate(), result_def(), and uncheckedDestroy(). |