#define HH_SocketWriter_ 1
// Custom includes
-#include "Packets/Packet.hh"
+#include "Packets/Packets.hh"
+#include "Socket/ClientSocketHandle.hh"
+#include "Socket/SocketPolicy.hh"
+#include "Socket/ReadWritePolicy.hh"
+#include "Socket/FramingPolicy.hh"
+#include "Socket/CommunicationPolicy.hh"
#include "Module.hh"
-#include "Connector.hh"
+#include "Connectors.hh"
//#include "SocketWriter.mpp"
///////////////////////////////hh.p////////////////////////////////////////
/** \brief Write helper for module::ActiveSocketWriter / module::PassiveSocketWriter
- This write helper will write the packets completely as datagrmas to the given socket.
+ This write helper will write the packets completely as datagrams to the given socket.
*/
class PacketWriter
{
public:
typedef senf::ClientSocketHandle<
senf::MakeSocketPolicy< senf::WriteablePolicy,
- senf::DatagramFramingPolicy > > Handle;
+ senf::DatagramFramingPolicy,
+ senf::ConnectedCommunicationPolicy>::policy > Handle;
///< Handle type supported by this writer
- void operator()(Handle handle, Packet::ptr packet);
+ void operator()(Handle handle, Packet packet);
///< Write \a packet to \a handle
/**< Write the complete \a packet as a datagram to \a
handle.
public:
typedef unspecified Handle; // type of handle requested
SomeWriter(); // default constructible
- void operator()(Handle handle, Packet::ptr packet); // insertion function
+ void operator()(Handle handle, Packet packet); // insertion function
};
\endcode
+
+ \ingroup io_modules
*/
template <class Writer=PacketWriter>
class ActiveSocketWriter : public Module
{
+ SENF_PPI_MODULE(ActiveSocketWriter);
+
public:
- typedef typename Writer:Handle Handle; ///< Handle type requested by writer
+ typedef typename Writer::Handle Handle; ///< Handle type requested by writer
connector::ActiveInput input; ///< Input connector from which data is received
ActiveSocketWriter(Handle handle); ///< Create new writer for the given handle
/**< Data will be written to \a handle using \a Writer.
\param[in] handle Handle to write data to */
+ private:
+ void write();
+
+ Handle handle_;
+ IOEvent event_;
+ Writer writer_;
};
/** \brief Output module writing data to arbitrary FileHandle
public:
typedef unspecified Handle; // type of handle requested
SomeWriter(); // default constructible
- void operator()(Handle handle, Packet::ptr packet); // insertion function
+ void operator()(Handle handle, Packet packet); // insertion function
};
\endcode
+
+ \ingroup io_modules
*/
template <class Writer=PacketWriter>
class PassiveSocketWriter : public Module
{
+ SENF_PPI_MODULE(PassiveSocketWriter);
+
public:
- typedef typename Writer:Handle Handle; ///< Handle type requested by writer
+ typedef typename Writer::Handle Handle; ///< Handle type requested by writer
connector::PassiveInput input; ///< Input connector from which data is received
- ActiveSocketWriter(Handle handle); ///< Create new writer for the given handle
+ PassiveSocketWriter(Handle handle); ///< Create new writer for the given handle
/**< Data will be written to \a handle using \a Writer.
\param[in] handle Handle to write data to */
+
+ private:
+ void write();
+
+ Handle handle_;
+ Writer writer_;
};
}}}
///////////////////////////////hh.e////////////////////////////////////////
-//#include "SocketWriter.cci"
-//#include "SocketWriter.ct"
+#include "SocketWriter.cci"
+#include "SocketWriter.ct"
//#include "SocketWriter.cti"
#endif
// c-file-style: "senf"
// indent-tabs-mode: nil
// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// comment-column: 40
// End: