Module: sems Branch: master Commit: 4ad5d0324e8a919834b7589c9d18695adc7d7118 URL: https://github.com/sems-server/sems/commit/4ad5d0324e8a919834b7589c9d18695adc7d7118
Author: Stefan Sayer <[email protected]> Committer: Stefan Sayer <[email protected]> Date: 2015-06-09T00:03:31+02:00 dsm:mod_groups: functions to get group participants and size --- Modified: apps/dsm/mods/mod_groups/ModGroups.cpp Modified: apps/dsm/mods/mod_groups/ModGroups.h Modified: doc/dsm/mods/Readme.mod_groups.txt --- Diff: https://github.com/sems-server/sems/commit/4ad5d0324e8a919834b7589c9d18695adc7d7118.diff Patch: https://github.com/sems-server/sems/commit/4ad5d0324e8a919834b7589c9d18695adc7d7118.patch --- diff --git a/apps/dsm/mods/mod_groups/ModGroups.cpp b/apps/dsm/mods/mod_groups/ModGroups.cpp index 60a1edd..9af9a79 100644 --- a/apps/dsm/mods/mod_groups/ModGroups.cpp +++ b/apps/dsm/mods/mod_groups/ModGroups.cpp @@ -47,7 +47,8 @@ MOD_ACTIONEXPORT_BEGIN(MOD_CLS_NAME) { DEF_CMD("groups.join", GroupsJoinAction); DEF_CMD("groups.leave", GroupsLeaveAction); DEF_CMD("groups.leaveAll", GroupsLeaveAllAction); - // DEF_CMD("groups.get", GroupsGetAction); + DEF_CMD("groups.get", GroupsGetAction); + DEF_CMD("groups.getSize", GroupsGetSizeAction); // DEF_CMD("groups.getMembers", GroupsGetMembersAction); DEF_CMD("groups.postEvent", GroupsPostEventAction); @@ -125,6 +126,43 @@ EXEC_ACTION_START(GroupsLeaveAllAction) { GroupsModule::leave_all_groups(ltag); } EXEC_ACTION_END; +CONST_ACTION_2P(GroupsGetAction, '=', false); +EXEC_ACTION_START(GroupsGetAction) { + string var = par1; + if (var.size() && var[0]=='$') var.erase(0,1); + string groupname = resolveVars(par2, sess, sc_sess, event_params); + GroupsModule::groups_mut.lock(); + GroupMap::iterator grp = GroupsModule::groups.find(groupname); + int i=0; + if (grp != GroupsModule::groups.end()) { + for (set<string>::iterator it = + grp->second.begin(); it != grp->second.end(); it++) { + sc_sess->var[var+"["+int2str(i)+"]"] = *it; + i++; + } + } + GroupsModule::groups_mut.unlock(); + DBG("get %d group members of '%s' in $%s[]\n", i, groupname.c_str(), var.c_str()); + +} EXEC_ACTION_END; + +CONST_ACTION_2P(GroupsGetSizeAction, '=', false); +EXEC_ACTION_START(GroupsGetSizeAction) { + string var = par1; + if (var.size() && var[0]=='$') var.erase(0,1); + string groupname = resolveVars(par2, sess, sc_sess, event_params); + DBG("posting event to group '%s'\n", groupname.c_str()); + GroupsModule::groups_mut.lock(); + int size = 0; + GroupMap::iterator grp = GroupsModule::groups.find(groupname); + if (grp != GroupsModule::groups.end()) { + size = grp->second.size(); + } + GroupsModule::groups_mut.unlock(); + sc_sess->var[var] = int2str(size); + DBG("get group '%s' size $%s=%d\n", groupname.c_str(), var.c_str(), size); +} EXEC_ACTION_END; + CONST_ACTION_2P(GroupsPostEventAction, ',', true); EXEC_ACTION_START(GroupsPostEventAction) { string groupname = resolveVars(par1, sess, sc_sess, event_params); diff --git a/apps/dsm/mods/mod_groups/ModGroups.h b/apps/dsm/mods/mod_groups/ModGroups.h index 4305e9a..37c1c0f 100644 --- a/apps/dsm/mods/mod_groups/ModGroups.h +++ b/apps/dsm/mods/mod_groups/ModGroups.h @@ -60,7 +60,8 @@ DECLARE_MODULE_END; DEF_ACTION_1P(GroupsJoinAction); DEF_ACTION_1P(GroupsLeaveAction); DEF_ACTION_1P(GroupsLeaveAllAction); -/* DEF_ACTION_1P(GroupsGetAction); */ +DEF_ACTION_2P(GroupsGetAction); +DEF_ACTION_2P(GroupsGetSizeAction); /* DEF_ACTION_1P(GroupsGetMembersAction); */ DEF_ACTION_2P(GroupsPostEventAction); diff --git a/doc/dsm/mods/Readme.mod_groups.txt b/doc/dsm/mods/Readme.mod_groups.txt index 63248a1..4551229 100644 --- a/doc/dsm/mods/Readme.mod_groups.txt +++ b/doc/dsm/mods/Readme.mod_groups.txt @@ -21,6 +21,9 @@ Actions: groups.postEvent(groupname, var1;var2) - post event to groupname with var1 and var2 groups.postEvent(groupname, var) - post event to groupname with all variables + groups.get(arrayname=groupname) - get all ltags of troupname in arrayname + groups.getSize(varname=groupname) - get size of group in varname + Example: import(mod_groups); _______________________________________________ Semsdev mailing list [email protected] http://lists.iptel.org/mailman/listinfo/semsdev
