コード例 #1
0
ファイル: datapath.c プロジェクト: CPqD/of12softswitch
void
dp_run(struct datapath *dp) {
    time_t now = time_now();
    struct remote *r, *rn;
    size_t i;

    if (now != dp->last_timeout) {
        dp->last_timeout = now;
        pipeline_timeout(dp->pipeline);
    }
    poll_timer_wait(1000);

    dp_ports_run(dp);

    /* Talk to remotes. */
    LIST_FOR_EACH_SAFE (r, rn, struct remote, node, &dp->remotes) {
        remote_run(dp, r);
    }

    for (i = 0; i < dp->n_listeners; ) {
        struct pvconn *pvconn = dp->listeners[i];
        struct vconn *new_vconn;
        int retval = pvconn_accept(pvconn, OFP_VERSION, &new_vconn);
        if (!retval) {
            remote_create(dp, rconn_new_from_vconn("passive", new_vconn));
        } else if (retval != EAGAIN) {
            VLOG_WARN_RL(LOG_MODULE, &rl, "accept failed (%s)", strerror(retval));
            dp->listeners[i] = dp->listeners[--dp->n_listeners];
            continue;
        }
        i++;
    }
}
コード例 #2
0
ファイル: clone.c プロジェクト: ethomson/libgit2
static int create_and_configure_origin(
		git_remote **out,
		git_repository *repo,
		const char *url,
		const git_clone_options *options)
{
	int error;
	git_remote *origin = NULL;
	char buf[GIT_PATH_MAX];
	git_remote_create_cb remote_create = options->remote_cb;
	void *payload = options->remote_cb_payload;

	/* If the path exists and is a dir, the url should be the absolute path */
	if (git_path_root(url) < 0 && git_path_exists(url) && git_path_isdir(url)) {
		if (p_realpath(url, buf) == NULL)
			return -1;

		url = buf;
	}

	if (!remote_create) {
		remote_create = default_remote_create;
		payload = NULL;
	}

	if ((error = remote_create(&origin, repo, "origin", url, payload)) < 0)
		goto on_error;

	*out = origin;
	return 0;

on_error:
	git_remote_free(origin);
	return error;
}
コード例 #3
0
ファイル: serverSNFS.c プロジェクト: vred/noblesse_oblige
void* request_handler(void* connection){
	int bytes_recieved = 0;
	char rec_data[4096]; 
	int connected = *(int*)connection;
	
	//Receive the request
			   
	bytes_recieved = recv(connected,rec_data,4096,0);
		
	rec_data[bytes_recieved]='\0';
	  
	fflush(stdout);
		 
	char* response;
	
	char* request_copy = strdup(rec_data);
	char* tokenreq = strtok(rec_data," ,");
	char* firstarg = tokenreq;
	//switch on first argument of request which is system call name
	if( !strcmp(firstarg,"readdir") )
	{
		tokenreq = strtok(NULL, " ,");
		response = remote_readdir(tokenreq);
	} else if( !strcmp(firstarg,"getattr")){
		tokenreq = strtok(NULL, " ,");
		response = remote_getattr(tokenreq);
	} else if( !strcmp(firstarg,"opendir")){
		tokenreq = strtok(NULL, " ,");
		response = remote_opendir(tokenreq);
	} else if( !strcmp(firstarg,"releasedir")){
		tokenreq = strtok(NULL, " ,");
		response = remote_releasedir(tokenreq);
	} else if( !strcmp(firstarg,"mkdir")){
		tokenreq = strtok(NULL, " ,");
		mode_t mode = (mode_t)atoi(strtok(NULL, " ,"));
		response = remote_mkdir(tokenreq,mode);
	} else if( !strcmp(firstarg,"read")){
		tokenreq = strtok(NULL, " ,");
		size_t size = (size_t)atoi(strtok(NULL, " ,"));
		off_t offset = (off_t)atoi(strtok(NULL, " ,"));
		response = remote_read(tokenreq,size,offset);
	} else if( !strcmp(firstarg,"open")){
		tokenreq = strtok(NULL, " ,");
		int flags = atoi(strtok(NULL, " ,"));
		response = remote_open(tokenreq, flags);
	} else if( !strcmp(firstarg,"release")){
		tokenreq = strtok(NULL, " ,");
		response = remote_release(tokenreq);
	} else if( !strcmp(firstarg,"write")){
		tokenreq = strtok(NULL, " ,");
		size_t size = (size_t)atoi(strtok(NULL, " ,"));
		off_t offset = (off_t)atoi(strtok(NULL, " ,"));
		//cut off the string so it just has the info to be written
		response = remote_write(tokenreq,size,offset,request_copy);
	} else if( !strcmp(firstarg,"truncate")){
		tokenreq = strtok(NULL, " ,");
		off_t newsize = (off_t)atoi(strtok(NULL, " ,"));
		response = remote_truncate(tokenreq,newsize);
	} else if( !strcmp(firstarg,"create")){
		tokenreq = strtok(NULL, " ,");
		mode_t mode = (mode_t)atoi(strtok(NULL, " ,"));
		response = remote_create(tokenreq,mode);
	} else if( !strcmp(firstarg,"unlink")){
		tokenreq = strtok(NULL, " ,");
		response = remote_unlink(tokenreq);
	}
	
		  
		  
	send(connected,response,4096,0);
		  
	free(response);	   
	close(connected);
	free((int*)connection);
	pthread_exit(0);
}