00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _CALCIUM_GENERIC_USES_PORT_HXX_
00029 #define _CALCIUM_GENERIC_USES_PORT_HXX_
00030
00031 #include "GenericUsesPort.hxx"
00032 #include "calcium_uses_port.hxx"
00033
00034 template <typename DataManipulator, typename CorbaPortType, char * repositoryName >
00035 class CalciumGenericUsesPort : public GenericUsesPort<DataManipulator,CorbaPortType, repositoryName,
00036 calcium_uses_port >
00037 {
00038 public :
00039 virtual ~CalciumGenericUsesPort() {};
00040 void disconnect(bool provideLastGivenValue);
00041
00042 };
00043
00044
00045 template <typename DataManipulator,typename CorbaPortType, char * repositoryName >
00046 void
00047 CalciumGenericUsesPort< DataManipulator,CorbaPortType, repositoryName >::disconnect(bool provideLastGivenValue ) {
00048
00049 typedef typename CorbaPortType::_ptr_type CorbaPortTypePtr;
00050
00051 if (!this->_my_ports)
00052 throw DSC_Exception(LOC("There is no connected provides port to communicate with."));
00053
00054 for(int i = 0; i < this->_my_ports->length(); i++) {
00055 CorbaPortTypePtr port = CorbaPortType::_narrow((*this->_my_ports)[i]);
00056 try {
00057 #ifdef MYDEBUG
00058 std::cerr << "-------- CalciumGenericUsesPort<>::disconnect: "<< i << std::endl;
00059 #endif
00060
00061 port->disconnect(provideLastGivenValue);
00062 } catch(const CORBA::SystemException& ex){
00063 std::cerr << "Can't call disconnect on provides port " << i << std::endl;
00064 }
00065 }
00066
00067 }
00068
00069
00070 #endif