示例#1
0
/*******************************************************************************
*  Presenta un mensaje protegido por semaforos al usuario.                     *
*                                                                              *
*  Parámetros:                                                                 *
* -Nombre de usuario.
* -Mensaje.
* -Tipo de mensaje.
* -Proceso que llama.
*                                                            *
*  Retorno:                                                                    *
* -void                                                                  *
*                                                                              *
*******************************************************************************/
void interfaceText(char *username, char *message, int type, int main_thread){

  if(!main_thread){
    gdk_threads_enter();
  }

  switch(type){
    case MSG_TEXT:
      messageText(message);
      break;
    case ERROR_TEXT:
      errorText(message);
      break;
    case PRIVATE_TEXT:
      privateText(username, message);
      break;
    case PUBLIC_TEXT:
      publicText(username, message);
      break;
    default:
      break;
  }

  if(!main_thread){
    gdk_threads_leave();
  }

}
示例#2
0
void newText (const char *msg)
{
    char irc_msg[MAX_IRC_MSG];

    if (!msg)
    {
        slog(LOG_ERR, "Se ha colado un mensaje NULL desde la interfaz");
        return;
    }

    slog(LOG_DEBUG, "Recibido el mensaje \"%s\" desde interfaz para ser procesado", msg);

    if(!client->connected && !_is_server_message(msg))
    {
        errorText("No estás conectado a ningún servidor.");
        return;
    }

    if (*msg != '/')
    {
        if (!client->in_channel)
        {
            errorText("No perteneces a ningún canal al que enviar el mensaje");
        }
        else
        {
            /* Mandamos al servidor el mensaje para los usuarios del canal. */
            irc_send_message(snd_qid, client->serv_sock, "PRIVMSG %s :%s", client->chan, msg);
            privateText(client->nick, msg);
        }
    }
    else
    {
        snprintf(irc_msg, MAX_IRC_MSG, "%s\r\n", msg + 1);
        irc_user_msgprocess(irc_msg, client);
    }
}