2 //=============================================================================
3 // File : DataFlowBase_DynInvoke.cxx
5 // Author : Marc Tajchman, CEA
8 //=============================================================================
13 #include "DataFlowExecutor_InNode.hxx"
15 using namespace CORBA ;
19 void GraphExecutor::InNode::DynInvoke(Engines::Component_ptr obj ,
21 ServicesAnyData * inParams , int nInParams ,
22 ServicesAnyData * outParams , int nOutParams ) {
23 Request_var req = obj->_request( method ) ;
26 NVList_ptr arguments =req->arguments() ;
30 int n_in = nInParams ;
31 int n_out = nOutParams ;
33 for ( i = 0 ; i < n_in ; i++ ) {
34 CORBA::Any & data = inParams[i].Value ;
35 s = inParams[i].Name.c_str() ;
36 arguments->add_value( s , data , CORBA::ARG_IN ) ;
38 switch ( data.type()->kind() ) {
39 case CORBA::tk_string :
42 MESSAGE( "ArgIn" << i << " : " << s << " Value " << t << " (string)") ;
44 case CORBA::tk_double :
47 MESSAGE( "ArgIn" << i << " : " << s << " Value " << d << " (double)") ;
52 MESSAGE( "ArgIn" << i << " : " << s << " Value " << l << " (long)") ;
54 case CORBA::tk_objref :
55 MESSAGE( "ArgIn" << i << " : " << s << " Value " << "(object reference)") ;
58 MESSAGE( "ArgIn" << i << " : " << s << " Value " << "(other ERROR)") ;
64 for ( i = 0 ; i < n_out ; i++ ) {
65 CORBA::Any & data = outParams[i].Value ;
66 s = outParams[i].Name.c_str() ;
67 arguments->add_value( s , data , CORBA::ARG_OUT ) ;
69 switch ( data.type()->kind() ) {
70 case CORBA::tk_string :
73 MESSAGE( "ArgOut" << i << " : " << s << " Value " << t << " (string)") ;
75 case CORBA::tk_double :
78 MESSAGE( "ArgOut" << i << " : " << s << " Value " << d << " (double)") ;
83 MESSAGE( "ArgOut" << i << " : " << s << " Value " << l << " (long)") ;
85 case CORBA::tk_objref :
86 MESSAGE( "ArgOut" << i << " : " << s << " Value " << "(object reference)") ;
89 MESSAGE( "ArgOut" << i << " : " << s << " Value " << "(other ERROR)") ;
97 if( req->env()->exception() ) {
98 req->env()->exception()->_raise() ;
99 return ; // pas utile ?
102 for ( i = 0 ; i < n_out ; i++ ) {
104 outParams[i].Value = *( arguments->item( i + n_in )->value() ) ;
111 void GraphExecutor::InNode::DynInvoke( Engines::Component_ptr obj ,
113 const char * aGraphName ,
114 const char * aNodeName ) {
115 Request_var req = obj->_request( method ) ;
118 NVList_ptr arguments =req->arguments() ;
121 graph <<= aGraphName ;
122 arguments->add_value( "aGraphName" , graph , CORBA::ARG_IN ) ;
125 arguments->add_value( "aNodeName" , node , CORBA::ARG_IN ) ;
129 if( req->env()->exception() ) {
130 req->env()->exception()->_raise();