int main(int argc, char **argv) { int ret = 0,choice; CLIENT *clnt; char *server = malloc(20);//="192.168.2.101"; if (argc != 2) { fprintf(stderr, "usage: %s host ip address\n", argv[0]); exit(1); } server = argv[1]; printf("server addr is %s\n",server); pthread_mutex_init( &mt_mutex, NULL ); //clnt = clnt_create(server, OSDPROG, OSDVERS, "tcp"); //clnt = clnt_create(server, OSDPROG, OSDVERS, "rdma"); //if (clnt == (CLIENT *)NULL) { // clnt_pcreateerror(server); // exit(1); //} //printf("create rdma transp success~\n"); printf("1:write test\n2:read test\n"); scanf("%d",&choice); if(choice==1){ fill_buffer('A'); issue_request_rdma(server, test_write, "test_write"); free(data); }else if(choice == 2){ fill_char('B'); issue_request_rdma(server, test_read, "test_read"); } //while(1){}; return ret; }
MYX_GRT_VALUE * query_print(MYX_GRT_VALUE *param, void *data) { MYX_GRT *grt= (MYX_GRT *)data; MYX_GRT_VALUE *value, *error; const char *sql; MYX_GRT_CONNECTION *mysql_conn; MYSQL_RES *res; /*unsigned int i, field_count; char *s, *s2;*/ unsigned int off; MYSQL_ROW cur; MYSQL_FIELD *field; unsigned int line_width= 4; char *line_sep; char *line; char *buf; int do_break= FALSE; char *tmp_utf8= g_malloc(MAX_COLUMN_LENGTH*2+1); unsigned long row_nr= 0; if (myx_grt_list_item_count(param) != 2) return make_return_value_error("This function takes (db.query.mysql.Connection, sql) as parameters.", ""); value= myx_grt_list_item_get(param, 0); sql= myx_grt_list_item_get_as_string(param, 1); // retrieve MYSQL * from the bridge_data_object mysql_conn= myx_grt_value_bridge_data_object_get(value); if (!mysql_conn) return make_return_value_error("The connection has not been established. Use Rdbms:connect() to open the connection.", ""); error= grt_mysql_execute(mysql_conn->mysql, &res, sql, "Could not execute the given statement."); if (error) { myx_grt_messages_stack_add(grt, 0, myx_grt_dict_item_get_as_string(error, "error"), NULL, 0, -1); myx_grt_messages_stack_add(grt, 0, myx_grt_dict_item_get_as_string(error, "detail"), NULL, 0, -1); myx_grt_messages_stack_flush(grt, 0); return error; } // ------------------------------------------ // print fields // calc line width while ((field= mysql_fetch_field(res))) { #if MYSQL_VERSION_ID < 40100 unsigned int length= (field->name != 0 ? strnlen(field->name, field->max_length) : 0); #else unsigned int length= field->name_length; #endif length= MAX(length,field->max_length); length*= 2; //consider UTF8 2-byte chars if (length < 4 && !IS_NOT_NULL(field->flags)) length=4; // Room for "NULL" field->max_length=length+1; line_width+= length+3; } // build line separator line_sep= g_malloc(sizeof(char)*(line_width+1)); strcpy(line_sep, "+"); mysql_field_seek(res, 0); while ((field= mysql_fetch_field(res))) { fill_char(line_sep+strlen(line_sep), '-', MIN((int)field->max_length+1, MAX_COLUMN_LENGTH+1)); strcat(line_sep,"+"); } myx_grt_messages_stack_add(grt, 0, line_sep, NULL, 0, -1); // output column names mysql_field_seek(res,0); line= g_strdup("|"); buf= g_malloc(MAX_COLUMN_LENGTH * 2 + 1); while ((field= mysql_fetch_field(res))) { char *field_name= myx_convert_dbstr_utf8(mysql_conn->mysql, field->name, field->name_length); sprintf(buf, " %-*s|", MIN((int)field->max_length, MAX_COLUMN_LENGTH), field_name); line= str_g_append(line, buf); g_free(field_name); } g_free(buf); myx_grt_messages_stack_add(grt, 0, line, NULL, 0, -1); g_free(line); myx_grt_messages_stack_add(grt, 0, line_sep, NULL, 0, -1); line= g_malloc(sizeof(char)*(line_width+1)); // output rows while ((cur= mysql_fetch_row(res)) && (!do_break)) { char *line_end= line; strcpy(line, "|"); line_end++; mysql_field_seek(res, 0); for (off= 0; off < mysql_num_fields(res); off++) { unsigned int length, u8length, clength; char *field_value; if(cur[off]) field_value= myx_convert_dbstr_utf8(mysql_conn->mysql, cur[off], -1); else field_value= g_strdup("NULL"); field_value= str_g_replace(field_value, "\r\n", "\xc2\xab\xc2\xb6"); field_value= str_g_replace(field_value, "\n", "\xc2\xb6"); field= mysql_fetch_field(res); length= field->max_length; // compensage difference between bytecount and utf8 char count clength= (unsigned int)strlen(field_value); u8length= g_utf8_strlen(field_value, clength); length+= clength-u8length; if (u8length > MAX_COLUMN_LENGTH) { //Clear buffer memset(tmp_utf8, 0, MAX_COLUMN_LENGTH*2+1); tmp_utf8= g_utf8_strncpy(tmp_utf8, field_value, MAX_COLUMN_LENGTH-1); strcpy(line_end, " "); line_end++; g_utf8_strncpy(line_end, field_value, MAX_COLUMN_LENGTH-1); line_end+= strlen(tmp_utf8); strcpy(line_end, ">|"); line_end+= 2; } else { line_end+= sprintf(line_end, IS_NUM(field->type) ? "%*s |" : " %-*s|", MIN(length, MAX_COLUMN_LENGTH+clength-u8length), field_value); //line_end+= strlen(line_end); } g_free(field_value); } myx_grt_messages_stack_add(grt, 0, line, NULL, 0, -1); row_nr++; if (row_nr % 20 == 0) myx_grt_messages_stack_flush(grt, 0); } if(!do_break) myx_grt_messages_stack_add(grt, 0, line_sep, NULL, 0, -1); else { myx_grt_messages_stack_add(grt, 0, "Ctrl+C pressed, cleaning up buffer ...\n", NULL, 0, -1); //Finish fetching rows while ((cur= mysql_fetch_row(res))) ; myx_grt_messages_stack_add(grt, 0, "Buffer cleaned up.", NULL, 0, -1); } g_free(line_sep); g_free(tmp_utf8); myx_grt_messages_stack_flush(grt, 0); return NULL; }