Minor stuff on the uhub-admin tool based on the changes in the ADC client code.
This commit is contained in:
parent
ff2e2a3d4c
commit
5b4467acd5
|
@ -19,52 +19,122 @@
|
||||||
|
|
||||||
#include "adcclient.h"
|
#include "adcclient.h"
|
||||||
|
|
||||||
|
static struct ADC_user g_usermap[SID_MAX];
|
||||||
|
|
||||||
|
static void user_add(const struct ADC_user* user)
|
||||||
|
{
|
||||||
|
printf(" >> JOIN: %s (%s)\n", user->name, user->address);
|
||||||
|
memcpy(&g_usermap[user->sid], user, sizeof(struct ADC_user));
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct ADC_user* user_get(sid_t sid)
|
||||||
|
{
|
||||||
|
|
||||||
|
struct ADC_user* user = &g_usermap[sid];
|
||||||
|
uhub_assert(user->sid != 0);
|
||||||
|
return user;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void user_remove(const struct ADC_client_quit_reason* quit)
|
||||||
|
{
|
||||||
|
struct ADC_user* user = user_get(quit->sid);
|
||||||
|
printf(" << QUIT: %s (%s)\n", user->name, quit->message);
|
||||||
|
memset(&g_usermap[quit->sid], 0, sizeof(struct ADC_user));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void on_message(struct ADC_chat_message* chat)
|
||||||
|
{
|
||||||
|
struct ADC_user* user;
|
||||||
|
const char* pm = (chat->flags & chat_flags_private) ? "PM" : " ";
|
||||||
|
const char* brack1 = (chat->flags & chat_flags_action) ? "*" : "<";
|
||||||
|
const char* brack2 = (chat->flags & chat_flags_action) ? "" : ">";
|
||||||
|
struct linked_list* lines;
|
||||||
|
int ret;
|
||||||
|
char* line;
|
||||||
|
|
||||||
|
if (!chat->from_sid)
|
||||||
|
{
|
||||||
|
printf("HUB ");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
user = user_get(chat->from_sid);
|
||||||
|
printf(" %s %s%s%s ", pm, brack1, user->name, brack2);
|
||||||
|
}
|
||||||
|
|
||||||
|
lines = list_create();
|
||||||
|
ret = split_string(chat->message, "\n", lines, 1);
|
||||||
|
|
||||||
|
line = (char*) list_get_first(lines);
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
|
while (line)
|
||||||
|
{
|
||||||
|
if (ret > 0)
|
||||||
|
printf(" ");
|
||||||
|
printf("%s\n", line);
|
||||||
|
ret++;
|
||||||
|
line = (char*) list_get_next(lines);
|
||||||
|
}
|
||||||
|
|
||||||
|
list_clear(lines, &hub_free);
|
||||||
|
list_destroy(lines);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void status(const char* msg)
|
||||||
|
{
|
||||||
|
printf("*** %s\n", msg);
|
||||||
|
}
|
||||||
|
|
||||||
static int handle(struct ADC_client* client, enum ADC_client_callback_type type, struct ADC_client_callback_data* data)
|
static int handle(struct ADC_client* client, enum ADC_client_callback_type type, struct ADC_client_callback_data* data)
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case ADC_CLIENT_CONNECTING:
|
case ADC_CLIENT_CONNECTING:
|
||||||
puts("*** Connecting...");
|
status("Connecting...");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ADC_CLIENT_CONNECTED:
|
case ADC_CLIENT_CONNECTED:
|
||||||
puts("*** Connected.");
|
status("Connected.");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ADC_CLIENT_DISCONNECTED:
|
case ADC_CLIENT_DISCONNECTED:
|
||||||
puts("*** Disconnected.");
|
status("Disconnected.");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ADC_CLIENT_SSL_HANDSHAKE:
|
case ADC_CLIENT_SSL_HANDSHAKE:
|
||||||
puts("*** SSL handshake.");
|
status("SSL handshake.");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ADC_CLIENT_LOGGING_IN:
|
case ADC_CLIENT_LOGGING_IN:
|
||||||
puts("*** Logging in...");
|
status("Logging in...");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ADC_CLIENT_PASSWORD_REQ:
|
case ADC_CLIENT_PASSWORD_REQ:
|
||||||
puts("*** Requesting password.");
|
status("Requesting password.");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ADC_CLIENT_LOGGED_IN:
|
case ADC_CLIENT_LOGGED_IN:
|
||||||
puts("*** Logged in.");
|
status("Logged in.");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ADC_CLIENT_LOGIN_ERROR:
|
case ADC_CLIENT_LOGIN_ERROR:
|
||||||
puts("*** Login error");
|
status("Login error");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case ADC_CLIENT_MESSAGE:
|
case ADC_CLIENT_MESSAGE:
|
||||||
printf(" <%s> %s\n", sid_to_string(data->chat->from_sid), data->chat->message);
|
on_message(data->chat);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ADC_CLIENT_USER_JOIN:
|
case ADC_CLIENT_USER_JOIN:
|
||||||
printf(" JOIN: %s %s\n", sid_to_string(data->user->sid), data->user->name);
|
|
||||||
|
user_add(data->user);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ADC_CLIENT_USER_QUIT:
|
case ADC_CLIENT_USER_QUIT:
|
||||||
printf(" QUIT\n");
|
user_remove(data->quit);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ADC_CLIENT_SEARCH_REQ:
|
case ADC_CLIENT_SEARCH_REQ:
|
||||||
|
@ -96,6 +166,8 @@ int main(int argc, char** argv)
|
||||||
struct ADC_client client;
|
struct ADC_client client;
|
||||||
net_initialize();
|
net_initialize();
|
||||||
|
|
||||||
|
memset(g_usermap, 0, sizeof(g_usermap));
|
||||||
|
|
||||||
ADC_client_create(&client, "uhub-admin", "stresstester");
|
ADC_client_create(&client, "uhub-admin", "stresstester");
|
||||||
ADC_client_set_callback(&client, handle);
|
ADC_client_set_callback(&client, handle);
|
||||||
ADC_client_connect(&client, argv[1]);
|
ADC_client_connect(&client, argv[1]);
|
||||||
|
|
Loading…
Reference in New Issue