void process_mode1(int sockfd) { ssize_t n; char str[MAXLINE]; while ((n = read(sockfd, str, MAXLINE)) > 0) { str[n] = '\0'; char result[MAXLINE]; if (strcmp(str, "\n") == 0) { exit(1); } int i = 0; for (i = 0; i < strlen(str) - 1; i++) { result[i] = str[strlen(str) - i - 2]; } result[i++] = '\n'; result[i] = '\0'; Writen(sockfd, result, strlen(result)); } if (n < 0 && errno == EINTR) { return process_mode1(sockfd); } else if (n < 0) { err_sys("str_echo: read error"); } }
void process_request(int sockfd, int mode) { printf("Accept\n %d", sockfd); switch (mode) { case 1: process_mode1(sockfd); break; case 2: process_mode2(sockfd); break; case 3: process_mode3(sockfd); break; default: // default behavior str_echo(sockfd); break; } }
// matlab entry point void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { // if (mxGetClassID(prhs[0]) != mxDOUBLE_CLASS)mexErrMsgTxt("invalid input"); // process_prob(prhs[0], prhs[1], plhs); if (check_input(prhs)){ int mode = (int)mxGetScalar(prhs[0]); // mexPrintf("mode no.%d...\n", mode); switch(mode) { case 1: process_mode1(prhs[1], prhs[2], plhs); //get soft assignment prob from data and GMM model; process_mode1(data, GMM,prob); break; case 2: process_mode2(prhs[1], prhs[2], prhs[3], plhs); //get coding from data, prob and GMM; process_model2(data,prob,GMM,coding); break; case 3: process_mode3(prhs[1], prhs[2], plhs); //get coding from data and GMM; process_model3(data,GMM,coding); break; case 4: process_mode4(prhs[1], prhs[2], prhs[3], prhs[4], plhs); //get conf from data, prob,GMM, model; process_model4(data,prob, GMM, model,conf); break; case 5: process_mode5(prhs[1], prhs[2], prhs[3], plhs) ; //get map from conf and pos, size; break; case 6: process_mode6(prhs[1], prhs[2], prhs[3], prhs[4], prhs[5], plhs) ; // get map from data, GMM, model, pos,size; break; case 7: process_mode7(prhs[1], prhs[2], prhs[3], prhs[4], plhs); //get conf and datanorm from data, prob,GMM, model; process_model4(data,prob, GMM, model,conf); break; default: return; } } return; }