int reportwrite(char*ip, u64_t blocknum, int port, int status) { s64_t sockfd = ConnectServer(ip, port); u64_t total_len = 0; char* result_report; char* title = "WRITE_OK"; char* name = "Blocknum"; char blnum[64]; sprintf(blnum, "%lld", blocknum); total_len += strlen(title) + 2; total_len += strlen(name) + strlen(blnum) + 4; total_len += 2; if ((result_report = malloc(total_len)) == NULL) { perror("fail to malloc\n"); return -1; } strcpy(result_report, title); result_report += strlen(title); *result_report++ = '\r'; *result_report++ = '\n'; strcpy(result_report, name); result_report += strlen(name); *result_report++ = ':'; *result_report++ = ' '; strcpy(result_report, blnum); result_report += strlen(blnum); *result_report++ = '\r'; *result_report++ = '\n'; *result_report++ = '\r'; *result_report++ = '\n'; sendinfo(sockfd, result_report, total_len); return 0; }
void* sbp_recv(void* newfd) { //char* ip; //int port; int tfd = *(int*) newfd; recinfo(tfd); decode_head(rec_buf, &sbphead); ana_head(&sbphead, rec_buf); //s64_t sockfd = ConnectServer(ip, port); sendinfo(tfd, send_buf, sizeof(send_buf)); return 0; }
void Node::process_datagram(Packet p) throw(myExceptions) { cout<<"inside process_datagram\n"; int cmd = p.getcmd(); switch (cmd) { case GETSUCC: cout<<"GETSUCC\n"; getsuccessor(p); break; case FOUNDSUCC: foundsuccessor(p); break; case GETPRED: getpredecessor(p); break; case SETPRED: setpredecessor(p); break; case SETSUCC: setsuccessor(p); break; case GETINDEX: getindex(p); break; case REQUSERS: requestusers(p); break; case SENDUSERS: sendusers(p); break; case DOWNREQ: downloadrequest(p); break; case SENDINFO: sendinfo(p); break; default: break; } }
int reportlist(char* ip, int port) { if (getlist() < 0) { perror("fail to get list \n"); return -1; } s64_t sockfd = ConnectServer(ip, port); sbphead = report_head(databuf, req_len); build_headp(&send_buf, &sbphead); sendinfo(sockfd, send_buf, sizeof(send_buf)); recinfo(sockfd); if (strcmp(rec_buf, "SBPFS_OK") == 0) { printf("succeed in report"); return 0; } else if (strcmp(rec_buf, "SBPFS_ERR") == 0) { printf("fail in report"); return -1; } else { perror("fail to receive feedback \n"); return -1; } }