Esempio n. 1
0
static PyObject* start_service(PyObject *self, PyObject *args)
{
    PyObject * ret;
    const char *job_id, *status, *section_id, *c_real_in_buf_size, *c_in_buf_size, *c_out_buf_size, *c_acc_name, *scheduler_host, *scheduler_port;

    if (!PyArg_ParseTuple(args, "sssssssss", &job_id, &status, &section_id, &c_real_in_buf_size, &c_in_buf_size, &c_out_buf_size, &c_acc_name, &scheduler_host, &scheduler_port)){
    	return NULL;
    }

    struct server_param_t server_param;
    memset((void *) &server_param, 0, sizeof(server_param));

    strcpy(server_param.job_id, job_id);
    strcpy(server_param.section_id, section_id); 
    server_param.real_in_buf_size = atoi(c_real_in_buf_size);
    server_param.in_buf_size = atoi(c_in_buf_size);
    server_param.out_buf_size = atoi(c_out_buf_size);
    strcpy(server_param.acc_name, c_acc_name);
    strcpy(server_param.scheduler_host, scheduler_host);
    strcpy(server_param.scheduler_port, scheduler_port);


    if (atoi(status) == 2)
        //open an RDMA server and local acc_slot;
        rdma_server_open((void *)&server_param);
    else if (atoi(status) == 0){ 
        //open a socket server and local acc_slot;
        int tcp_status = socket_server_open((void *) &server_param);
        if(tcp_status != 0){
            sprintf(server_param.status,"%d",tcp_status); 
        }
    }

    //return port number and open_status(success or failure)back to client.
    ret = Py_BuildValue("{s:s, s:s, s:s}", "ip", server_param.ipaddr, "port", server_param.port, "ifuse", server_param.status);
    printf("ip = %s, port =%s, ifuse = %s\n", server_param.ipaddr, server_param.port, server_param.status);
    return ret;
}
Esempio n. 2
0
int main(int argc, char *argv[])
{
    char *master_key=0;
    
    fp = 0;     
    APPL_TRACE_INFO("Starting with M2x \n");
 
    if (argc < 2) {
        printf("Correct Usage brcm_m2x_demo <<filename>>\n");
        /* exit(1);*/
    } else {
        APPL_TRACE_INFO("Opening File:  %s\n", argv[1]);	
        fp = fopen(argv[1], "r");  
    } 
    if (argc < 2) {
        APPL_TRACE_INFO("Opening File: /etc/m2x/m2x_key \n" );
        fp = fopen("/etc/m2x/m2x_key", "r");   
    }  
    if (fp) {
        /* 1.1 Read the key from the file. */        
        master_key = (char *) malloc(strlen(M2X_KEY) * sizeof (char));
        fscanf(fp,"%s",master_key );        
        APPL_TRACE_INFO("Master Key from file: %s\n", master_key);
        /*memcpy(master_key,, strlen(M2X_KEY));*/
        ctx = m2x_open(master_key);        
        free(master_key);
        fclose(fp);
    }
    else {
        /* 1.1 Open the Account using Master Key. */
        APPL_TRACE_INFO("Error in opening file %s\n", argv[1]);
        APPL_TRACE_INFO("reading default master key: %s\n", M2X_KEY);
        ctx = m2x_open(M2X_KEY);
    }


    for (i=0; i < MAX_STREAM; i++) {
        printf("Need to create %d M2X Stream :\"%s\" of size=%d  \n", i, stream_name_list[i], strlen(stream_name_list[i]));

    }

    /* 1.2 Enable Verbose */
    m2x_set_verbose(ctx, 1);    

    
    /* Create Device and Stream*/
#ifdef RUN_M2X 
    create_device();
    create_streams();
#endif
    /* Open Server Socket */
    server_fd = socket_server_open(WICED_M2X_SOCK_PATH);
   	APPL_TRACE_ERROR1("socket_local_client: fd = %d \n", server_fd);
    
	if(server_fd > 0) {
       APPL_TRACE_INFO("socket_local_server: opening server socket successful \n");
    }
    else {
        APPL_TRACE_ERROR1("socket_local_server: returned error %d \n", errno );
        exit(0);
    }

 	while (1) {
		FD_ZERO(&socks_rd);
		FD_SET(server_fd, &socks_rd);
		max_fd  = server_fd;

		if(read_fd > 0) {
			FD_SET(read_fd, &socks_rd);
			if (read_fd > max_fd)
				max_fd = read_fd;
		}

		status = select (max_fd + 1, &socks_rd, (fd_set *) NULL,(fd_set *) NULL,NULL);
		if(status < 0) {	
			strerror_r(errno, errorstring, sizeof(errorstring));
			APPL_TRACE_ERROR1("server: select failed(%s)", errorstring);
			exit(0);
		}
		else {
			length  = 0;

			if(FD_ISSET(server_fd, &socks_rd)) {
				read_fd = accept(server_fd, NULL, NULL);
				if ( read_fd < 0) {
					strerror_r(errno, errorstring, sizeof(errorstring));
					APPL_TRACE_ERROR1("server: accept error %s", errorstring);
				}
				else {
					APPL_TRACE_INFO("server: client connected %d", read_fd);
                }
			}
            /* If there is something to read from the socket */
            if (FD_ISSET(read_fd, &socks_rd)) {
                /* Read length */
                status = read(read_fd, (void *)&length, 2);
				if(status <= 0 )
				{
					strerror_r(errno, errorstring, sizeof(errorstring));
					APPL_TRACE_ERROR1("server: read failed(%s)", errorstring);
					close(read_fd);
					read_fd = -1;
				}
                else {
                    APPL_TRACE_INFO("received length:%d", length);
                    
                }
				
                status = read(read_fd, (UINT8 *) &buf[0], length);
                
				if(status <= 0 ) {
					strerror_r(errno, errorstring, sizeof(errorstring));
					APPL_TRACE_ERROR1("server: read failed(%s)", errorstring);
					close(read_fd);
					read_fd = -1;
				}
                else {
                    printf("Received data: ");
                    for (i=0;i<length;i++) {
                        printf("%c", buf[i]);                        
                    }
                    printf("\n");
                    post_to_m2x(length, buf);
                }                
			}
		}
	}

	close(read_fd);
    close(server_fd);   
}