+// $Id$
+//
// Copyright (C) 2007
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
// Stefan Bund <g0dil@berlios.de>
//
// This program is free software; you can redistribute it and/or modify
#include <deque>
#include <boost/utility.hpp>
#include <boost/scoped_ptr.hpp>
-#include "Utils/SafeBool.hh"
-#include "Packets/Packets.hh"
+#include "../Utils/safe_bool.hh"
+#include "../Packets/Packets.hh"
#include "predecl.hh"
#include "detail/Callback.hh"
#include "Queueing.hh"
All passive connectors call some onRequest callback whenever I/O needs to be performed. All
input modules possess a packet queue.
- We therefore have 4 connector types: senf::ppi::ActiveInput, senf::ppi::ActiveOutput,
- senf::ppi::PassiveInput and senf::ppi::PassiveOutput.
+ We therefore have 4 connector types:
+ \li senf::ppi::connector::ActiveInput
+ \li senf::ppi::connector::ActiveOutput
+ \li senf::ppi::connector::PassiveInput
+ \li senf::ppi::connector::PassiveOutput.
+
+ Connectors are declared as module data members and are then externally connected to other
+ modules.
+
+ \see
+ senf::ppi::module::Module \n
+ senf::ppi::connect()
+ \ref ppi_connectors
*/
/** \brief Connector base-class
holds this input. In the second case, the pointer will
automatically be bound to the containing instance.
- \param[in] handle Handler to call on unthrottle
+ \param[in] handler Handler to call on unthrottle
notifications. */
void onUnthrottle(); ///< Clear unthrottle notification handler
typedef Queue::const_iterator queue_iterator; ///< Iterator type of the embedded queue
typedef Queue::size_type size_type; ///< Unsigned type for counting queue elements
+
Packet operator()(); ///< Get a packet
/**< This member is the primary method to access received
data. On passive connectors, this operator will just
logic error in the module implementation and an
exception is raised. */
+ Packet read(); ///< Alias for operator()()
+
OutputConnector & peer() const;
queue_iterator begin() const; ///< Access queue begin (head)
: public virtual Connector
{
public:
- void operator()(Packet p); ///< Send out a packet
+ void operator()(Packet p); ///< Send out a packet
+
+ void write(Packet p); ///< Alias for operator()(Packet p)
InputConnector & peer() const;
OutputConnector();
};
- ///@{
- ///\addtogroup connectors
-
/** \brief Combination of PassiveConnector and InputConnector
The PassiveInput automatically controls the connectors throttling state using a queueing
*/
class PassiveInput
: public PassiveConnector, public InputConnector,
- public SafeBool<PassiveInput>
+ public safe_bool<PassiveInput>
{
public:
PassiveInput();
*/
class PassiveOutput
: public PassiveConnector, public OutputConnector,
- public SafeBool<PassiveOutput>
+ public safe_bool<PassiveOutput>
{
public:
ActiveInput & peer() const;
*/
class ActiveInput
: public ActiveConnector, public InputConnector,
- public SafeBool<ActiveInput>
+ public safe_bool<ActiveInput>
{
public:
PassiveOutput & peer() const;
*/
class ActiveOutput
: public ActiveConnector, public OutputConnector,
- public SafeBool<ActiveOutput>
+ public safe_bool<ActiveOutput>
{
public:
PassiveInput & peer() const;
void connect(PassiveInput & target); ///< Internal: Use senf::ppi::connect() instead
};
- ///@}
-
}}}
///////////////////////////////hh.e////////////////////////////////////////