Esempio n. 1
0
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();
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
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;
}
Esempio n. 5
0
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);
}