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 #ifndef _CALCIUM_GENERIC_USES_PORT_HXX_
00028 #define _CALCIUM_GENERIC_USES_PORT_HXX_
00029
00030 #include "GenericUsesPort.hxx"
00031 #include "calcium_uses_port.hxx"
00032
00033 template <typename DataManipulator, typename CorbaPortType, char * repositoryName >
00034 class CalciumGenericUsesPort : public GenericUsesPort<DataManipulator,CorbaPortType, repositoryName,
00035 calcium_uses_port >
00036 {
00037 public :
00038 virtual ~CalciumGenericUsesPort() {};
00039 void disconnect(bool provideLastGivenValue);
00040
00041 };
00042
00043
00044 template <typename DataManipulator,typename CorbaPortType, char * repositoryName >
00045 void
00046 CalciumGenericUsesPort< DataManipulator,CorbaPortType, repositoryName >::disconnect(bool provideLastGivenValue ) {
00047
00048 typedef typename CorbaPortType::_ptr_type CorbaPortTypePtr;
00049
00050 if (!this->_my_ports)
00051 throw DSC_Exception(LOC("There is no connected provides port to communicate with."));
00052
00053 for(int i = 0; i < this->_my_ports->length(); i++) {
00054 CorbaPortTypePtr port = CorbaPortType::_narrow((*this->_my_ports)[i]);
00055 try {
00056 #ifdef MYDEBUG
00057 std::cerr << "-------- CalciumGenericUsesPort<>::disconnect: "<< i << std::endl;
00058 #endif
00059
00060 port->disconnect(provideLastGivenValue);
00061 } catch(const CORBA::SystemException& ex){
00062 std::cerr << "Can't call disconnect on provides port " << i << std::endl;
00063 }
00064 }
00065
00066 }
00067
00068
00069 #endif