/* client packet handler */ void cmd_packet_handler(struct conn_server *server, struct connection *conn, struct list_packet *packet) { uint16_t command = get_command(packet); /* check login status */ if (conn->type != LOGIN_OK_CONNECTION && command != CMD_LOGIN) { /* the client not login, ignore this packet */ allocator_free(&server->packet_allocator, packet); return; } switch (command) { case CMD_KEEP_ALIVE: cmd_keep_alive(server, conn, packet); break; case CMD_LOGIN: cmd_login(server, conn, packet); break; case CMD_LOGOUT: cmd_logout(server, conn, packet); break; case CMD_SET_NICK: cmd_user(server, conn, packet); break; case CMD_ADD_CONTACT: case CMD_ADD_CONTACT_REPLY: case CMD_CONTACT_LIST: case CMD_CONTACT_INFO_MULTI: cmd_contact(server, conn, packet); break; case CMD_MESSAGE: case CMD_OFFLINE_MSG: cmd_message(server, conn, packet); break; default: log_err("unkonwn command %#hx\n", command); break; } }
int ShopSysCostomer::receive_command(string _cmd) { vector<string> cmd_analysis = str_Split_not_add_zero(_cmd); /* add command */ if (cmd_analysis[0] == "add") { return cmd_add(cmd_analysis); } else if (cmd_analysis[0] == "rmv") { return cmd_rmv(cmd_analysis); } else if (cmd_analysis[0] == "chk") { return cmd_chk(cmd_analysis); } else if (cmd_analysis[0] == "ls") { return cmd_productlist(cmd_analysis); } else if (cmd_analysis[0] == "login") { return cmd_login(cmd_analysis); } else if ((cmd_analysis[0] == "logout") && (cmd_analysis.size() == 1)) { return logout_action(); } else if ((cmd_analysis[0] == "pay") && (cmd_analysis.size() == 1)) { return cmd_settle_account(); } else if (cmd_analysis[0] == "") { return 0; } else if ((cmd_analysis[0] == "exit") && (cmd_analysis.size() == 1)) { if (is_member) { fstream fmember; fmember.open(".\\members\\" + p_identity->get_id() + ".txt", ios::trunc | ios::out); fmember << p_identity->get_id() << ',' << p_identity->get_name() << ',' << p_identity->get_gender() << ',' << p_identity->get_phone() << ',' << p_identity->get_points() << ',' << password_mem; fmember.close(); //Refresh file done delete p_identity; p_identity = NULL; is_member = false; } cout << endl << "Bye!"; return 2; } else if ((cmd_analysis[0] == "help") && (cmd_analysis.size() == 1)) { cout << "Command mannual : " << endl; cout << "ls [number each page] : List all the goods." << endl; cout << "add <Goods ID> [number] : add [number(default 1)] goods into your cart." << endl; cout << "rmv <Goods ID> [number] : remove [number(default all of this ID)] goods from your cart." << endl; cout << "login : Log in command." << endl; cout << "logout : Log out command." << endl; cout << "chk : Check your carts of goods." << endl; cout << "pay : Settle account." << endl; cout << "info : (Only used when logged in)Check member info." << endl; return 0; } else if ((cmd_analysis[0] == "info") && (cmd_analysis.size() == 1)) { if (!is_member) { cout << "You have to login first." << endl; return 0; } cout << "Your info : " << endl; cout << "Member ID : " << p_identity->get_id() << endl; cout << "Name : " << p_identity->get_name() << endl; cout << "Gender : " << p_identity->get_gender() << endl; cout << "Phone : " << p_identity->get_phone() << endl; cout << "Member type : " << p_identity->get_member_type() << endl; cout << "Points : " << p_identity->get_points() << endl; return 0; } else { return 1; } }
int main (int argc, char *argv[]) { int result; char *config = NULL; int ch; progname = argv[0]; while ((ch = getopt(argc, argv, "c:vVh")) != -1) { switch (ch) { case 'c': config = strdup(optarg); break; case 'v': verbose++; break; case 'V': version(); exit(0); break; case 'h': usage(); exit(0); break; default: usage(); exit(1); } } argc -= optind; argv += optind; if (!argc) { usage(); exit(1); } if (!strcasecmp(argv[0], "logout")) { if (config) free(config); exit(cmd_logout()); } result = hsm_open(config, hsm_prompt_pin); if (result) { hsm_print_error(NULL); exit(-1); } openlog("hsmutil", LOG_PID, LOG_USER); if (!strcasecmp(argv[0], "login")) { argc --; argv ++; result = cmd_login(); } else if (!strcasecmp(argv[0], "list")) { argc --; argv ++; result = cmd_list(argc, argv); } else if (!strcasecmp(argv[0], "generate")) { argc --; argv ++; result = cmd_generate(argc, argv); } else if (!strcasecmp(argv[0], "remove")) { argc --; argv ++; result = cmd_remove(argc, argv); } else if (!strcasecmp(argv[0], "purge")) { argc --; argv ++; result = cmd_purge(argc, argv); } else if (!strcasecmp(argv[0], "dnskey")) { argc --; argv ++; result = cmd_dnskey(argc, argv); } else if (!strcasecmp(argv[0], "test")) { argc --; argv ++; result = cmd_test(argc, argv); } else if (!strcasecmp(argv[0], "info")) { argc --; argv ++; result = cmd_info(); } else if (!strcasecmp(argv[0], "debug")) { argc --; argv ++; result = cmd_debug(); } else { usage(); result = -1; } (void) hsm_close(); if (config) free(config); closelog(); exit(result); }