summaryrefslogtreecommitdiff
path: root/2005/i/robert/src/socket/socket_text.hh
diff options
context:
space:
mode:
Diffstat (limited to '2005/i/robert/src/socket/socket_text.hh')
-rw-r--r--2005/i/robert/src/socket/socket_text.hh35
1 files changed, 25 insertions, 10 deletions
diff --git a/2005/i/robert/src/socket/socket_text.hh b/2005/i/robert/src/socket/socket_text.hh
index c31e38a..b734753 100644
--- a/2005/i/robert/src/socket/socket_text.hh
+++ b/2005/i/robert/src/socket/socket_text.hh
@@ -24,26 +24,39 @@
// Email: <dufourj@efrei.fr>
// }}}
-#include <vector>
-
class ServerSocket;
-class DataBuffer;
class Address;
+#include "data/data_buffer.hh"
+
+#include <vector>
class SocketText {
+ /// Structure pour stocker les informations d'un message.
+ typedef struct {
+ unsigned int size;
+ DataBuffer::dataType_e type;
+ } mess_t;
+ std::vector <mess_t> messList_;
/// L'identificateur du socket.
int socket_;
/// Buffer pour le header.
- char headBuf_[10];
+ std::vector<char> headBuf_;
/// Buffer de reception de données.
std::vector<char> recvBuf_;
/// Buffer d'émission de données.
std::vector<char> sendBuf_;
/// Taille des buffers d'E/S XXX
- unsigned int sendBufSize_;
- unsigned int recvTaille_;
+ unsigned int recvBufPos_;
+ unsigned int bufferOldSize_;
+ unsigned int bufferCurSize_;
+ /// Nombre de message dans le buffer
+ int numMessageBuffer_;
+ DataBuffer::dataType_e type_;
/// Encodage du message (rajout du header)
- int encodeMsg (const char *data, const int size);
+ void encode (const char *data, const int size,
+ const DataBuffer::dataType_e type);
+ /// Décodage du header.
+ int decode (void);
public:
/// Constructeur du serveur.
@@ -56,10 +69,12 @@ class SocketText {
SocketText &operator<< (const DataBuffer &d);
/// Reception d'un buffer de données.
SocketText &operator>> (DataBuffer &d);
- /// Envoie d'un tableau de données (data) de taille size.
- int send (const char *data, const int size);
+ /// Envoie des données du buffer.
+ int send (void);
/// Reception de données dans un vecteur.
- void recv (std::vector<char> &v);
+ bool recv (void);
+ /// Changement du bloquant non/bloquant.
+ void nonblock (bool flag = true);
};
#endif // socket_text_hh