#ifndef C_IRC_H
#define C_IRC_H
#include <cstdlib>
#include <cstring>
#include <winsock2.h>
#include <windows.h>
#include <cstdio>
#define ERROR_DEST "__NO_DESTINATION__"
#define NO_CHANNEL "__NO_CHANNEL__"
#define NO_NIKE_DEST "__NO_NIKE_DESTINATION__"
#define MARGE 5
//--- Classe IRC Connect, pour la connexion sur un serveur IRC
class ircconnect {
private:
SOCKET sock;
SOCKADDR_IN sin;
DWORD thread_id;
in_addr addr;
struct hostent *host;
char *nike_name;
char *irc_srv;
char *irc_channel;
int port_srv;
bool in_new_thread;
bool auto_connection;
char *buffer;
void init_socket(void);
public:
~ircconnect();
ircconnect(char *irc_server, char *nikename, int port, bool in_new_thread_);
void irc_join(char *irc_channel);
bool init_irc_connection(void);
bool close_irc_connection(void); // pour férmer la connection
void auto_connect(bool auto_con); // pour verifier si la connexion existe tt jour
bool irc_ping(void);
void stok_recv_message(void);
int send_message(char *destination, char *message, char *command);
char *get_nike_name(void); //trouver mon nikename
char *get_irc_server(void); //trouver l'adresse du serveur
char *get_irc_channel(void); //trouver le nom du channel
int get_server_port(void); //trouver le numero de port
char *get_message(void); //donne la message originalle
//********************************************************//
};
//---- Classe IRCCL pour le traitement des messages
class irccl : ircconnect {
private:
char *nike_name_exp;
char *nike_info;
char *irc_command;
char *irc_message;
char *destination;
bool tochannel;
bool tome;
public:
~irccl();
irccl(void);
// void irc_info(char *irc_msg);
void splitmessage(char *irc_msg); //decoupe le message qui arrive depuis le serveur IRC
char *get_nikename_exp(void); //donne le nikename de l'expediteur
char *get_nike_info_exp(void); //donne la partie abstré du nike name
char *get_command(void); //donne la command evyer avec le message
char *get_nike_destination(void); //donne la destination
char *get_destination(void); //idem
char *deletenewline(char *irc_msg); //supprime le caractaire \n à la fin
char *deletespace(char *irc_command); //surpprime de dernier espace
bool find_expeditor(char *nikenamefind); //chercher un expediteur
bool find_command(char *commandfind); //chercher une commande
bool find_message(char *messagefind); //chercher un message
bool find_destination(char *destination); //chercher une destination
bool is_message(char *irc_msg); //determiner si c'est un message ou non
bool is_ping(char *irc_msg); //determiner si c'est un ping ou non
bool is_tome(void); //determiner si le message et pour moi ou non
bool is_for_channel(void); //determiner si le message et pour le channel ou nn
//********************************************************//
};
#endif
Partager