Example #1
0
File: s2.cpp Project: dCache/s2
/*
 * function tp_handle_request(): handle a single given request.
 * algorithm: prints a message stating that the given thread handled
 *            the given request.
 * input:     request pointer
 * output:    none
 */
extern void *
tp_handle_request(void *request)
{
  DM_DBG_I;
  tp_request *p_request = (tp_request *)request;

  if (p_request) {
    sleep(*((int *)p_request->data));
    DM_DBG(DM_N(3), "thread (%d): handled request '%d'\n",
	   p_request->tp_tid, *((int *)p_request->data));
  }

  RETURN(NULL);
}
Example #2
0
File: Ls.cpp Project: dCache/s2
/**
 * srmLs method.
 *
 * \param soap
 * \param srm_endpoint
 * \param userID
 * \param path
 * \param fileStorageType
 * \param fullDetailedList
 * \param allLevelRecursive
 * \param numOfLevels
 * \param offset
 * \param count
 * \param resp request response
 *
 * \returns request exit status (EXIT_SUCCESS/EXIT_FAILURE)
 */
extern int
Ls(struct soap *soap,
   const char *srm_endpoint,
   const char *userID,
   const tSurlInfoArray path,
   const long int *fileStorageType,
   bool *fullDetailedList,      /* yes, no const in gsoap headers */
   bool *allLevelRecursive,     /* yes, no const in gsoap headers */
   int *numOfLevels,            /* yes, no const in gsoap headers */
   int *offset,                 /* yes, no const in gsoap headers */
   int *count,                  /* yes, no const in gsoap headers */
   struct srm__srmLsResponse_ *resp)
{
  DM_DBG_I;
  struct srm__srmLsRequest req;

  DO_SOAP_INIT(soap);

#ifdef HAVE_CGSI_PLUGIN
  int flags;
  flags = CGSI_OPT_DISABLE_NAME_CHECK|CGSI_OPT_DELEG_FLAG;
  soap_register_plugin_arg (soap, client_cgsi_plugin, &flags);
#else
#warning "Compiling without CGSI plugin support, i.e. no security"
#endif

  NEW_STR_VAL(userID,TUserID);

  NOT_NULL(req.paths = soap_new_srm__ArrayOfTSURLInfo(soap, -1));
  ARRAY_OF_TSURL_INFO(paths);
  
  req.fileStorageType = (srm__TFileStorageType *)fileStorageType;
  DM_LOG(DM_N(2), "fileStorageType == `%s'\n", getTFileStorageType(*req.fileStorageType).c_str());

  PBOOL_VAL(fullDetailedList);
  PBOOL_VAL(allLevelRecursive);
  PINT_VAL(numOfLevels);
  PINT_VAL(offset);
  PINT_VAL(count);
  
  /* To send the request ... */
  SOAP_CALL_SRM(Ls); 

  RETURN(EXIT_SUCCESS);
}
Example #3
0
DM_N DIV_NN_N (DM_N X1, DM_N X2)
{
   DM_N xCopy;         //Объявляем временную переменную, которая будет
                       //хранить копию делимого
   DM_N t=DM_N();    //Объявляем переменную счётчик, обнуляем.
   if (!NZER_N_B(X2))    //Если делитель равен нулю, выдает ошибку
      printf("Делитель равен нулю.");
   else
      if (COM_NN_D(X1, X2)==2) //Если Первое число больше второго:
      {
        xCopy=X1; //Во временную переменную записываем значение большего числа
        do
         {
            xCopy=SUB_NN_N(xCopy, X2);  //Вычитаем из большего числа меньшее
            t=ADD_1N_N(t);  //Наращиваем t
         }
         while (COM_NN_D(xCopy, X2)==2 || COM_NN_D(xCopy, X2)==0);  //Цикл пока делимое больше или равно делителя
         return t;  //Возвращаем t
      }

      else
        if (COM_NN_D(X1, X2)==1)  //Если второе число больше первого: (Делаем те же операции)
           {
                xCopy = X2;
                do
                  {
                    xCopy=SUB_NN_N(xCopy,X1);
                    t=ADD_1N_N(t);
                  }
                while (COM_NN_D(xCopy, X1)==2);
                return t;
           }
        else
          if (COM_N_D(X1, X2)==0)  //Если числа равны
          {
              t=ADD_1N_N(t);   //Наращиваем один раз t, чтобы t равнялось 1
              return t;        //Возвращаем t;
          }
}
Example #4
0
/**
 * srmPrepareToGet method.
 *
 * \param soap
 * \param srm_endpoint
 * \param userID
 * \param arrayOfFileRequests
 * \param arrayOfTransferProtocols
 * \param userRequestDescription
 * \param storageSystemInfo
 * \param totalRetryTime
 * \param resp request response
 *
 * \returns request exit status (EXIT_SUCCESS/EXIT_FAILURE)
 */
extern int
PrepareToGet(struct soap *soap,
             const char *srm_endpoint,
             const char *userID,
             const tArrayOfGetFileRequests arrayOfFileRequests,
             std::vector <std::string *> arrayOfTransferProtocols,
             const char *userRequestDescription,
             const char *storageSystemInfo,
             const int64_t *totalRetryTime,
             struct srm__srmPrepareToGetResponse_ *resp)
{
  DM_DBG_I;
  struct srm__srmPrepareToGetRequest req;

  DO_SOAP_INIT(soap);

#ifdef HAVE_CGSI_PLUGIN
  int flags;
  flags = CGSI_OPT_DISABLE_NAME_CHECK|CGSI_OPT_DELEG_FLAG;
  soap_register_plugin_arg (soap, client_cgsi_plugin, &flags);
#else
#warning "Compiling without CGSI plugin support, i.e. no security"
#endif

  NEW_STR_VAL(userID,TUserID);

  NOT_NULL(req.arrayOfFileRequests = soap_new_srm__ArrayOfTGetFileRequest(soap, -1));
  /* Create the file request */
  DM_LOG(DM_N(2), "arrayOfFileRequests.SURLOrStFN.size() == %d\n", arrayOfFileRequests.SURLOrStFN.size());
  for (uint u = 0; u < arrayOfFileRequests.SURLOrStFN.size(); u++) {
    srm__TGetFileRequest *fileRequest;
    NOT_NULL(fileRequest = soap_new_srm__TGetFileRequest(soap, -1));
    
    NOT_NULL(fileRequest->dirOption = soap_new_srm__TDirOption(soap, -1));
    if(NOT_NULL_VEC(arrayOfFileRequests,allLevelRecursive)) {
      fileRequest->dirOption->allLevelRecursive = (bool *)arrayOfFileRequests.allLevelRecursive[u];
      DM_LOG(DM_N(2), "allLevelRecursive[%u] == %d\n", u, *(fileRequest->dirOption->allLevelRecursive));
    } else {
      fileRequest->dirOption->allLevelRecursive = NULL;
      DM_LOG(DM_N(2), "allLevelRecursive[%u] == NULL\n", u);
    }
    if(NOT_NULL_VEC(arrayOfFileRequests,isSourceADirectory)) {
      fileRequest->dirOption->isSourceADirectory = arrayOfFileRequests.isSourceADirectory[u];
      DM_LOG(DM_N(2), "isSourceADirectory[%u] == %d\n", u, fileRequest->dirOption->isSourceADirectory);
    } else {
      fileRequest->dirOption->isSourceADirectory = 0;
      DM_LOG(DM_N(2), "isSourceADirectory[%u] == 0\n", u);
    }
    if(NOT_NULL_VEC(arrayOfFileRequests,numOfLevels)) {
      fileRequest->dirOption->numOfLevels = arrayOfFileRequests.numOfLevels[u];
      DM_LOG(DM_N(2), "numOfLevels[%u] == %d\n", u, fileRequest->dirOption->numOfLevels);
    } else {
      fileRequest->dirOption->numOfLevels = 0;
      DM_LOG(DM_N(2), "numOfLevels[%u] == 0\n", u);
    }
    if(NOT_NULL_VEC(arrayOfFileRequests,fileStorageType)) {
      fileRequest->fileStorageType = (srm__TFileStorageType *)getTFileStorageType(arrayOfFileRequests.fileStorageType[u]->c_str());
      DM_LOG(DM_N(2), "fileStorageType[%u] == `%s'\n", u, getTFileStorageType(*fileRequest->fileStorageType).c_str());
    } else {
      fileRequest->fileStorageType = NULL;
      DM_LOG(DM_N(2), "fileStorageType[%u] == NULL\n", u);
    }
    NOT_NULL(fileRequest->fromSURLInfo = soap_new_srm__TSURLInfo(soap, -1));
    if(NOT_NULL_VEC(arrayOfFileRequests,SURLOrStFN)) {
      NOT_NULL(fileRequest->fromSURLInfo->SURLOrStFN = soap_new_srm__TSURL(soap, -1));
      fileRequest->fromSURLInfo->SURLOrStFN->value.assign(arrayOfFileRequests.SURLOrStFN[u]->c_str());
      DM_LOG(DM_N(2), "SURLOrStFN[%u] == `%s'\n", u, fileRequest->fromSURLInfo->SURLOrStFN->value.c_str());
    } else {
      fileRequest->fromSURLInfo->SURLOrStFN = NULL;
      DM_LOG(DM_N(2), "SURLOrStFN[%u] == NULL\n", u);
    }
    if(NOT_NULL_VEC(arrayOfFileRequests,storageSystemInfo)) {
      NOT_NULL(fileRequest->fromSURLInfo->storageSystemInfo = soap_new_srm__TStorageSystemInfo(soap, -1));
      fileRequest->fromSURLInfo->storageSystemInfo->value.assign(arrayOfFileRequests.storageSystemInfo[u]->c_str());
      DM_LOG(DM_N(2), "storageSystemInfo[%u] == `%s'\n", u, fileRequest->fromSURLInfo->storageSystemInfo->value.c_str());
    } else {
      fileRequest->fromSURLInfo->storageSystemInfo = NULL;
      DM_LOG(DM_N(2), "storageSystemInfo[%u] == NULL\n", u);
    }
    if(NOT_NULL_VEC(arrayOfFileRequests,lifetime)) {
      NOT_NULL(fileRequest->lifetime = soap_new_srm__TLifeTimeInSeconds(soap, -1));
      fileRequest->lifetime->value = *arrayOfFileRequests.lifetime[u];
      DM_LOG(DM_N(2), "lifetime[%u] == %"PRIi64"\n", u, fileRequest->lifetime->value);
    } else {
      fileRequest->lifetime = NULL;
      DM_LOG(DM_N(2), "lifetime[%u] == NULL\n", u);
    }
    if(NOT_NULL_VEC(arrayOfFileRequests,spaceToken)) {
      NOT_NULL(fileRequest->spaceToken = soap_new_srm__TSpaceToken(soap, -1));
      fileRequest->spaceToken->value.assign(arrayOfFileRequests.spaceToken[u]->c_str());
      DM_LOG(DM_N(2), "spaceToken[%u] == `%s'\n", u, fileRequest->spaceToken->value.c_str());
    } else {
      fileRequest->spaceToken = NULL;
      DM_LOG(DM_N(2), "spaceToken[%u] == NULL\n", u);
    }
    
    req.arrayOfFileRequests->getRequestArray.push_back(fileRequest);
  }
  
  req.arrayOfTransferProtocols = soap_new_srm__ArrayOf_USCORExsd_USCOREstring(soap, -1);
  /* Fill in transfer protocols */
  DM_LOG(DM_N(2), "arrayOfTransferProtocols.size() == %d\n", arrayOfTransferProtocols.size());
  for(uint u = 0; u < arrayOfTransferProtocols.size(); u++) {
    if(arrayOfTransferProtocols[u]) {
      req.arrayOfTransferProtocols->stringArray.push_back(arrayOfTransferProtocols[u]->c_str());
      DM_LOG(DM_N(2), "arrayOfTransferProtocols[%i] == `%s'\n", u, arrayOfTransferProtocols[u]->c_str());
    } else {
      DM_LOG(DM_N(2), "arrayOfTransferProtocols[%i] == NULL\n", u);
    }
  }
  
  NEW_STDSTRING(userRequestDescription);
  NEW_STR_VAL(storageSystemInfo,TStorageSystemInfo);
  NEW_INT64_VAL(totalRetryTime,TLifeTimeInSeconds);
  
  /* To send the request ... */
  SOAP_CALL_SRM(PrepareToGet); 

  RETURN(EXIT_SUCCESS);
}
Example #5
0
File: Copy.cpp Project: dCache/s2
/**
 * srmCopy method.
 *
 * \param srm_endpoint
 * \param userID
 * \param arrayOfFileRequests
 * \param userRequestDescription
 * \param overwriteOption
 * \param removeSourceFiles
 * \param storageSystemInfo
 * \param totalRetryTime
 * \param resp request response
 *
 * \returns request exit status (EXIT_SUCCESS/EXIT_FAILURE)
 */
extern int
Copy(struct soap *soap,
     const char *srm_endpoint,
     const char *userID,
     const tArrayOfCopyFileRequests arrayOfFileRequests,
     const char *userRequestDescription,
     const long int *overwriteOption,
     bool *removeSourceFiles, /* yes, no const in gsoap headers */
     const char *storageSystemInfo,
     const int64_t *totalRetryTime,
     struct srm__srmCopyResponse_ *resp
     )
{
  DM_DBG_I;
  struct srm__srmCopyRequest req;

  DO_SOAP_INIT(soap);

#ifdef HAVE_CGSI_PLUGIN
  int flags;
  flags = CGSI_OPT_DISABLE_NAME_CHECK|CGSI_OPT_DELEG_FLAG;
  soap_register_plugin_arg (soap, client_cgsi_plugin, &flags);
#else
#warning "Compiling without CGSI plugin support, i.e. no security"
#endif

  NEW_STR_VAL(userID,TUserID);

  NOT_NULL(req.arrayOfFileRequests = soap_new_srm__ArrayOfTCopyFileRequest(soap, -1));
  /* Create the file request */
  DM_LOG(DM_N(2), "arrayOfFileRequests.fromSURLOrStFN.size() == %d\n", arrayOfFileRequests.fromSURLOrStFN.size());
  for (uint u = 0; u < arrayOfFileRequests.fromSURLOrStFN.size(); u++) {
    srm__TCopyFileRequest *fileRequest;
    NOT_NULL(fileRequest = soap_new_srm__TCopyFileRequest(soap, -1));

    NOT_NULL(fileRequest->dirOption = soap_new_srm__TDirOption(soap, -1));
    if(NOT_NULL_VEC(arrayOfFileRequests,allLevelRecursive)) {
      fileRequest->dirOption->allLevelRecursive = (bool *)arrayOfFileRequests.allLevelRecursive[u];
      DM_LOG(DM_N(2), "allLevelRecursive[%u] == %d\n", u, *(fileRequest->dirOption->allLevelRecursive));
    } else {
      fileRequest->dirOption->allLevelRecursive = NULL;
      DM_LOG(DM_N(2), "allLevelRecursive[%u] == NULL\n", u);
    }
    if(NOT_NULL_VEC(arrayOfFileRequests,isSourceADirectory)) {
      fileRequest->dirOption->isSourceADirectory = arrayOfFileRequests.isSourceADirectory[u];
      DM_LOG(DM_N(2), "isSourceADirectory[%u] == %d\n", u, fileRequest->dirOption->isSourceADirectory);
    } else {
      fileRequest->dirOption->isSourceADirectory = 0;
      DM_LOG(DM_N(2), "isSourceADirectory == 0\n");
    }
    if(NOT_NULL_VEC(arrayOfFileRequests,numOfLevels)) {
      fileRequest->dirOption->numOfLevels = arrayOfFileRequests.numOfLevels[u];
      DM_LOG(DM_N(2), "numOfLevels[%u] == %d\n", u, fileRequest->dirOption->numOfLevels);
    } else {
      fileRequest->dirOption->numOfLevels = 0;
      DM_LOG(DM_N(2), "numOfLevels == 0\n");
    }
    if(NOT_NULL_VEC(arrayOfFileRequests,fileStorageType)) {
      fileRequest->fileStorageType = (srm__TFileStorageType *)getTFileStorageType(arrayOfFileRequests.fileStorageType[u]->c_str());
      DM_LOG(DM_N(2), "fileStorageType[%u] == `%s'\n", u, getTFileStorageType(*fileRequest->fileStorageType).c_str());
    } else {
      fileRequest->fileStorageType = NULL;
      DM_LOG(DM_N(2), "fileStorageType[%u] == NULL\n", u);
    }
    NOT_NULL(fileRequest->fromSURLInfo = soap_new_srm__TSURLInfo(soap, -1));
    if(NOT_NULL_VEC(arrayOfFileRequests,fromSURLOrStFN)) {
      NOT_NULL(fileRequest->fromSURLInfo->SURLOrStFN = soap_new_srm__TSURL(soap, -1));
      fileRequest->fromSURLInfo->SURLOrStFN->value.assign(arrayOfFileRequests.fromSURLOrStFN[u]->c_str());
      DM_LOG(DM_N(2), "fromSURLOrStFN[%u] == `%s'\n", u, fileRequest->fromSURLInfo->SURLOrStFN->value.c_str());
    } else {
      fileRequest->fromSURLInfo->SURLOrStFN = NULL;
      DM_LOG(DM_N(2), "fromSURLOrStFN[%u] == NULL\n", u);
    }
    if(NOT_NULL_VEC(arrayOfFileRequests,fromStorageSystemInfo)) {
      NOT_NULL(fileRequest->fromSURLInfo->storageSystemInfo = soap_new_srm__TStorageSystemInfo(soap, -1));
      fileRequest->fromSURLInfo->storageSystemInfo->value.assign(arrayOfFileRequests.fromStorageSystemInfo[u]->c_str());
      DM_LOG(DM_N(2), "fromStorageSystemInfo[%u] == `%s'\n", u, fileRequest->fromSURLInfo->storageSystemInfo->value.c_str());
    } else {
      fileRequest->fromSURLInfo->storageSystemInfo = NULL;
      DM_LOG(DM_N(2), "fromStorageSystemInfo[%u] == NULL\n", u);
    }
    if(NOT_NULL_VEC(arrayOfFileRequests,lifetime)) {
      NOT_NULL(fileRequest->lifetime = soap_new_srm__TLifeTimeInSeconds(soap, -1));
      fileRequest->lifetime->value = *arrayOfFileRequests.lifetime[u];
      DM_LOG(DM_N(2), "lifetime[%u] == %"PRIi64"\n", u, fileRequest->lifetime->value);
    } else {
      fileRequest->lifetime = NULL;
      DM_LOG(DM_N(2), "lifetime[%u] == NULL\n", u);
    }
    if(NOT_NULL_VEC(arrayOfFileRequests,overwriteMode)) {
      fileRequest->overwriteMode = (srm__TOverwriteMode *) arrayOfFileRequests.overwriteMode[u];
      DM_LOG(DM_N(2), "overwriteMode[%u] == `%s'\n", u, getTOverwriteMode(*fileRequest->overwriteMode).c_str());
    } else {
      fileRequest->overwriteMode = NULL;
      DM_LOG(DM_N(2), "overwriteMode[%u] == NULL\n", u);
    }
    if(NOT_NULL_VEC(arrayOfFileRequests,spaceToken)) {
      NOT_NULL(fileRequest->spaceToken = soap_new_srm__TSpaceToken(soap, -1));
      fileRequest->spaceToken->value.assign(arrayOfFileRequests.spaceToken[u]->c_str());
      DM_LOG(DM_N(2), "spaceToken[%u] == `%s'\n", u, fileRequest->spaceToken->value.c_str());
    } else {
      fileRequest->spaceToken = NULL;
      DM_LOG(DM_N(2), "spaceToken[%u] == NULL\n", u);
    }
    NOT_NULL(fileRequest->toSURLInfo = soap_new_srm__TSURLInfo(soap, -1));
    if(NOT_NULL_VEC(arrayOfFileRequests,toSURLOrStFN)) {
      NOT_NULL(fileRequest->toSURLInfo->SURLOrStFN = soap_new_srm__TSURL(soap, -1));
      fileRequest->toSURLInfo->SURLOrStFN->value.assign(arrayOfFileRequests.toSURLOrStFN[u]->c_str());
      DM_LOG(DM_N(2), "toSURLOrStFN[%u] == `%s'\n", u, fileRequest->toSURLInfo->SURLOrStFN->value.c_str());
    } else {
      fileRequest->toSURLInfo->SURLOrStFN = NULL;
      DM_LOG(DM_N(2), "toSURLOrStFN[%u] == NULL\n", u);
    }
    if(NOT_NULL_VEC(arrayOfFileRequests,toStorageSystemInfo)) {
      NOT_NULL(fileRequest->toSURLInfo->storageSystemInfo = soap_new_srm__TStorageSystemInfo(soap, -1));
      fileRequest->toSURLInfo->storageSystemInfo->value.assign(arrayOfFileRequests.toStorageSystemInfo[u]->c_str());
      DM_LOG(DM_N(2), "toStorageSystemInfo[%u] == `%s'\n", u, fileRequest->toSURLInfo->storageSystemInfo->value.c_str());
    } else {
      fileRequest->toSURLInfo->storageSystemInfo = NULL;
      DM_LOG(DM_N(2), "toStorageSystemInfo[%u] == NULL\n", u);
    }
    
    req.arrayOfFileRequests->copyRequestArray.push_back(fileRequest);
  }
  
  NEW_STDSTRING(userRequestDescription);
  req.overwriteOption = (srm__TOverwriteMode *) overwriteOption;
  DM_LOG(DM_N(2), "overwriteOption == `%s'\n", getTOverwriteMode(*req.overwriteOption).c_str());
  PBOOL_VAL(removeSourceFiles);
  NEW_STR_VAL(storageSystemInfo,TStorageSystemInfo);
  NEW_INT64_VAL(totalRetryTime,TLifeTimeInSeconds);

  /* To send the request ... */
  SOAP_CALL_SRM(Copy); 

  RETURN(EXIT_SUCCESS);
}
Example #6
0
/**
 * srmPrepareToPut method.
 *
 * \param soap
 * \param srm_endpoint
 * \param authorizationID
 * \param fileRequests
 * \param userRequestDescription
 * \param overwriteOption
 * \param storageSystemInfo
 * \param desiredTotalRequestTime
 * \param desiredPinLifeTime
 * \param desiredFileLifeTime
 * \param desiredFileStorageType
 * \param targetSpaceToken
 * \param retentionPolicy
 * \param accessLatency
 * \param accessPattern
 * \param connectionType
 * \param clientNetworks
 * \param transferProtocols
 * \param resp request response
 *
 * \returns request exit status (EXIT_SUCCESS/EXIT_FAILURE)
 */
extern int
PrepareToPut(struct soap *soap,
             const char *srm_endpoint,
             const char *authorizationID,
             const tArrayOfPutFileRequests fileRequests,
             const char *userRequestDescription,
             const long *overwriteOption,
             tStorageSystemInfo storageSystemInfo,
             int *desiredTotalRequestTime,
             int *desiredPinLifeTime,
             int *desiredFileLifeTime,
             const long *desiredFileStorageType,
             const char *targetSpaceToken,
             const long *retentionPolicy,
             const long *accessLatency,
             const long *accessPattern,
             const long *connectionType,
             std::vector <std::string *> clientNetworks,
             std::vector <std::string *> transferProtocols,
             struct srm__srmPrepareToPutResponse_ *resp)
{
  DM_DBG_I;
  struct srm__srmPrepareToPutRequest req;

  DO_SOAP_INIT(soap);

#ifdef HAVE_CGSI_PLUGIN
  int flags;
  flags = CGSI_OPT_DISABLE_NAME_CHECK;
  soap_register_plugin_arg (soap, client_cgsi_plugin, &flags);
#else
#warning "Compiling without CGSI plugin support, i.e. no security"
#endif

  MV_CSTR2PSTR(req.authorizationID,authorizationID);

  /* Create the file request */
  NOT_0(fileRequests.SURL, req.arrayOfFileRequests, soap_new_srm__ArrayOfTPutFileRequest(soap, -1));
  for (uint u = 0; u < fileRequests.SURL.size(); u++) {
    DM_LOG(DM_N(2), "fileRequests.SURL[%u]\n", u);
    srm__TPutFileRequest *fileRequest;
    NOT_NULL(fileRequest = soap_new_srm__TPutFileRequest(soap, -1));

    MV_PSTR2PSTR(fileRequest->targetSURL,fileRequests.SURL[u]);
    if(NOT_NULL_VEC(fileRequests,expectedFileSize)) {
      fileRequest->expectedFileSize = fileRequests.expectedFileSize[u];
      DM_LOG(DM_N(2), "expectedFileSize[%u] = %"PRIi64"\n", u, *(fileRequest->expectedFileSize));
    } else {
      fileRequest->expectedFileSize = NULL;
      DM_LOG(DM_N(2), "expectedFileSize[%u] == NULL\n", u);
    }
    
    req.arrayOfFileRequests->requestArray.push_back(fileRequest);
  }

  MV_CSTR2PSTR(req.userRequestDescription,userRequestDescription);
  MV_PSOAP(OverwriteMode,req.overwriteOption,overwriteOption);

  /* Storage system info */
  MV_STORAGE_SYSTEM_INFO(req.storageSystemInfo,storageSystemInfo);

  MV_PINT(req.desiredTotalRequestTime,desiredTotalRequestTime);
  MV_PINT(req.desiredPinLifeTime,desiredPinLifeTime);
  MV_PINT(req.desiredFileLifeTime,desiredFileLifeTime);
  MV_PSOAP(FileStorageType,req.desiredFileStorageType,desiredFileStorageType);
  MV_CSTR2PSTR(req.targetSpaceToken,targetSpaceToken);
  
  /* Retention */
  MV_RETENTION_POLICY(req.targetFileRetentionPolicyInfo,retentionPolicy,accessLatency);
  
  /* Transfer parameters */
  MV_TRANSFER_PARAMETERS(req.transferParameters);
  
  /* To send the request ... */
  SOAP_CALL_SRM(PrepareToPut);

  RETURN(EXIT_SUCCESS);
}
Example #7
0
File: s2.cpp Project: dCache/s2
/********************************************************************
 * Parse command-line arguments (non -+ options)
 *
 * Returns:
 *   ERR_OK: if success
 *   >= ERR_OK: otherwise
 ********************************************************************/
static int
s2_run(int argc, char **argv, int i)
{
  int rval = ERR_OK, lval;
  int i_1 = i;
  Node *root = NULL;
  Process *proc = NULL;
  BOOL tp_created = FALSE;

  /* init progress bar */
  Process::progress(-1,proc);

#if defined(HAVE_SRM21) || defined(HAVE_SRM22)
  srm_init();
#endif

  lval = parse(opts.scr_fname, &root);
  DM_DBG(DM_N(1), "parser return value=%d\n", lval);
  UPDATE_MAX(rval, lval);
  if(rval > opts.s2_eval) {
    /* stop evaluation */
    UPDATE_MAX(rval, ERR_NEXEC);
    goto cleanup;
  }

  /* create thread pool */
  if(!tp_created) tp_init(opts.tp_size);
  tp_created = TRUE;

  /* pretty-print S2 tree ($ENV{VAR} are evaluated) */
  if(opts.pp_fname) lval = pp_print(root);
  DM_DBG(DM_N(1), "pretty-printer return value=%d\n", lval);
  UPDATE_MAX(rval, lval);

  if(root) {
    Process::threads_init();
    proc = new Process(root, NULL, NULL);

    if(!proc) {
      DM_ERR(ERR_SYSTEM, _("failed to create a Process: %s\n"), _(strerror(errno)));
      UPDATE_MAX(rval, ERR_SYSTEM);
      goto cleanup;
    }

    /* write ${0}..${n} variables */
    const char *name = cmd_label();
    proc->WriteVariable("0", name, TRUE);
    for(; i < argc; i++) {
      proc->WriteVariable(i2str(i - i_1 + 1).c_str(), argv[i], TRUE);
    }

    setenv("CLIENT_INFO", build_client_info(name), 1);

    lval = proc->eval();
    Process::threads_destroy();
    DM_DBG(DM_N(1), "evaluation return value=%d\n", lval);
    UPDATE_MAX(rval, lval);
  }

  /* after-evaluation print of the tree */
  if(opts.e2_fname) lval = e2_print(root);
  DM_DBG(DM_N(2), "after-evaluation print return value=%d\n", lval);
  UPDATE_MAX(rval, lval);

cleanup:
  /* cleanup */
  DELETE(proc);	/* free proc *first*, then root */
  DELETE(root);

  /* destroy thread pool */
  if(tp_created) tp_cleanup();

  /* hide progress bar */
  Process::progress(0,proc);

  DM_DBG(DM_N(1), "s2_run return value=%d\n", rval);
  return rval;
}
Example #8
0
File: s2.cpp Project: dCache/s2
/********************************************************************
 * Parse command-line option (global)
 *
 * Parameters:
 *  cfg_file:  TRUE  if called from a configuration file
 *             FALSE if command-line option
 *
 * Returns:
 *  -1: parameter was found (opt doesn't start with -+)
 *   0: option was found
 *   1: option was NOT found
 *   2: an error
 ********************************************************************/
static int
parse_cmd_opt(char *opt, BOOL cfg_file)
{
  option_item *op;
  int opt_off;
  char *p_err;

  if(opt == NULL) {
    /* internal error */
    DM_ERR_ASSERT("opt == NULL\n");
    return 0;
  }

  /* Process the options */

  /* Parameters */
  if (!(*opt == '-' || *opt == '+'))
    return -1;

  if (OPL("-0") || OPL("--e0-file"))
  { /* before-execution log messages filename */
    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    f_close(opts.e0_fname, &opts.e0_file);
    opts.e0_fname = opt + opt_off;

    if(strcmp(opts.e0_fname, "-") == 0)
      /* standard output */
      opts.e0_fname = NULL;

    f_open(opts.e0_fname, &opts.e0_file);
    return 0;
  }

  if (OPL("-1") || OPL("--e1-file"))
  { /* after-execution log messages filename */
    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    f_close(opts.e1_fname, &opts.e1_file);
    opts.e1_fname = opt + opt_off;

    if(strcmp(opts.e1_fname, "-") == 0)
      /* standard output */
      opts.e1_fname = NULL;

    f_open(opts.e1_fname, &opts.e1_file);
    return 0;
  }

  if (OPL("-2") || OPL("--e2-file"))
  { /* after-evaluation log messages filename */
    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    f_close(opts.e2_fname, &opts.e2_file);
    opts.e2_fname = opt + opt_off;

    if(strcmp(opts.e2_fname, "-") == 0)
      /* standard output */
      opts.e2_fname = NULL;

    f_open(opts.e2_fname, &opts.e2_file);
    return 0;
  }

  if (OPL("-a") || OPL("--ansi"))
  { /* ANSI colors */
    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    opts.ansi = strtol(opt + opt_off, &p_err, 0);
    if (p_err == opt + opt_off || *p_err) {
      /* no option value given || value contains invalid/non-digit char */
      opts.ansi = TRUE;
    }
    DM_ANSI_SET(opts.ansi);

    return 0;
  }

  if (OPL("-b") || OPL("--verbose"))
  { /* verbose/quiet execution */
    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    opts.verbose = strtol(opt + opt_off, &p_err, 0);
    if (p_err == opt + opt_off || *p_err)
      /* no option value given || value contains invalid/non-digit char */
      opts.verbose = 1;

    /* limit verbosity */
    if(opts.verbose > VERBOSE_MAX)
      opts.verbose = VERBOSE_MAX;
    else if(opts.verbose < VERBOSE_MIN)
      opts.verbose = VERBOSE_MIN;

    if(opts.verbose > 0)
      DM_LOG_SET_L((1 << opts.verbose) - 1);

    if(opts.verbose <= -1)
      /* disable warning messages */
      DM_WARN_SET_L(0);

    if(opts.verbose <= -2)
      /* disable error messages */
      DM_ERR_SET_L(0);

    return 0;
  }

  if (OPL("-h") || OPL("-?") || OPL("--help"))
  { /* help */
    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    opts.help = strtol(opt + opt_off, &p_err, 0);
    if (p_err == opt + opt_off || *p_err) {
      /* no option value given || value contains invalid/non-digit char */
      opts.help = 0;
    }

//    hlp(opts.help); exit(0);
    hlp(0); /* only level 0 help so far */ exit(0);
    return 0;
  }

  if (OPL("-d") || OPL("--dbg-file"))
  { /* debug messages output filename */
    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    opts.dbg_fname = opt + opt_off;
    DM_DBG_OPEN(opts.dbg_fname);     /* old stream is automatically closed */

    return 0;
  }

  if (OPL("-e") || OPL("--eval"))
  { /* default evaluation threshold for branches */
    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    opts.s2_eval = strtol(opt + opt_off, &p_err, 0);
    if (p_err == opt + opt_off || *p_err)
      /* no option value given || value contains invalid/non-digit char */
      opts.s2_eval = S2_EVAL;

    return 0;
  }

  if (OPL("-f") || OPL("--file"))
  { /* script filename */
    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    opts.scr_fname = opt + opt_off;

    if(strcmp(opts.scr_fname, "-") == 0)
      /* standard input */
      opts.scr_fname = NULL;

    return 0;
  }

  if (OPL("-g") || OPL("--progress"))
  { /* progress bar */
    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    opts.progress_bar = strtol(opt + opt_off, &p_err, 0);
    if (p_err == opt + opt_off || *p_err)
      /* no option value given || value contains invalid/non-digit char */
      opts.progress_bar = TRUE;

    return 0;
  }

  if (OPL("-i") || OPL("--pp-indent"))
  { /* pretty-printer indentation value */
    BOOL vrb_msg = FALSE;

    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    opts.pp_indent = strtol(opt + opt_off, &p_err, 0);

    /* limit pretty-printer indentation */
    if (opts.pp_indent > PP_INDENT_MAX) {
      opts.pp_indent = PP_INDENT_MAX;
      vrb_msg = TRUE;
    } else
    if (opts.pp_indent < PP_INDENT_MIN) {
      opts.pp_indent = PP_INDENT_MIN;
      vrb_msg = TRUE;
    }

    if (p_err == opt + opt_off || *p_err ||
        opts.pp_indent < PP_INDENT_MIN || opts.pp_indent > PP_INDENT_MAX) {
      /* no option value given || value contains invalid/non-digit char */
      opts.pp_indent = PP_INDENT;
      vrb_msg = TRUE;
    }

    if(vrb_msg)
      DM_DBG(DM_N(1),_("pretty-printer indentation set to %d spaces\n"), opts.pp_indent);

    return 0;
  }

  if (OPL("-l") || OPL("--log-file"))
  { /* default log filename */
    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    opts.log_fname = opt + opt_off;
    DM_LOG_OPEN(opts.log_fname);     /* old stream is automatically closed */

    return 0;
  }

  if (OPL("-p") || OPL("--pp-out-file"))
  { /* pretty-printer output file */
    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    f_close(opts.pp_fname, &opts.pp_file);
    opts.pp_fname = opt + opt_off;

    if(strcmp(opts.pp_fname, "-") == 0)
      /* standard output */
      opts.pp_fname = NULL;

    f_open(opts.pp_fname, &opts.pp_file);
    return 0;
  }

  if (OPL("-r") || OPL("--err-file"))
  { /* error messages output filename */
    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    opts.err_fname = opt + opt_off;
    DM_ERR_OPEN(opts.err_fname);     /* old stream is automatically closed */

    return 0;
  }

  if (OPL("-s") || OPL("--show-defaults"))
  { /* show default values (pretty-printer, evaluator) ON/OFF */

    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    opts.show_defaults = strtol(opt + opt_off, &p_err, 0);
    if (p_err == opt + opt_off || *p_err) {
      /* no option value given || value contains invalid/non-digit char */
      opts.show_defaults = TRUE;
    }

    return 0;
  }

  if (OPL("-S") || OPL("--simple-name"))
  {
    opts.simple_name = TRUE;
  }

  if (OPL("-T") || OPL("--threads"))
  { /* threads in the thread pool */
    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    opts.tp_size = strtol(opt + opt_off, &p_err, 0);
    if (p_err == opt + opt_off || *p_err)
      /* no option value given || value contains invalid/non-digit char */
      opts.tp_size = TP_THREADS_DEF;

    /* limit verbosity */
    if(opts.tp_size > TP_THREADS_MAX)
      opts.tp_size = TP_THREADS_MAX;
    else if(opts.tp_size < TP_THREADS_MIN)
      opts.tp_size = TP_THREADS_MIN;

    return 0;
  }

  if (OPL("-t") || OPL("--timeout"))
  { /* default timeout for branches */
    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    opts.s2_timeout = strtol(opt + opt_off, &p_err, 0);
    if (p_err == opt + opt_off || *p_err)
      /* no option value given || value contains invalid/non-digit char */
      opts.s2_timeout = S2_TIMEOUT;

    return 0;
  }

  if (OPL("-V") || OPL("--version"))
  { /* print the version and exit */
    fprintf(stderr,_("%s version %s\n"), PNAME(), VERSION);
    exit(ERR_OK);
  }

  if (OPL("-w") || OPL("--warn-file"))
  { /* warning messages output filename */
    if(opt_off > 2 && *(opt + opt_off) == '=')
      /* long option, ignore '=' */
      opt_off++;

    opts.warn_fname = opt + opt_off;
    DM_WARN_OPEN(opts.warn_fname);   /* old stream is automatically closed */

    return 0;
  }

  /* default option handling */
  if (opt[1] == '-' || opt[1] == '+') {
    int ret_val = 1;
    /* try long options */
    for (op = optionlist; op->short_name; op++)
    {
      if (op->long_name && strcmp(opt+2, op->long_name) == 0)
      {
        ret_val = 0;
        handle_option(op->short_name);
        break;
      }
    }
    return ret_val;
  } else
    /* try short options */
    return handle_option(opt+1);

  return 1;
}