Example #1
0
void TreeNode::updateID(std::string parentID, int count){
  // this is only called after an insert. The tree on which this is called is a sub-tree of someone else.
  // this tree might be a free hanging leaf or a whole tree
  // in any case, the logic is the same: whatever is before the first ":" is replaced by parentID + count. There is no need to treat leaves separately
  // Examples: 
  // a tree with a leaf 0:1:=7 is added to a tree 0:2 at position 3. ---> 0:2:3:1:=7
  // --- a rootleaf 0:=7 is added to the same tree and position. ---> 0:2:3:=7

  std::string newID;
  std::string currentID = getNodeID();
  int index = currentID.find(":");
  std::string tailID;
  if (index == -1) {
    tailID = "";
  } else {
    tailID = currentID.substr(index);
  }
  newID = parentID + ":" + convertIntToStr(count) + tailID;
  //  DEBUG("Setting new ID: " << newID);
  setNodeID(newID);

  for (unsigned int i = 0; i < getNumChildren(); i++) {
    getChild(i)->updateID(parentID, count);
  }
}
Example #2
0
std::string TreeNode::findIDForNode(const std::string& parent, int childno, shared_ptr<NodeContent> node) {
  NodeContentType type = node->getType();
  std::string value;
  if (type == NodeContentType::leaf) {
    return findIDForNode(parent, childno, type, convertIntToStr(node->getLeafValue()));
  } else {
    return findIDForNode(parent, childno, type);
  }
}
Example #3
0
/* Build a JSON message to query a block hash */
char* constructGetBlockHashJSONMsg(int blockHeight)
{
    char* blockHeightStr = convertIntToStr(blockHeight);
    int len = strlen(blockHeightStr);
    char* preMsg = "{\"jsonrpc\":1.0,\"id\":\"req\",\"method\":\"getblockhash\",\"params\":[%s]}";
    char* msg = (char*)malloc((62+len+1)*sizeof(char));
    sprintf(msg,preMsg,blockHeightStr);
    free(blockHeightStr);
    return msg;
}
Example #4
0
std::string TreeNode::findIDForNode(const std::string& parent, int childno, NodeContentType type, const std::string& value) {
  if (type == NodeContentType::nil) {
    return "";
  }

  if (type == NodeContentType::leaf) {
    if (parent == "") {
      return ":=" + value;
    } else {
      return parent + ":" + convertIntToStr(childno) + ":=" + value;
    }
  }

  if (type == NodeContentType::inner) {
    return parent + ":" + convertIntToStr(childno);
  }

  return "";
}
Example #5
0
std::string TreeNode::initNodeID(shared_ptr<NodeContent> node) {
 switch (node->getType()) {
  case NodeContentType::nil:
    return ""; break;
  case NodeContentType::leaf:
    return "0:=" + convertIntToStr(node->getLeafValue());
    break;
  case NodeContentType::inner:
    return "0";
    break;
 default: return ""; //should never reach here
  }
 
}
Example #6
0
int writeToDisk(char* data, int blockID)
{
    struct stat st = {0};
    if (stat("blocks", &st) == -1) mkdir("blocks", 0700);
    char* num = convertIntToStr(blockID);
    char* preFileName = "./blocks/block_%s.txt";
    char* fileName = (char*)malloc(sizeof(char)*(19+strlen(num)+1));
    sprintf(fileName,preFileName,num);
    free(num);
    FILE *f = fopen(fileName, "w");
    if (fileName!=NULL) free(fileName);
    if (f == NULL) return -1; /* Error opening file */
    fprintf(f, "%s", data);
    fclose(f);
    return 0;
}
Example #7
0
/* Build a HTTP POST request suitable for bitcoind */
char* buildRequest(char* body, char* host,char* username, char* password, int closeConnection)
{
    int bodyLen = strlen(body);
    char* bodyLenStr = convertIntToStr(bodyLen);
    int bodyLenStrSize = strlen(bodyLenStr);
    char* initialLine = "POST / HTTP/1.1\r\n";
    char* preHostLine = "Host: %s\r\n";
    char* hostLine = (char*)malloc(sizeof(char)*(9+strlen(host)));
    sprintf(hostLine,preHostLine,host);
    char* connectionLine = "Connection: close\r\n";
    char* preAuthorizationLine = "Authorization: Basic %s\r\n";
    char* credentials = (char*)malloc(sizeof(char)*(strlen(username)+strlen(password)+2));
    sprintf(credentials,"%s:%s",username,password);
    char* basicAuthBase64Cred = base64Encode(credentials);
    char* authorizationLine = (char*)malloc(sizeof(char)*(24+strlen(basicAuthBase64Cred)));
    sprintf(authorizationLine,preAuthorizationLine,basicAuthBase64Cred);
    char* contentTypeLine = "Content-Type: text/plain\r\n";
    char* preContentLengthLine = "Content-Length: %s\r\n";
    char* contentLengthLine = (char*)malloc(sizeof(char)*(19+bodyLenStrSize));
    sprintf(contentLengthLine,preContentLengthLine,bodyLenStr);
    char* res;
    char* preRes;
    if (closeConnection==1)
    {
        res = (char*)malloc(sizeof(char)*(strlen(initialLine)+strlen(hostLine)+strlen(connectionLine)+strlen(authorizationLine)+strlen(contentTypeLine)+strlen(contentLengthLine)+bodyLen+1+2));
        preRes = "%s%s%s%s%s%s\r\n%s";
        sprintf(res,preRes,initialLine,hostLine,connectionLine,authorizationLine,contentTypeLine,contentLengthLine,body);
    }
    else
    {
        res = (char*)malloc(sizeof(char)*(strlen(initialLine)+strlen(hostLine)+strlen(authorizationLine)+strlen(contentTypeLine)+strlen(contentLengthLine)+bodyLen+1+2));
        preRes = "%s%s%s%s%s\r\n%s";
        sprintf(res,preRes,initialLine,hostLine,authorizationLine,contentTypeLine,contentLengthLine,body);
    }
    free(bodyLenStr);
    free(hostLine);
    free(credentials);
    free(basicAuthBase64Cred);
    free(authorizationLine);
    free(contentLengthLine);
    return res;
}
Example #8
0
int testObtainCoveredFrags() {
  int errors = 0;

  std::string base = "testObtainCoveredFrags: ";
  
  vector<int> atts;
  atts.push_back(7);
  atts.push_back(8);
  atts.push_back(2);
  atts.push_back(4);
  atts.push_back(1);
  atts.push_back(3);
  
  vector<int> attFragIndices;
  vector<int> keyFragIndices;
  vector<std::string> coveredShareIDs;

  std::string expr = op_OR + "(1, " + op_AND + "(2,3,4), " + op_AND + "(2,5), " + op_AND + "(4,5))";
  shared_ptr<BLAccessPolicy> policy = make_shared<BLAccessPolicy>(expr, 5);
    
  vector<std::string> verifShareIDs;
  verifShareIDs.push_back("1:1");
  verifShareIDs.push_back("2:2");
  verifShareIDs.push_back("2:3");
  verifShareIDs.push_back("2:4");
  verifShareIDs.push_back("3:2");
  verifShareIDs.push_back("4:4");

  vector<int> verifKeyFragIDs;
  verifKeyFragIDs.push_back(0);
  verifKeyFragIDs.push_back(1);
  verifKeyFragIDs.push_back(2);
  verifKeyFragIDs.push_back(3);
  verifKeyFragIDs.push_back(4);
  verifKeyFragIDs.push_back(6);

  vector<int> verifAttFragIDs;
  verifAttFragIDs.push_back(4);
  verifAttFragIDs.push_back(2);
  verifAttFragIDs.push_back(5);
  verifAttFragIDs.push_back(3);
  verifAttFragIDs.push_back(2);
  verifAttFragIDs.push_back(3);

  policy->obtainCoveredFrags(atts, attFragIndices, keyFragIndices, coveredShareIDs); 

  test_diagnosis(base + "number of covered IDs", coveredShareIDs.size() == 6, errors);
  for (unsigned int i = 0; i < coveredShareIDs.size(); i++) {
    test_diagnosis(base + "coveredID " + convertIntToStr(i), coveredShareIDs[i] == verifShareIDs[i], errors);
  }

  test_diagnosis(base + "number of keyFragIndices", keyFragIndices.size() == 6, errors);
  for (unsigned int i = 0; i < keyFragIndices.size(); i++) {
    test_diagnosis(base + "keyFragIndex " + convertIntToStr(i), keyFragIndices[i] == verifKeyFragIDs[i], errors);
  }

  test_diagnosis(base + "number of attFragIndices", attFragIndices.size() == 6, errors);
  for (unsigned int i = 0; i < attFragIndices.size(); i++) {
    test_diagnosis(base + "attFragIndex " + convertIntToStr(i), attFragIndices[i] == verifAttFragIDs[i], errors);
  }
  
  return errors;
}
Example #9
0
string scannar::consoleMessage(int getMsg)
{
    convertIntToStr();

    switch(getMsg){
        case 0:

                return "It works fine.\nBuilt";
                break;
        case 1:
                return (err->scannarError()+lineNo);


        case 2:
                return (err->unknownType()+lineNo);


        case 3:
                return (err->invalidType()+lineNo);


        case 4:
                return (err->uninitialisedVar()+lineNo);


        case 5:
                return (err->invalidInitialisation()+lineNo);


        case 6:

               return (err->closeQuotesNotFound()+lineNo);

        case 7:
               return (err->invalidIdentifierName()+lineNo);
        case 8:
               return (err->invalidCharacter()+lineNo);
        case 9:
                return (err->invalidEscapeSeq()+lineNo);
        case 10:
                return (err->missingBegin()+"1");
        case 11:

                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->multipleBegin()+lineNo);
        case 12:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->invalidAfterEnd()+lineNo);
        case 13:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->endNotFound()+lineNo);
        case 14:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->invalidElse()+lineNo);
        case 15:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->extraEndFor()+lineNo);
        case 16:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->extraEndWhile()+lineNo);
        case 17:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->extraEndIf()+lineNo);
        case 18:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->EOFError()+lineNo);
        case 19:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->incorrectEnd()+lineNo);
        case 20:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->extraBracket()+lineNo);
        case 21:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->openBracketNotFound()+lineNo);
        case 22:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->invalidOpenBracket()+lineNo);
        case 23:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->unidentifiedBrackets()+lineNo);
        case 24:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->identifierNotFound()+lineNo);
        case 25:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->invalidAssignment()+lineNo);
        case 26:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->multipleDeclaration()+lineNo);
        case 27:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->invalidOperator()+lineNo);
        case 28:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->invalidOperatorForString()+lineNo);
        case 29:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->missingSemiColon()+lineNo);

        case 30:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->invalidCommand()+lineNo);
        case 31:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->uselessCommand()+lineNo);
        case 32:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->invalidRead()+lineNo);
        case 33:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->multipleEnd()+lineNo);
        case 34:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->missingEquals()+lineNo);
        case 35:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->uninitAndUndeclaredVars()+lineNo);
        case 36:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->invalidCharOp()+lineNo);
        case 37:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->invalidParserChar()+lineNo);
        case 38:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->closeBracketErr()+lineNo);
        case 39:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->endWhile()+lineNo);
        case 40:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->endFor()+lineNo);
        case 41:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->endIf()+lineNo);
        case 42:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->invalidLogicalOp()+lineNo);
        case 43:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->extraCloseBrackets()+lineNo);
        case 44:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->endLitOrVar()+lineNo);
        case 45:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->invalidLoopVar()+lineNo);
        case 46:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->invalidSemicolon()+lineNo);
        case 47:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->incrementNotFound()+lineNo);
        case 48:
                lineNumber=parse->getLineNumber();
                convertIntToStr();
                return (err->invalidCOPUsage()+lineNo);

        default :
                convertIntToStr();
                return "An error occured at "+lineNo;
     }
}