Skip to content

Commit

Permalink
Completed some of the module callback functions.
Browse files Browse the repository at this point in the history
git-svn-id: https://subversion.cs.uiuc.edu/svn/bang/eoh2009@29 69d76c3e-0761-0410-948c-9895a8bb34fc
  • Loading branch information
nbysani2 committed Jan 24, 2009
1 parent 29b0259 commit aa4cc6c
Showing 1 changed file with 58 additions and 17 deletions.
75 changes: 58 additions & 17 deletions src/base/bang-module.c
Expand Up @@ -262,18 +262,50 @@ void* BANG_get_symbol(BANG_module *module, char *symbol) {
return NULL;
}

static char check_if_uuid_valid(BANG_module_info *info, uuid_t uuid, int id) {
BANG_read_lock(info->lck);
char valid = uuid_compare(info->peers_info->uuids[id],uuid) == 0;
BANG_read_unlock(info->lck);
return valid;
}

static int get_id_from_uuid(BANG_module_info *info, uuid_t uuid) {
int i = 0;
BANG_read_lock(info->lck);

for (i = 0; i < info->peers_info->peer_number; ++i) {
if (uuid_compare(info->peers_info->uuids[i],uuid) == 0) {
BANG_read_unlock(info->lck);
return i;
}
}

BANG_read_unlock(info->lck);
return -1;
}

void BANG_module_callback_job(const BANG_module *module, uuid_t auth, uuid_t peer) {
assert(module != NULL);

/* Make sure they have the right module. */
if (check_if_uuid_valid(module->info,peer,module->info->my_id)) {

int id = get_id_from_uuid(module->info,auth);
if (id != -1) {
module->callbacks->jobs_available(module->info,id);
}
}
}

void BANG_module_callback_job_available(const BANG_module *module, uuid_t auth, uuid_t peer) {
assert(module != NULL);

/* Make sure they have the right module. */
if (uuid_compare(module->info->peers_info->uuids[module->info->my_id],auth) == 0) {

/* TODO: USE LOCKS! */
int i = 0;
for (i = 0; i < module->info->peers_info->peer_number; ++i) {
if (uuid_compare(module->info->peers_info->uuids[i],peer) == 0) {
module->callbacks->jobs_available(module->info,i);
}
if (check_if_uuid_valid(module->info,peer,module->info->my_id)) {

int id = get_id_from_uuid(module->info,auth);
if (id != -1) {
module->callbacks->jobs_available(module->info,id);
}
}
}
Expand All @@ -282,15 +314,24 @@ void BANG_module_callback_job_available(const BANG_module *module, uuid_t auth,
void BANG_module_callback_job_request(const BANG_module *module, uuid_t auth, uuid_t peer) {
assert(module != NULL);

/* Make sure they have the right module. */
if (uuid_compare(module->info->peers_info->uuids[module->info->my_id],auth) == 0) {

/* TODO: USE LOCKS! */
int i = 0;
for (i = 0; i < module->info->peers_info->peer_number; ++i) {
if (uuid_compare(module->info->peers_info->uuids[i],peer) == 0) {
module->callbacks->outgoing_job(module->info,i);
}
if (check_if_uuid_valid(module->info,auth,module->info->my_id)) {

int id = get_id_from_uuid(module->info,peer);
if (id != -1) {
module->callbacks->outgoing_job(module->info,id);
}
}
}


void BANG_module_callback_job_finished(const BANG_module *module, uuid_t auth, uuid_t peer) {
assert(module != NULL);

if (check_if_uuid_valid(module->info,auth,module->info->my_id)) {

int id = get_id_from_uuid(module->info,peer);
if (id != -1) {
module->callbacks->outgoing_job(module->info,id);
}
}
}

0 comments on commit aa4cc6c

Please sign in to comment.