dcc: Introduce dcc_type and dcc_state enums

Closes #1705
This commit is contained in:
Ben Gamari 2016-05-08 09:48:13 +02:00 committed by Patrick Griffis
parent 77dccacd02
commit 9e11280e52
3 changed files with 35 additions and 14 deletions

View File

@ -81,7 +81,7 @@ static int dcc_global_throttle; /* 0x1 = sends, 0x2 = gets */
static gint64 dcc_sendcpssum, dcc_getcpssum;
static struct DCC *new_dcc (void);
static void dcc_close (struct DCC *dcc, int dccstat, int destroy);
static void dcc_close (struct DCC *dcc, enum dcc_state dccstat, int destroy);
static gboolean dcc_send_data (GIOChannel *, GIOCondition, struct DCC *);
static gboolean dcc_read (GIOChannel *, GIOCondition, struct DCC *);
static gboolean dcc_read_ack (GIOChannel *source, GIOCondition condition, struct DCC *dcc);
@ -293,6 +293,8 @@ dcc_check_timeouts (void)
if (prefs.hex_dcc_remove)
dcc_close (dcc, 0, TRUE);
break;
default:
break;
}
list = next;
}
@ -367,7 +369,7 @@ dcc_connect_sok (struct DCC *dcc)
}
static void
dcc_close (struct DCC *dcc, int dccstat, int destroy)
dcc_close (struct DCC *dcc, enum dcc_state dccstat, int destroy)
{
if (dcc->wiotag)
{
@ -1606,6 +1608,8 @@ dcc_accept (GIOChannel *source, GIOCondition condition, struct DCC *dcc)
EMIT_SIGNAL (XP_TE_DCCCONCHAT, dcc->serv->front_session,
dcc->nick, host, NULL, NULL, 0);
break;
default:
break;
}
fe_dcc_update (dcc);
@ -2183,6 +2187,8 @@ dcc_get (struct DCC *dcc)
case STAT_ABORTED:
dcc_close (dcc, 0, TRUE);
break;
default:
break;
}
}
@ -2265,6 +2271,9 @@ dcc_chat (struct session *sess, char *nick, int passive)
case STAT_ABORTED:
case STAT_FAILED:
dcc_close (dcc, 0, TRUE);
break;
case STAT_DONE:
break;
}
}
dcc = find_dcc (nick, "", TYPE_CHATRECV);
@ -2278,6 +2287,9 @@ dcc_chat (struct session *sess, char *nick, int passive)
case STAT_FAILED:
case STAT_ABORTED:
dcc_close (dcc, 0, TRUE);
break;
default:
break;
}
return;
}

View File

@ -25,17 +25,21 @@
#ifndef HEXCHAT_DCC_H
#define HEXCHAT_DCC_H
#define STAT_QUEUED 0
#define STAT_ACTIVE 1
#define STAT_FAILED 2
#define STAT_DONE 3
#define STAT_CONNECTING 4
#define STAT_ABORTED 5
enum dcc_state {
STAT_QUEUED = 0,
STAT_ACTIVE,
STAT_FAILED,
STAT_DONE,
STAT_CONNECTING,
STAT_ABORTED
};
#define TYPE_SEND 0
#define TYPE_RECV 1
#define TYPE_CHATRECV 2
#define TYPE_CHATSEND 3
enum dcc_type {
TYPE_SEND = 0,
TYPE_RECV,
TYPE_CHATRECV,
TYPE_CHATSEND
};
#define CPS_AVG_WINDOW 10
@ -72,8 +76,8 @@ struct DCC
char *file; /* utf8 */
char *destfile; /* utf8 */
char *nick;
unsigned char type; /* 0 = SEND 1 = RECV 2 = CHAT */
unsigned char dccstat; /* 0 = QUEUED 1 = ACTIVE 2 = FAILED 3 = DONE */
enum dcc_type type;
enum dcc_state dccstat;
unsigned int resume_sent:1; /* resume request sent */
unsigned int fastsend:1;
unsigned int ackoffset:1; /* is receiver sending acks as an offset from */

View File

@ -713,6 +713,11 @@ dcc_dclick_cb (GtkTreeView *view, GtkTreePath *path,
case STAT_ABORTED:
case STAT_DONE:
dcc_abort (dcc->serv->front_session, dcc);
break;
case STAT_QUEUED:
case STAT_ACTIVE:
case STAT_CONNECTING:
break;
}
}