예제 #1
0
파일: main.c 프로젝트: maximgonchar/kpi
int main()
{
    // Change console appearance.
    SetConsoleTitle("Chat - Maxim Gonchar Var8");
    SMALL_RECT windowSize = { 0, 0, 79, 49 };
    SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &windowSize);

    // Testing module.
    chat_t *testChat = chat_new("KR_1 chat");
    list_t *usersList = chat_getUsersObjects(testChat);

    chat_printInfo(testChat);
    puts("");

    chat_addUser(testChat, "Maxim", "Gonchar");
    chat_addUser(testChat, "Sergei", "Romaniyk");
    chat_addUser(testChat, "Fedya", "Andrienko");

    printf("Users list:\n%s\n", chat_getUsersList(testChat));
    puts("");

    printf("This guy will send messages now: \n");
    user_t *tempSender = (user_t *) list_getNodeValueByIndex(usersList, 0);
    user_printInfo(tempSender);
    msg_t *tempMessage = msg_new("Hello", "World");
    user_sendMessageToAll(testChat, tempSender, tempMessage, testCallback);

    // Free allocated memory.
    chat_delete(testChat);
    return 0;
}
예제 #2
0
PurpleChat *qq_room_find_or_new(PurpleConnection *gc, guint32 id, guint32 qun_id)
{
	qq_data *qd;
	qq_room_data *rmd;
	PurpleChat *chat;
	gchar *num_str;

	g_return_val_if_fail (gc != NULL && gc->proto_data != NULL, NULL);
	qd = (qq_data *) gc->proto_data;

	g_return_val_if_fail(id != 0 && qun_id != 0, NULL);

	purple_debug_info("QQ", "Find or add new room: id %u, qun id %u\n", id, qun_id);

	rmd = qq_room_data_find(gc, id);
	if (rmd == NULL) {
		rmd = room_data_new(id, qun_id, NULL);
		g_return_val_if_fail(rmd != NULL, NULL);
		rmd->my_role = QQ_ROOM_ROLE_YES;
		qd->rooms = g_slist_append(qd->rooms, rmd);
	}

	num_str = g_strdup_printf("%u", qun_id);
	chat = purple_blist_find_chat(purple_connection_get_account(gc), num_str);
	g_free(num_str);
	if (chat) {
		return chat;
	}

	return chat_new(gc, rmd);
}
예제 #3
0
파일: chat.c 프로젝트: asvitkine/phxd
void
rcv_chat_create (struct htlc_conn *htlc)
{
   struct htlc_conn *htlcp;
   u_int32_t uid = 0, ref;
   u_int16_t uid16, icon, color;

   dh_start(htlc)
      if (dh_type != HTLC_DATA_UID)
         continue;
      dh_getint(uid);
      if ((htlcp = isclient(htlc->sid, uid))) {
         struct htlc_chat *chat = chat_new();

         chat_set(htlc, chat, 0);
         ref = htonl(chat->ref);
         uid16 = htons(htlc->uid);
         icon = htons(htlc->icon);
         color = htons(htlc->color);
         hlwrite(htlc, HTLS_HDR_TASK, 0, 5,
            HTLS_DATA_CHAT_ID, sizeof(ref), &ref,
            HTLS_DATA_UID, sizeof(uid16), &uid16,
            HTLS_DATA_ICON, sizeof(icon), &icon,
            HTLS_DATA_COLOUR, sizeof(color), &color,
            HTLS_DATA_NAME, strlen(htlc->name), htlc->name);
         if (htlc->uid != (u_int16_t)uid)
            hlwrite(htlcp, HTLS_HDR_CHAT_INVITE, 0, 3,
               HTLS_DATA_CHAT_ID, sizeof(ref), &ref,
               HTLS_DATA_UID, sizeof(uid16), &uid16,
               HTLS_DATA_NAME, strlen(htlc->name), htlc->name);
      } else
         send_taskerror(htlc, "who?!?");
   dh_end()
}
예제 #4
0
파일: main.c 프로젝트: Konimiks/hello-world
int main(void){
    chat_t * chat = chat_new("First Chat");
    printf("1st task(Chat name is) : %s\n", get_chat_name(chat));//1st task

    user_t * firstUser = user_new("Dima", "Diachenko", 18);
    chat_add_user(chat, firstUser);
    user_t * secondUser = user_new("Gleb", "Davidov", 18);
    chat_add_user(chat, secondUser); //6th task

    list_t * users_list = list_new();
    users_list = chat_get_list_of_users(chat);

    printf("4th task (and 6th task)(Users in list) : %i\n", list_getSize(users_list));//4th task

    printf("2d task : List of users:\n"); // 2d task
    for(int i = 0; i < list_getSize(users_list); i++){
        user_t * tmp  = (user_t*) list_get(users_list, i);
        printf("%s %s %i\n", user_get_name(tmp), user_get_surname(tmp), user_get_age(tmp));
    }

    printf("7th task : %s - this user was removed!\n", user_get_surname(chat_remove_user_by_surname(chat, "Davidov")));//7th task

    users_list = chat_get_list_of_users(chat);

    printf("2d task : List of users:\n"); // 2d task
    for(int i = 0; i < list_getSize(users_list); i++){
        user_t * tmp  = (user_t*) list_get(users_list, i);
        printf("%s %s %i\n", user_get_name(tmp), user_get_surname(tmp), user_get_age(tmp));
    }

    message_t * msg1 = message_new("Hello!", firstUser);

    chat_add_message(chat, msg1);//8th task
    printf("8th task: added message to chat:\n%s:\t%s\n", user_get_surname(get_owner(msg1)), get_message_text(msg1));

    list_t * msgs_list = list_new();
    msgs_list = get_list_of_messages_of_one_user(chat, firstUser);//5th task
    printf("5th task : Messages of user %s\n", user_get_surname(firstUser));
    for(int i = 0; i < list_getSize(msgs_list); i++){
        message_t * tmpmsg = list_get(msgs_list, i);
        printf("%s\n", get_message_text(tmpmsg));
    }

    msgs_list = get_last_messages(chat, 1);
    printf("3d task : List of last messages(1):\n");
    for(int i = 0; i < list_getSize(msgs_list); i++){
        message_t * tmpmsg = list_get(msgs_list, i);
        printf("%s\n", get_message_text(tmpmsg));
    }

    return 0;
}
예제 #5
0
static void getNLastMsges__fiveMessages__messagesAdded(void **state)
{
	chat_t *testChat = chat_new("KR_1 chat");
        list_t *usersList = chat_getUsersObjects(testChat);
	chat_addUser(testChat, "Maxim", "Gonchar");
	msg_t *tempMessage1 = msg_new("Hello1", "World");
	msg_t *tempMessage2 = msg_new("Hello2", "World");
	msg_t *tempMessage3 = msg_new("Hello3", "World");
	msg_t *tempMessage4 = msg_new("Hello4", "World");
	msg_t *tempMessage5 = msg_new("Hell5", "World");
	
	// This task isn`t done yet. Agree with -marks.
}
예제 #6
0
void
main_thread_entry(cyg_addrword_t p)
{
    CYG_TEST_INFO("Initializing lwIP");
    cyg_lwip_simple_init();

    test_state = TEST_CHAT_INIT;
    req_state = REQ_DNS_INIT;

    while (1) {
        cyg_lwip_simple_poll();
        switch (test_state) {
        case TEST_INITIAL:
            diag_printf("INFO:<Starting test run (%d/%d)>\n", run, NUM_RUNS);
            test_state = TEST_CHAT_INIT;
            break;
        case TEST_CHAT_INIT:
            CYG_TEST_INFO("Initializing chat");
            sd = sio_open(SIO_DEV_PPPOS);
            if (!sd)
                CYG_TEST_FAIL_FINISH("Cannot open serial");
            chat = chat_new(sd, chat_items, CHAT_TIMEOUT, chat_cb, chat_send_cb, NULL);
            if (!chat)
                CYG_TEST_FAIL_FINISH("Cannot allocate chat");
            test_state = TEST_CHAT_RUN;
            break;
        case TEST_CHAT_RUN:
            chat_poll(chat);
            break;
        case TEST_CHAT_FINISH:
            chat_free(chat);
            if (chat_ok)
                test_state = TEST_PPP_INIT;
            else
                test_state = TEST_NEXT_RUN;
            break;
        case TEST_PPP_INIT:
            CYG_TEST_INFO("Initializing PPP");
            if (ppp_init() != ERR_OK)
                CYG_TEST_FAIL_FINISH("Cannot initialize PPP");
            pd = ppp_open_serial(sd, ppp_status_cb, (void *) pd);
            if (pd < 0)
                CYG_TEST_FAIL_FINISH("Cannot open PPP over serial");
            ppp_set_auth(PPPAUTHTYPE_ANY, CYGDAT_NET_LWIP_PPP_TEST_USERNAME,
                                          CYGDAT_NET_LWIP_PPP_TEST_PASSWORD);
            test_state = TEST_PPP_INIT_WAIT;
            break;
        case TEST_PPP_INIT_WAIT:
            ppp_poll(pd);
            break;
        case TEST_PPP_UP:
            ppp_poll(pd);
            handle_req_state();
            break;
        case TEST_PPP_CLOSE:
            ppp_close(pd);
            test_state = TEST_PPP_CLOSE_WAIT;
            break;
        case TEST_PPP_CLOSE_WAIT:
            ppp_poll(pd);
            if (!ppp_is_open(pd))
                // Escape from data mode
                sio_write(sd, (u8_t *) "+++", 3);
                cyg_thread_delay(200);
                test_state = TEST_NEXT_RUN;
            break;
        case TEST_NEXT_RUN:
            if (run < NUM_RUNS) {
                run++;
                test_state = TEST_INITIAL;
            } else {
                test_state = TEST_FINISH;
            }
            break;
        case TEST_FINISH:
            test_state = TEST_CHAT_INIT;
            diag_printf("INFO:<Test done (%d/%d) successful runs\n",
                        success, NUM_RUNS);
            break;
        }
        cyg_thread_yield();
    }
}