Go to the documentation of this file.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