Skip to content

Commit

Permalink
New more requet completed... Umm, it needs to be more elegant..
Browse files Browse the repository at this point in the history
git-svn-id: https://subversion.cs.uiuc.edu/svn/bang/eoh2009@39 69d76c3e-0761-0410-948c-9895a8bb34fc
  • Loading branch information
nbysani2 committed Jan 24, 2009
1 parent 0a7c196 commit 254b8e1
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 10 deletions.
38 changes: 28 additions & 10 deletions src/base/bang-routing.c
Expand Up @@ -24,11 +24,15 @@ static sqlite3_stmt* prepare_select_statement(uuid_t uuid);

static void insert_route(uuid_t uuid, int remote, BANG_module *module, int peer_id, char *module_name, unsigned char *module_version);

static BANG_request construct_request(char type, uuid_t auth, uuid_t peer, int job_number, unsigned int job_length, void *data);
static BANG_request construct_send_job_request(int type, uuid_t auth, uuid_t peer, int job_number, unsigned int job_length, void *data);

static BANG_request construct_request(char type, uuid_t auth, uuid_t peer, int job_number, unsigned int job_length, void *data) {
BANG_request req;
static void mem_append(void *dst, void *src, int length, int *pos) {
memcpy(dst + *pos,src,length);
*pos += length;
}

static BANG_request construct_send_job_request(int type, uuid_t auth, uuid_t peer, int job_number, unsigned int job_length, void *data) {
BANG_request req;
req.type = type;

req.length = sizeof(uuid_t) * 2 +
Expand All @@ -37,12 +41,13 @@ static BANG_request construct_request(char type, uuid_t auth, uuid_t peer, int j
job_length;

req.request = malloc(req.length);
int pos = 0;

memcpy(req.request,auth,sizeof(uuid_t));
memcpy(req.request,peer,sizeof(uuid_t));
memcpy(req.request,&(job_number),4);
memcpy(req.request,&(job_length),LENGTH_OF_LENGTHS);
memcpy(req.request,data,job_length);
mem_append(req.request,auth,sizeof(uuid_t),&pos);
mem_append(req.request,peer,sizeof(uuid_t),&pos);
mem_append(req.request,&(job_number),4,&pos);
mem_append(req.request,&(job_length),LENGTH_OF_LENGTHS,&pos);
mem_append(req.request,data,job_length,&pos);

return req;
}
Expand Down Expand Up @@ -76,7 +81,8 @@ void BANG_route_job(uuid_t authority, uuid_t peer, BANG_job *job) {
if (sqlite3_column_int(get_peer_route,1) == REMOTE_ROUTE) {

BANG_request request =
construct_request(BANG_SEND_JOB_REQUEST,
construct_send_job_request(
BANG_SEND_JOB_REQUEST,
authority,
peer,
job->job_number,
Expand Down Expand Up @@ -105,7 +111,7 @@ void BANG_route_finished_job(uuid_t authority, uuid_t peer, BANG_job *job) {
if (sqlite3_step(get_auth_route) == SQLITE_ROW) {
if (sqlite3_column_int(get_auth_route,1) == REMOTE_ROUTE) {
BANG_request request =
construct_request(
construct_send_job_request(
BANG_SEND_FINISHED_JOB_REQUEST,
authority,
peer,
Expand Down Expand Up @@ -135,6 +141,12 @@ void BANG_route_request_job(uuid_t peer, uuid_t authority) {
if (sqlite3_step(get_auth_route) == SQLITE_ROW) {
if (sqlite3_column_int(get_auth_route,1) == REMOTE_ROUTE) {
BANG_request request;
request.type = BANG_SEND_REQUEST_JOB_REQUEST;
request.length = sizeof(uuid_t) * 2;
request.request = malloc(request.length);
int pos = 0;
mem_append(request.request,authority,sizeof(uuid_t),&pos);
mem_append(request.request,peer,sizeof(uuid_t),&pos);

BANG_request_peer_id(sqlite3_column_int(get_auth_route,3),request);

Expand All @@ -156,6 +168,12 @@ void BANG_route_assertion_of_authority(uuid_t authority, uuid_t peer) {
if (sqlite3_step(get_peer_route) == SQLITE_ROW) {
if (sqlite3_column_int(get_peer_route,1) == REMOTE_ROUTE) {
BANG_request request;
request.type = BANG_SEND_AVAILABLE_JOB_REQUEST;
request.length = sizeof(uuid_t) * 2;
request.request = malloc(request.length);
int pos = 0;
mem_append(request.request,authority,sizeof(uuid_t),&pos);
mem_append(request.request,peer,sizeof(uuid_t),&pos);

BANG_request_peer_id(sqlite3_column_int(get_peer_route,3),request);

Expand Down
2 changes: 2 additions & 0 deletions src/base/bang-utils.h
Expand Up @@ -8,6 +8,7 @@
#ifndef __BANG_UTILS_H
#define __BANG_UTILS_H
#include<pthread.h>

/**
* An object to do read - writing sycing
*/
Expand Down Expand Up @@ -83,6 +84,7 @@ BANG_rw_syncro* new_BANG_rw_syncro();
*/
void free_BANG_rw_syncro(BANG_rw_syncro *lck);


void BANG_acquire_read_lock(int *readers, pthread_mutex_t *readers_lock, pthread_mutex_t *writers_lock);
void BANG_release_read_lock(int *readers, pthread_mutex_t *readers_lock, pthread_mutex_t *writers_lock);
#endif

0 comments on commit 254b8e1

Please sign in to comment.