Orocos Real-Time Toolkit  2.8.3
ConnInputEndPoint.hpp
Go to the documentation of this file.
1 /***************************************************************************
2  tag: Peter Soetens Thu Oct 22 11:59:08 CEST 2009 ConnInputEndPoint.hpp
3 
4  ConnInputEndPoint.hpp - description
5  -------------------
6  begin : Thu October 22 2009
7  copyright : (C) 2009 Sylvain Joyeux
8  email : sylvain.joyeux@m4x.org
9 
10  ***************************************************************************
11  * This library is free software; you can redistribute it and/or *
12  * modify it under the terms of the GNU General Public *
13  * License as published by the Free Software Foundation; *
14  * version 2 of the License. *
15  * *
16  * As a special exception, you may use this file as part of a free *
17  * software library without restriction. Specifically, if other files *
18  * instantiate templates or use macros or inline functions from this *
19  * file, or you compile this file and link it with other files to *
20  * produce an executable, this file does not by itself cause the *
21  * resulting executable to be covered by the GNU General Public *
22  * License. This exception does not however invalidate any other *
23  * reasons why the executable file might be covered by the GNU General *
24  * Public License. *
25  * *
26  * This library is distributed in the hope that it will be useful, *
27  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
28  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
29  * Lesser General Public License for more details. *
30  * *
31  * You should have received a copy of the GNU General Public *
32  * License along with this library; if not, write to the Free Software *
33  * Foundation, Inc., 59 Temple Place, *
34  * Suite 330, Boston, MA 02111-1307 USA *
35  * *
36  ***************************************************************************/
37 
38 
39 #ifndef ORO_CONN_INPUT_ENDPOINT_HPP
40 #define ORO_CONN_INPUT_ENDPOINT_HPP
41 
42 #include "Channels.hpp"
43 
44 namespace RTT
45 { namespace internal {
46 
50  template<typename T>
52  {
53  OutputPort<T>* port;
54  ConnID* cid;
55 
56  public:
58  : port(port), cid(id) { }
59 
61  {
62  //this->disconnect(false); // inform port (if any) we're gone.
63  delete cid;
64  }
65 
67 
72  { return NoData; }
73 
74  virtual bool inputReady() {
75  return true;
76  }
77 
78  virtual void disconnect(bool forward)
79  {
80  // Call the base class first
82 
83  OutputPort<T>* port = this->port;
84  if (port && !forward)
85  {
86  this->port = 0;
87  port->removeConnection( cid );
88  }
89  }
90 
91  virtual base::PortInterface* getPort() const {
92  return this->port;
93  }
94 
95  virtual ConnID* getConnID() const {
96  return this->cid;
97  }
98 
99  std::string getElementName() const {
100  return std::string("ConnInputEndpoint");
101  }
102 
103  };
104 
105 }}
106 
107 #endif
108 
virtual FlowStatus read(typename base::ChannelElement< T >::reference_t sample)
Reads a new sample from this connection This should never be called, as all connections are supposed ...
virtual void disconnect(bool forward)
Performs a disconnection of this channel&#39;s endpoints.
This is a channel element that represents the input endpoint of a connection, i.e.
virtual base::PortInterface * getPort() const
Gets the port this channel element is connected to.
FlowStatus
Returns the status of a data flow read.
Definition: FlowStatus.hpp:54
virtual ConnID * getConnID() const
Gets the Connection ID of this channel.
virtual void disconnect(bool forward)
Performs a disconnection of this channel&#39;s endpoints.
A typed version of ChannelElementBase.
boost::call_traits< T >::reference reference_t
virtual bool removeConnection(internal::ConnID *cid)
Removes the connection associated with this channel, and the channel as well.
ConnInputEndpoint(OutputPort< T > *port, ConnID *id)
A component&#39;s data output port.
Definition: OutputPort.hpp:70
std::string getElementName() const
Returns the class name of this element.
This class is used in places where a permanent representation of a reference to a connection is neede...
Definition: ConnID.hpp:58
Contains TaskContext, Activity, OperationCaller, Operation, Property, InputPort, OutputPort, Attribute.
Definition: Activity.cpp:51
The base class of every data flow port.
virtual bool inputReady()
This is called by an input port when it is ready to receive data.