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
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #include "PortInterface.hpp"
00040 #include "../Service.hpp"
00041 #include "../OperationCaller.hpp"
00042 #include "../internal/ConnFactory.hpp"
00043
00044 using namespace RTT;
00045 using namespace RTT::detail;
00046 using namespace std;
00047
00048 PortInterface::PortInterface(const std::string& name)
00049 : name(name), iface(0) {}
00050
00051 bool PortInterface::setName(const std::string& name)
00052 {
00053 if ( !connected() ) {
00054 this->name = name;
00055 return true;
00056 }
00057 return false;
00058 }
00059
00060 PortInterface& PortInterface::doc(const std::string& desc) {
00061 mdesc = desc;
00062 if (iface)
00063 iface->setPortDescription(name, desc);
00064 return *this;
00065 }
00066
00067 ConnFactory* PortInterface::getConnFactory() { return 0; }
00068 bool PortInterface::isLocal() const
00069 { return serverProtocol() == 0; }
00070 int PortInterface::serverProtocol() const
00071 { return 0; }
00072
00073 ConnID* PortInterface::getPortID() const
00074 { return new LocalConnID(this); }
00075
00076 Service* PortInterface::createPortObject()
00077 {
00078 #ifndef ORO_EMBEDDED
00079 Service* to = new Service( this->getName(), iface->getOwner() );
00080 to->addSynchronousOperation( "name",&PortInterface::getName, this).doc(
00081 "Returns the port name.");
00082 to->addSynchronousOperation("connected", &PortInterface::connected, this).doc("Check if this port is connected and ready for use.");
00083
00084 typedef void (PortInterface::*disconnect_all)();
00085 to->addSynchronousOperation("disconnect", static_cast<disconnect_all>(&PortInterface::disconnect), this).doc("Disconnects this port from any connection it is part of.");
00086 return to;
00087 #else
00088 return 0;
00089 #endif
00090 }
00091
00092 void PortInterface::setInterface(DataFlowInterface* dfi) {
00093 iface = dfi;
00094 }
00095
00096 DataFlowInterface* PortInterface::getInterface() const
00097 {
00098 return iface;
00099 }
00100