The only thing you might want to do is combine it with Recv. Why? As you'll realize in a page or two, the Xmit and Recv objects must interact if you're going to ensure a safe transit. By having a single object it's easier to coordinate and maintain the interaction.
// $Id: page14.html,v 1.4 1998/10/27 19:05:56 jcej Exp $ #ifndef XMIT_H #define XMIT_h #include "Protocol_Task.h" // Forward reference reduces #include dependencies class ACE_SOCK_Stream; /* A class suitable for sending data to a peer from within an ACE_Stream. */ class Xmit : public Protocol_Task { public: typedef Protocol_Task inherited; // We must be given a valid peer when constructed. Without that // we don't know who to send data to. Xmit( ACE_SOCK_Stream & _peer ); ~Xmit(void); // As you know, close() will be called in a couple of ways by the // ACE framework. We use that opportunity to terminate the // connection to the peer. int close(u_long flags); protected: ACE_SOCK_Stream & peer(void) { return this->peer_; } // Send the data to the peer. By now it will have been // completely protocol-ized by other tasks in the stream. int send(ACE_Message_Block *message, ACE_Time_Value *timeout); private: // A representation of the peer we're talking to. ACE_SOCK_Stream & peer_; }; #endif // XMIT_H