mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-27 00:19:25 -05:00
* Added FlagFilter to TokenOptions.
* Added data to posted data * modified dummyData to have nested Comments. git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5365 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
3f5c96ab8a
commit
c3ea5cbab6
@ -73,7 +73,9 @@ class RsTokReqOptions
|
||||
RsTokReqOptions()
|
||||
{
|
||||
mOptions = 0;
|
||||
mStatusFilter = 0; mStatusMask = 0; mSubscribeFilter = 0;
|
||||
mStatusFilter = 0; mStatusMask = 0;
|
||||
mFlagsFilter = 0; mFlagsMask = 0;
|
||||
mSubscribeFilter = 0;
|
||||
mBefore = 0; mAfter = 0;
|
||||
}
|
||||
|
||||
@ -84,6 +86,10 @@ class RsTokReqOptions
|
||||
uint32_t mStatusFilter;
|
||||
uint32_t mStatusMask;
|
||||
|
||||
// MsgFlags or GroupsFlags, depends on Request.
|
||||
uint32_t mFlagsFilter;
|
||||
uint32_t mFlagsMask;
|
||||
|
||||
uint32_t mSubscribeFilter; // Only for Groups.
|
||||
|
||||
// Time range... again applied after Options.
|
||||
|
@ -77,6 +77,9 @@ class RsPostedPost: public RsPostedMsg
|
||||
mMeta.mMsgFlags = RSPOSTED_MSGTYPE_POST;
|
||||
return;
|
||||
}
|
||||
|
||||
std::string mLink;
|
||||
std::string mNotes;
|
||||
};
|
||||
|
||||
|
||||
@ -99,6 +102,8 @@ class RsPostedComment: public RsPostedMsg
|
||||
mMeta.mMsgFlags = RSPOSTED_MSGTYPE_COMMENT;
|
||||
return;
|
||||
}
|
||||
|
||||
std::string mComment;
|
||||
};
|
||||
|
||||
|
||||
|
@ -370,6 +370,33 @@ static bool checkGroupFilter(const RsTokReqOptions &opts, const RsGroupMetaData
|
||||
statusMatch = true;
|
||||
}
|
||||
|
||||
bool flagsMatch = false;
|
||||
if (opts.mFlagsMask)
|
||||
{
|
||||
// Exact Flags match required.
|
||||
if ((opts.mFlagsMask & opts.mFlagsFilter) == (opts.mFlagsMask & group.mGroupFlags))
|
||||
{
|
||||
std::cerr << "checkGroupFilter() Accepting Group as Flags Match: ";
|
||||
std::cerr << " Mask: " << opts.mFlagsMask << " FlagsFilter: " << opts.mFlagsFilter;
|
||||
std::cerr << " GroupFlags: " << group.mGroupFlags << " GroupId: " << group.mGroupId;
|
||||
std::cerr << std::endl;
|
||||
|
||||
flagsMatch = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << "checkGroupFilter() Dropping Group due to !Flags Match ";
|
||||
std::cerr << " Mask: " << opts.mFlagsMask << " FlagsFilter: " << opts.mFlagsFilter;
|
||||
std::cerr << " GroupFlags: " << group.mGroupFlags << " GroupId: " << group.mGroupId;
|
||||
std::cerr << std::endl;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// no status comparision,
|
||||
flagsMatch = true;
|
||||
}
|
||||
|
||||
bool subMatch = false;
|
||||
if (opts.mSubscribeFilter)
|
||||
{
|
||||
@ -397,7 +424,7 @@ static bool checkGroupFilter(const RsTokReqOptions &opts, const RsGroupMetaData
|
||||
subMatch = true;
|
||||
}
|
||||
|
||||
return (statusMatch && subMatch);
|
||||
return (statusMatch && flagsMatch && subMatch);
|
||||
}
|
||||
|
||||
|
||||
@ -429,7 +456,35 @@ static bool checkMsgFilter(const RsTokReqOptions &opts, const RsMsgMetaData &msg
|
||||
// no status comparision,
|
||||
statusMatch = true;
|
||||
}
|
||||
return statusMatch;
|
||||
|
||||
bool flagsMatch = false;
|
||||
if (opts.mFlagsMask)
|
||||
{
|
||||
// Exact Flags match required.
|
||||
if ((opts.mFlagsMask & opts.mFlagsFilter) == (opts.mFlagsMask & msg.mMsgFlags))
|
||||
{
|
||||
std::cerr << "checkMsgFilter() Accepting Msg as Flags Match: ";
|
||||
std::cerr << " Mask: " << opts.mFlagsMask << " FlagsFilter: " << opts.mFlagsFilter;
|
||||
std::cerr << " MsgFlags: " << msg.mMsgFlags << " MsgId: " << msg.mMsgId;
|
||||
std::cerr << std::endl;
|
||||
|
||||
flagsMatch = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << "checkMsgFilter() Dropping Msg due to !Flags Match ";
|
||||
std::cerr << " Mask: " << opts.mFlagsMask << " FlagsFilter: " << opts.mFlagsFilter;
|
||||
std::cerr << " MsgFlags: " << msg.mMsgFlags << " MsgId: " << msg.mMsgId;
|
||||
std::cerr << std::endl;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// no status comparision,
|
||||
flagsMatch = true;
|
||||
}
|
||||
|
||||
return (statusMatch && flagsMatch);
|
||||
}
|
||||
|
||||
|
||||
@ -687,6 +742,7 @@ bool GxsDataProxy::getMsgRelatedList(uint32_t &token, const RsTokReqOptions &opt
|
||||
bool onlyLatestMsgs = false;
|
||||
bool onlyAllVersions = false;
|
||||
bool onlyChildMsgs = false;
|
||||
bool onlyThreadMsgs = false;
|
||||
|
||||
if (opts.mOptions & RS_TOKREQOPT_MSG_LATEST)
|
||||
{
|
||||
@ -708,6 +764,13 @@ bool GxsDataProxy::getMsgRelatedList(uint32_t &token, const RsTokReqOptions &opt
|
||||
onlyChildMsgs = true;
|
||||
}
|
||||
|
||||
if (opts.mOptions & RS_TOKREQOPT_MSG_THREAD)
|
||||
{
|
||||
std::cerr << "GxsDataProxy::getMsgRelatedList() MSG_THREAD";
|
||||
std::cerr << std::endl;
|
||||
onlyThreadMsgs = true;
|
||||
}
|
||||
|
||||
if (onlyAllVersions && onlyChildMsgs)
|
||||
{
|
||||
std::cerr << "GxsDataProxy::getMsgRelatedList() ERROR Incompatible FLAGS (VERSIONS & PARENT)";
|
||||
@ -716,6 +779,14 @@ bool GxsDataProxy::getMsgRelatedList(uint32_t &token, const RsTokReqOptions &opt
|
||||
return false;
|
||||
}
|
||||
|
||||
if (onlyAllVersions && onlyThreadMsgs)
|
||||
{
|
||||
std::cerr << "GxsDataProxy::getMsgRelatedList() ERROR Incompatible FLAGS (VERSIONS & THREAD)";
|
||||
std::cerr << std::endl;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((!onlyLatestMsgs) && onlyChildMsgs)
|
||||
{
|
||||
std::cerr << "GxsDataProxy::getMsgRelatedList() ERROR Incompatible FLAGS (!LATEST & PARENT)";
|
||||
@ -724,9 +795,25 @@ bool GxsDataProxy::getMsgRelatedList(uint32_t &token, const RsTokReqOptions &opt
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((!onlyLatestMsgs) && onlyThreadMsgs)
|
||||
{
|
||||
std::cerr << "GxsDataProxy::getMsgRelatedList() ERROR Incompatible FLAGS (!LATEST & THREAD)";
|
||||
std::cerr << std::endl;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (onlyChildMsgs && onlyThreadMsgs)
|
||||
{
|
||||
std::cerr << "GxsDataProxy::getMsgRelatedList() ERROR Incompatible FLAGS (PARENT & THREAD)";
|
||||
std::cerr << std::endl;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/* FALL BACK OPTION */
|
||||
if ((!onlyLatestMsgs) && (!onlyAllVersions) && (!onlyChildMsgs))
|
||||
if ((!onlyLatestMsgs) && (!onlyAllVersions) && (!onlyChildMsgs) && (!onlyThreadMsgs))
|
||||
{
|
||||
std::cerr << "GxsDataProxy::getMsgRelatedList() FALLBACK -> NO FLAGS -> JUST COPY";
|
||||
std::cerr << std::endl;
|
||||
@ -755,7 +842,7 @@ bool GxsDataProxy::getMsgRelatedList(uint32_t &token, const RsTokReqOptions &opt
|
||||
|
||||
if (onlyLatestMsgs)
|
||||
{
|
||||
if (onlyChildMsgs)
|
||||
if (onlyChildMsgs || onlyThreadMsgs)
|
||||
{
|
||||
// RUN THROUGH ALL MSGS... in map origId -> TS.
|
||||
std::map<std::string, std::pair<std::string, time_t> > origMsgTs;
|
||||
@ -763,16 +850,27 @@ bool GxsDataProxy::getMsgRelatedList(uint32_t &token, const RsTokReqOptions &opt
|
||||
for(mit = mMsgMetaData.begin(); mit != mMsgMetaData.end(); mit++)
|
||||
{
|
||||
// skip msgs that aren't children.
|
||||
if (mit->second.mParentId != origMsgId)
|
||||
if (onlyChildMsgs)
|
||||
{
|
||||
continue;
|
||||
if (mit->second.mParentId != origMsgId)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else /* onlyThreadMsgs */
|
||||
{
|
||||
if (mit->second.mThreadId != (*it))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
oit = origMsgTs.find(mit->second.mOrigMsgId);
|
||||
bool addMsg = false;
|
||||
if (oit == origMsgTs.end())
|
||||
{
|
||||
std::cerr << "GxsDataProxy::getMsgList() Found New OrigMsgId: ";
|
||||
std::cerr << "GxsDataProxy::getMsgRelatedList() Found New OrigMsgId: ";
|
||||
std::cerr << mit->second.mOrigMsgId;
|
||||
std::cerr << " MsgId: " << mit->second.mMsgId;
|
||||
std::cerr << " TS: " << mit->second.mPublishTs;
|
||||
@ -783,7 +881,7 @@ bool GxsDataProxy::getMsgRelatedList(uint32_t &token, const RsTokReqOptions &opt
|
||||
// check timestamps.
|
||||
else if (oit->second.second < mit->second.mPublishTs)
|
||||
{
|
||||
std::cerr << "GxsDataProxy::getMsgList() Found Later Msg. OrigMsgId: ";
|
||||
std::cerr << "GxsDataProxy::getMsgRelatedList() Found Later Msg. OrigMsgId: ";
|
||||
std::cerr << mit->second.mOrigMsgId;
|
||||
std::cerr << " MsgId: " << mit->second.mMsgId;
|
||||
std::cerr << " TS: " << mit->second.mPublishTs;
|
||||
|
@ -953,8 +953,11 @@ std::ostream &operator<<(std::ostream &out, const RsPostedGroup &group)
|
||||
bool p3PostedService::generateDummyData()
|
||||
{
|
||||
#define MAX_GROUPS 10 //100
|
||||
#define MAX_POSTS 100 //1000
|
||||
#define MAX_COMMENTS 5000 //10000
|
||||
#define MAX_POSTS 50 //1000
|
||||
|
||||
#define MAX_BASE_COMMENTS 1000 //10000
|
||||
#define MAX_COMMENTS 4000 //10000
|
||||
|
||||
#define MAX_VOTES 10000 //10000
|
||||
|
||||
std::list<RsPostedGroup> mGroups;
|
||||
@ -1056,7 +1059,7 @@ bool p3PostedService::generateDummyData()
|
||||
|
||||
}
|
||||
|
||||
for(i = 0; i < MAX_COMMENTS; i++)
|
||||
for(i = 0; i < MAX_BASE_COMMENTS; i++)
|
||||
{
|
||||
/* generate a base thread */
|
||||
|
||||
@ -1106,6 +1109,56 @@ bool p3PostedService::generateDummyData()
|
||||
}
|
||||
|
||||
|
||||
for(i = 0; i < MAX_COMMENTS; i++)
|
||||
{
|
||||
/* generate a base thread */
|
||||
|
||||
/* rotate the Forum Groups Around, then pick one.
|
||||
*/
|
||||
|
||||
int rnd = (int) (RSRandom::random_f32() * 10.0);
|
||||
|
||||
for(j = 0; j < rnd; j++)
|
||||
{
|
||||
RsPostedComment head = mComments.front();
|
||||
mComments.pop_front();
|
||||
mComments.push_back(head);
|
||||
}
|
||||
|
||||
RsPostedComment parent = mComments.front();
|
||||
|
||||
/* now create a new child msg */
|
||||
|
||||
RsPostedComment comment;
|
||||
|
||||
/* fill in key data
|
||||
* GroupId
|
||||
* MsgId
|
||||
* OrigMsgId
|
||||
* ThreadId
|
||||
* ParentId
|
||||
* PublishTS (take Forum TS + a bit ).
|
||||
*
|
||||
* ChildTS ????
|
||||
*/
|
||||
snprintf(name, DUMMY_NAME_MAX_LEN, "%s => Comment_%d", parent.mMeta.mMsgName.c_str(), i+1);
|
||||
comment.mMeta.mMsgName = name;
|
||||
//comment.mMsg = name;
|
||||
|
||||
comment.mMeta.mGroupId = parent.mMeta.mGroupId;
|
||||
comment.mMeta.mMsgId = genRandomId();
|
||||
comment.mMeta.mOrigMsgId = comment.mMeta.mMsgId;
|
||||
comment.mMeta.mThreadId = parent.mMeta.mThreadId;
|
||||
comment.mMeta.mParentId = parent.mMeta.mOrigMsgId;
|
||||
|
||||
comment.mMeta.mPublishTs = parent.mMeta.mPublishTs + (RSRandom::random_f32() * 10000);
|
||||
if (comment.mMeta.mPublishTs > now)
|
||||
comment.mMeta.mPublishTs = now - 1;
|
||||
|
||||
mComments.push_back(comment);
|
||||
}
|
||||
|
||||
|
||||
for(i = 0; i < MAX_VOTES; i++)
|
||||
{
|
||||
/* generate a base thread */
|
||||
|
Loading…
Reference in New Issue
Block a user