int main() { struct pbc_slice slice; read_file("addressbook.pb", &slice); if (slice.buffer == NULL) return 1; struct pbc_env * env = pbc_new(); pbc_register(env, &slice); free(slice.buffer); struct pbc_wmessage *msg = test_wmessage(env); pbc_wmessage_buffer(msg, &slice); dump(slice.buffer, slice.len); test_rmessage(env, &slice); pbc_wmessage_delete(msg); pbc_delete(env); return 0; }
void testNewRead() { struct pbc_slice slice; read_file("addressbooknew.pb", &slice); //ClientSvrMsg //read_file("ClientSvrMsg.pb", &slice); //ClientSvrMsg if (slice.buffer == NULL) return 1; struct pbc_env * env = pbc_new(); int r = pbc_register(env, &slice); if (r) { printf("Error : %s", pbc_error(env)); return 1; } free(slice.buffer); size_t* size = malloc(sizeof(size_t)); FILE* fp = fopen("test.bin", "rb"); fseek(fp, 0, SEEK_END); *size = ftell(fp); *((size_t *)&slice.len) = ftell(fp); fseek(fp, 0, SEEK_SET); slice.buffer = (unsigned char*)malloc(*size); fread(slice.buffer, slice.len, 1, fp); test_rmessage(env, &slice); pbc_delete(env); }
void testOldWrite() { struct pbc_slice slice; read_file("addressbooknew.pb", &slice); //ClientSvrMsg //read_file("ClientSvrMsg.pb", &slice); //ClientSvrMsg if (slice.buffer == NULL) return 1; struct pbc_env * env = pbc_new(); int r = pbc_register(env, &slice); if (r) { printf("Error : %s", pbc_error(env)); return 1; } free(slice.buffer); struct pbc_wmessage *msg = test_wmessage(env); //struct pbc_wmessage *msg = test_ClientSevermessage(env); pbc_wmessage_buffer(msg, &slice); dump(slice.buffer, slice.len); FILE* f = fopen("test.bin", "wb"); fwrite(slice.buffer, slice.len, 1, f); fclose(f); f = NULL; }
int main() { _pbcM_memory(); struct pbc_env * env = pbc_new(); struct pbc_slice slice; read_file("test.pb", &slice); int ret = pbc_register(env, &slice); assert(ret == 0); test(env); pbc_delete(env); _pbcM_memory(); return 0; }
static int _env_register(lua_State *L) { struct pbc_env * env = (struct pbc_env *)checkuserdata(L,1); size_t sz = 0; const char * buffer = luaL_checklstring(L, 2 , &sz); struct pbc_slice slice; slice.buffer = (void *)buffer; slice.len = (int)sz; int ret = pbc_register(env, &slice); if (ret) { return luaL_error(L, "register fail"); } return 0; }
static void dump(const char *proto, const char * message, struct pbc_slice *data) { struct pbc_env * env = pbc_new(); struct pbc_slice pb; read_file(proto, &pb); int r = pbc_register(env, &pb); if (r!=0) { fprintf(stderr, "Can't register %s\n", proto); exit(1); } struct pbc_rmessage * m = pbc_rmessage_new(env , message , data); if (m == NULL) { fprintf(stderr, "Decode message %s fail\n",message); exit(1); } dump_message(m,0); }
int main() { struct pbc_slice slice; read_file("addressbook.pb", &slice); if (slice.buffer == NULL) return 1; struct pbc_env * env = pbc_new(); pbc_register(env, &slice); free(slice.buffer); pat = pbc_pattern_new(env, "tutorial.Person" , "name %s id %d email %s phone %a test %a", offsetof(struct person, name) , offsetof(struct person, id) , offsetof(struct person, email) , offsetof(struct person, phone) , offsetof(struct person, test)); pat_phone = pbc_pattern_new(env, "tutorial.Person.PhoneNumber", "number %s type %d", offsetof(struct person_phone, number), offsetof(struct person_phone, type)); char buffer[4096]; struct pbc_slice message = { buffer, sizeof(buffer) }; test_pattern_pack(env, &message); dump((uint8_t*)message.buffer, message.len); test_pattern_unpack(env, &message); pbc_pattern_delete(pat); pbc_pattern_delete(pat_phone); pbc_delete(env); return 0; }
int main() { struct pbc_slice slice; read_file("performance.pb", &slice); if (slice.buffer == NULL) return 1; struct pbc_env * env = pbc_new(); int r = pbc_register(env, &slice); if (r) { printf("Error : %s", pbc_error(env)); return 1; } free(slice.buffer); clock_t start = clock(); int i; for ( i = 0;i < 1000000;i ++ ) { struct pbc_wmessage *msg = test_wmessage(env); pbc_wmessage_buffer(msg, &slice); //dump(slice.buffer, slice.len); //test_rmessage(env, &slice); //if ( i == 100000 - 1) test_rmessage(env, &slice); pbc_wmessage_delete(msg); } clock_t t = clock() - start; printf( "time cost %f\n", ((float)t)/CLOCKS_PER_SEC ); pbc_delete(env); return 0; }