Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
    }
}
Ejemplo n.º 4
0
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;
	}
}