-
-
Save chenyanzhe/d96224bac464a4e21047 to your computer and use it in GitHub Desktop.
Uncrustify configuration inspired by Google's C++ styleguide.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <sys/socket.h> | |
#include <sys/types.h> | |
#include <netinet/in.h> | |
#include <arpa/inet.h> | |
#include <netdb.h> | |
#include <unistd.h> | |
#include <string.h> | |
#include <iostream> | |
#include <stdarg.h> | |
#include <stdio.h> | |
#include "Network.hpp" | |
#include "Channel.hpp" | |
#include "Command.hpp" | |
using namespace std; | |
namespace perlite { | |
// Destroy every channel joined on this network and close the socket connection. | |
Network::~Network() { | |
// Iterate over every channel instance and wipe it from memory. | |
for (Channel *channel : m_channels) delete channel; | |
if (m_socket) ::close(m_socket); | |
} | |
// Establish a basic blocking IPv4 TCP connection. | |
// Returns true on success, otherwise false. | |
bool Network::connect(const string& host, int port) { | |
m_host = host; | |
m_port = port; | |
struct hostent *remote_host; | |
struct sockaddr_in remote_addr; | |
m_socket = ::socket(AF_INET, SOCK_STREAM, 0); | |
memset(&remote_addr, 0, sizeof(struct sockaddr_in)); | |
if (m_socket == -1) { | |
cerr << "::socket() failed" << endl; | |
return false; | |
} | |
remote_host = ::gethostbyname(host.c_str()); | |
if (!remote_host) { | |
cerr << "::gethostbyname() failed" << endl; | |
return false; | |
} | |
remote_addr.sin_family = AF_INET; | |
remote_addr.sin_port = htons(port); | |
memcpy(&remote_addr.sin_addr, remote_host->h_addr, remote_host->h_length); | |
if (::connect(m_socket, (struct sockaddr *)&remote_addr, | |
sizeof(struct sockaddr)) == -1) { | |
cerr << "::connect() failed" << endl; | |
return false; | |
} | |
return true; | |
} | |
size_t Network::readLine(string& destination) { | |
char buffer[kMinBufferSize], tmp; | |
size_t size = 0, read = 0, i = 0; | |
for (i = 0; i < sizeof(buffer); i++) { | |
read = ::recv(m_socket, &tmp, sizeof(char), 0); | |
if ((int)read == -1) break; | |
if (tmp == '\r') continue; | |
else if (tmp == '\n') break; | |
buffer[i] = tmp; | |
size += read; | |
} | |
buffer[size] = '\0'; | |
destination = string(buffer); | |
return size; | |
} | |
size_t Network::sendCommand(const string& format, ...) { | |
va_list vargs; | |
char buffer[kMinBufferSize]; | |
size_t result = 0, length = 0; | |
va_start(vargs, format); | |
if (vsprintf(buffer, format.c_str(), vargs) < 0) return -1; | |
va_end(vargs); | |
length = strlen(buffer); | |
if (!strstr(buffer, "\r\n")) { | |
strcpy(&buffer[length], "\r\n"); | |
length += 2; | |
} | |
result = sendData(buffer, length); | |
return result; | |
} | |
size_t Network::sendData(const char *data, size_t length) { | |
int size = 0; | |
size = ::send(m_socket, data, length, 0); | |
return size; | |
} | |
void Network::disconnect() { | |
::close(m_socket); | |
m_socket = 0; | |
} | |
User * Network::getUserByNick(const string& nick) { | |
for (User *user : m_users) { | |
if (user->getNick() == nick) return user; | |
} | |
return 0; | |
} | |
Channel * Network::getChannelByName(const string& name) { | |
for (Channel *channel : m_channels) { | |
if (channel->getName() == name) return channel; | |
} | |
return 0; | |
} | |
void Network::delUser(User *user) { | |
UserTable::iterator it; | |
for (it = m_users.begin(); it < m_users.end(); it++) { | |
if (*it == user) { | |
m_users.erase(it); | |
delete user; | |
} | |
} | |
} | |
void Network::delChannel(Channel *channel) { | |
ChannelTable::iterator it; | |
for (it = m_channels.begin(); it < m_channels.end(); it++) { | |
if (*it == channel) { | |
m_channels.erase(it); | |
delete channel; | |
} | |
} | |
} | |
} // namespace perlite |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
indent_align_string=true | |
indent_braces=false | |
indent_braces_no_func=false | |
indent_brace_parent=false | |
indent_namespace=false | |
indent_extern=false | |
indent_class=true | |
indent_class_colon=true | |
indent_else_if=false | |
indent_func_call_param=false | |
indent_func_def_param=false | |
indent_func_proto_param=false | |
indent_func_class_param=false | |
indent_func_ctor_var_param=false | |
indent_template_param=false | |
indent_func_param_double=false | |
indent_relative_single_line_comments=false | |
indent_col1_comment=true | |
indent_access_spec_body=false | |
indent_paren_nl=false | |
indent_comma_paren=false | |
indent_bool_paren=false | |
indent_square_nl=false | |
indent_preserve_sql=false | |
indent_align_assign=true | |
sp_balance_nested_parens=false | |
align_keep_tabs=false | |
align_with_tabs=false | |
align_on_tabstop=false | |
align_number_left=true | |
align_func_params=true | |
align_same_func_call_params=true | |
align_var_def_colon=true | |
align_var_def_attribute=true | |
align_var_def_inline=true | |
align_right_cmt_mix=false | |
align_on_operator=true | |
align_mix_var_proto=false | |
align_single_line_func=true | |
align_single_line_brace=true | |
align_nl_cont=true | |
align_left_shift=true | |
nl_collapse_empty_body=true | |
nl_assign_leave_one_liners=false | |
nl_class_leave_one_liners=false | |
nl_enum_leave_one_liners=false | |
nl_getset_leave_one_liners=false | |
nl_func_leave_one_liners=false | |
nl_if_leave_one_liners=false | |
nl_multi_line_cond=false | |
nl_multi_line_define=false | |
nl_before_case=true | |
nl_after_case=false | |
nl_after_return=true | |
nl_after_semicolon=false | |
nl_after_brace_open=false | |
nl_after_brace_open_cmt=false | |
nl_after_vbrace_open=false | |
nl_after_brace_close=false | |
nl_define_macro=true | |
nl_squeeze_ifdef=false | |
nl_ds_struct_enum_cmt=true | |
nl_ds_struct_enum_close_brace=true | |
nl_create_if_one_liner=true | |
nl_create_for_one_liner=true | |
nl_create_while_one_liner=true | |
ls_for_split_full=false | |
ls_func_split_full=true | |
nl_after_multiline_comment=true | |
eat_blanks_after_open_brace=true | |
eat_blanks_before_close_brace=true | |
mod_pawn_semicolon=false | |
mod_full_paren_if_bool=true | |
mod_remove_extra_semicolon=true | |
mod_sort_import=false | |
mod_sort_using=false | |
mod_sort_include=false | |
mod_move_case_break=true | |
mod_remove_empty_return=true | |
cmt_indent_multi=true | |
cmt_c_group=false | |
cmt_c_nl_start=false | |
cmt_c_nl_end=false | |
cmt_cpp_group=false | |
cmt_cpp_nl_start=false | |
cmt_cpp_nl_end=false | |
cmt_cpp_to_c=false | |
cmt_star_cont=false | |
cmt_multi_check_last=true | |
cmt_insert_before_preproc=false | |
pp_indent_at_level=false | |
pp_region_indent_code=false | |
pp_if_indent_code=false | |
pp_define_at_level=false | |
indent_columns=2 | |
align_var_def_span=1 | |
align_var_def_star_style=2 | |
align_var_def_amp_style=2 | |
align_var_def_thresh=3 | |
align_var_def_gap=1 | |
align_assign_span=1 | |
align_enum_equ_span=1 | |
align_var_struct_span=1 | |
align_struct_init_span=1 | |
align_typedef_span=1 | |
align_typedef_star_style=2 | |
align_typedef_amp_style=2 | |
align_right_cmt_span=4 | |
align_right_cmt_at_col=1 | |
align_func_proto_span=3 | |
nl_end_of_file_min=1 | |
nl_func_var_def_blk=1 | |
code_width=82 | |
nl_max=3 | |
nl_after_func_proto=0 | |
nl_after_func_body=2 | |
nl_after_func_body_one_liner=2 | |
nl_before_block_comment=2 | |
nl_before_c_comment=2 | |
nl_before_cpp_comment=2 | |
nl_before_access_spec=2 | |
nl_after_access_spec=2 | |
nl_comment_func_def=1 | |
nl_after_try_catch_finally=1 | |
mod_full_brace_nl=1 | |
mod_add_long_ifdef_endif_comment=1 | |
mod_add_long_ifdef_else_comment=1 | |
cmt_width=80 | |
newlines=auto | |
indent_with_tabs=0 | |
sp_arith=add | |
sp_assign=add | |
sp_enum_assign=add | |
sp_pp_concat=add | |
sp_pp_stringify=add | |
sp_bool=add | |
sp_compare=add | |
sp_inside_paren=remove | |
sp_paren_paren=remove | |
sp_paren_brace=add | |
sp_before_ptr_star=add | |
sp_before_unnamed_ptr_star=add | |
sp_between_ptr_star=remove | |
sp_after_ptr_star=remove | |
sp_after_ptr_star_func=add | |
sp_before_ptr_star_func=remove | |
sp_before_byref=remove | |
sp_before_unnamed_byref=remove | |
sp_after_byref=add | |
sp_after_byref_func=add | |
sp_before_byref_func=remove | |
sp_after_type=add | |
sp_before_angle=remove | |
sp_inside_angle=remove | |
sp_after_angle=remove | |
sp_angle_paren=remove | |
sp_angle_word=remove | |
sp_before_sparen=add | |
sp_inside_sparen=remove | |
sp_sparen_brace=add | |
sp_special_semi=remove | |
sp_before_semi=remove | |
sp_before_semi_for=remove | |
sp_before_semi_for_empty=remove | |
sp_after_semi_for_empty=remove | |
sp_before_square=remove | |
sp_before_squares=remove | |
sp_inside_square=remove | |
sp_after_comma=add | |
sp_before_comma=remove | |
sp_after_class_colon=add | |
sp_before_class_colon=add | |
sp_before_case_colon=remove | |
sp_after_operator=remove | |
sp_after_operator_sym=remove | |
sp_after_cast=remove | |
sp_inside_paren_cast=remove | |
sp_cpp_cast_paren=remove | |
sp_sizeof_paren=remove | |
sp_inside_braces_enum=add | |
sp_inside_braces_struct=add | |
sp_inside_braces=add | |
sp_inside_braces_empty=remove | |
sp_type_func=add | |
sp_func_proto_paren=remove | |
sp_func_def_paren=remove | |
sp_inside_fparens=remove | |
sp_inside_fparen=remove | |
sp_square_fparen=remove | |
sp_fparen_brace=add | |
sp_func_call_paren=remove | |
sp_func_call_user_paren=remove | |
sp_func_class_paren=remove | |
sp_return_paren=add | |
sp_attribute_paren=remove | |
sp_defined_paren=remove | |
sp_throw_paren=remove | |
sp_macro=add | |
sp_macro_func=remove | |
sp_else_brace=add | |
sp_brace_else=add | |
sp_brace_typedef=add | |
sp_catch_brace=add | |
sp_brace_catch=add | |
sp_finally_brace=add | |
sp_brace_finally=add | |
sp_try_brace=add | |
sp_getset_brace=add | |
sp_before_dc=remove | |
sp_after_dc=remove | |
sp_not=remove | |
sp_inv=remove | |
sp_addr=remove | |
sp_member=remove | |
sp_deref=remove | |
sp_sign=remove | |
sp_incdec=remove | |
sp_before_nl_cont=remove | |
sp_after_oc_scope=remove | |
sp_after_oc_colon=remove | |
sp_before_oc_colon=remove | |
sp_after_send_oc_colon=add | |
sp_before_send_oc_colon=remove | |
sp_after_oc_type=remove | |
sp_cond_colon=add | |
sp_cond_question=add | |
sp_cmt_cpp_start=add | |
nl_end_of_file=add | |
nl_namespace_brace=remove | |
nl_class_brace=remove | |
nl_class_init_args=add | |
nl_func_decl_args=add | |
nl_before_if=add | |
nl_before_for=add | |
nl_before_while=add | |
nl_before_switch=add | |
nl_before_do=add | |
mod_full_brace_do=remove | |
mod_full_brace_for=remove | |
mod_full_brace_if=remove | |
mod_full_brace_while=remove | |
mod_paren_on_return=remove | |
pp_space=add |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment