#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