std::string redis_setval(std::string file_id, std::string col, std::string val) { // generate file_id if needed if(file_id.compare("null")==0) { std::string file_id=redis_getval("redis_last_id","val"); //cout << "got file id " << file_id << endl; if(file_id.compare("null")==0) { file_id="1"; } int redis_last_id=0; redis_last_id=atoi(file_id.c_str()); redis_last_id++;//find non-local solution (other table?) std::stringstream result; result<<redis_last_id; //cout << "removing " << file_id << endl; redis_remove_val("redis_last_id","val",file_id); reply = (redisReply*)redisCommand(c,"hget redis_last_id val"); if(reply->len!=0) { std::string rep_str = reply->str; //cout << "did it take?" << rep_str << endl; } freeReplyObject(reply); //cout << "setting " << result.str() << endl; redis_setval("redis_last_id","val",result.str()); file_id = result.str(); redis_setval(file_id,col,val); //cout << "returning " << file_id; return file_id; } // handle file_id key reply = (redisReply*)(redisReply*)redisCommand(c,"hget %s %s",file_id.c_str(),col.c_str()); std::string output = val; if(reply->len != 0) { std::string rep_str = reply->str; output = rep_str + ":" + output; } freeReplyObject(reply); //output = de_dup(output); reply = (redisReply*)redisCommand(c,"hset %s %s %s",file_id.c_str(),col.c_str(),output.c_str()); freeReplyObject(reply); //handle col key reply = (redisReply*)redisCommand(c,"hget %s %s",col.c_str(),val.c_str()); output = file_id; if(reply->len != 0) { std::string rep_str = reply->str; output = rep_str + ":" + output; } freeReplyObject(reply); //output = de_dup(output); reply = (redisReply*)redisCommand(c,"hset %s %s %s",col.c_str(),val.c_str(),output.c_str()); freeReplyObject(reply); return file_id; }
std::string database_setval(std::string file_id, std::string col, std::string val){ file_id=trim(file_id); col=trim(col); val=trim(val); #ifdef VOLDEMORT_FOUND if(DATABASE==VOLDEMORT){ vold_calls++; std::string retstd::string="fail"; retstd::string=voldemort_setval(file_id,col,val); return retstd::string; } #endif #ifdef REDIS_FOUND if(DATABASE==REDIS){ redis_calls++; std::string retstring="fail"; retstring=redis_setval(file_id,col,val); return retstring; } #endif #ifdef BDB_FOUND if(DATABASE==BDB) { std::string retstring = bdb_setval(file_id, col, val); return retstring; } #endif }
static int xmp_setxattr(const char *path, const char *name, const char *value, size_t size, int flags, uint32_t param) { #else static int xmp_setxattr(const char *path, const char *name, const char *value, size_t size, int flags) { #endif string attr = bin2hex(value, size); fprintf(stderr, "setxattr call\npath:%sname:%svalue:%s\n\n\n\n\n\n\n\n\n\n", path, name, value); string xpath = "xattr:"; xpath += path; redis_setval(xpath, name, attr.c_str()); fprintf(stderr, "setxattr call\n %s, %s, %s\n\n\n\n\n\n\n\n\n\n", xpath.c_str(), name, attr.c_str()); return 0; }