void SNetDistribInit(int argc, char **argv, snet_info_t *info) { int *counter = SNetMemAlloc(sizeof(int)); snet_dest_t *dest = SNetMemAlloc(sizeof(snet_dest_t));; *counter = 0; dest->node = 0; dest->dest = *counter; dest->parent = 0; dest->parentNode = 0; dest->dynamicIndex = 0; dest->dynamicLoc = 0; prevDest = SNetInfoCreateTag(); SNetInfoSetTag(info, prevDest, (uintptr_t) dest, (void* (*)(void*)) &SNetDestCopy); infoCounter = SNetInfoCreateTag(); SNetInfoSetTag(info, infoCounter, (uintptr_t) counter, NULL); SNetDistribImplementationInit(argc, argv, info); SNetReferenceInit(); SNetOutputManagerInit(); SNetInputManagerInit(); }
void SNetRouteDynamicExit(snet_info_t *info, int dynamicIndex, int dynamicLoc, snet_startup_fun_t fun) { int *counter = (int*) SNetInfoDelTag(info, infoCounter); (void) dynamicIndex; /* NOT USED */ (void) dynamicLoc; /* NOT USED */ (void) fun; /* NOT USED */ SNetMemFree(counter); SNetInfoSetTag(info, infoCounter, (uintptr_t) NULL, NULL); return; }
void SNetRouteNewDynamic(snet_dest_t dest) { snet_ast_t *ast = NULL; //FIXME snet_stream_t *stream; snet_info_t *info = SNetInfoInit(); SNetInfoSetTag(info, prevDest, (uintptr_t) SNetDestCopy(&dest), (void* (*)(void*)) &SNetDestCopy, &SNetMemFree); SNetRouteDynamicEnter(info, dest.dynamicIndex, dest.dynamicLoc, NULL); stream = SNetInstantiate(ast, NULL, info); SNetRouteUpdate(info, stream, dest.parentNode); SNetRouteDynamicExit(info, dest.dynamicIndex, dest.dynamicLoc, NULL); SNetInfoDestroy(info); }
void SNetRouteDynamicEnter(snet_info_t *info, int dynamicIndex, int dynamicLoc, snet_startup_fun_t fun) { snet_dest_t *dest = (snet_dest_t*) SNetInfoGetTag(info, prevDest); dest->dynamicIndex = dynamicIndex; int *counter = SNetMemAlloc(sizeof(int)); *counter = 0; SNetInfoSetTag(info, infoCounter, (uintptr_t) counter, NULL); if (fun != NULL) { dest->parent = SNetNetToId(fun); dest->parentNode = SNetDistribGetNodeId(); dest->dynamicLoc = dynamicLoc; } return; }
void SNetRouteNewDynamic(snet_dest_t dest) { snet_startup_fun_t fun = SNetIdToNet(dest.parent); snet_info_t *info = SNetInfoInit(); SNetInfoSetTag(info, prevDest, (uintptr_t) SNetDestCopy(&dest), (void* (*)(void*)) &SNetDestCopy); SNetLocvecSet(info, SNetLocvecCreate()); SNetRouteDynamicEnter(info, dest.dynamicIndex, dest.dynamicLoc, NULL); //TODO may not need to update loc here SNetRouteUpdate(info, fun(NULL, info, dest.dynamicLoc), dest.parentNode); SNetRouteDynamicExit(info, dest.dynamicIndex, dest.dynamicLoc, NULL); SNetInfoDestroy(info); }