Sophie

Sophie

distrib > Fedora > 18 > x86_64 > by-pkgid > 543fb48f7ac6afff3e0b68e9becc5c3b > files > 160

sems-1.4.3-8.fc18.x86_64.rpm

mod_groups - Group event passing

 Copyright (C) 2010 Stefan Sayer
 
 Development of this module was sponsored by TelTech Systems Inc

Overview
--------

The groups module implements a group event broadcast system. DSM calls can
join and leave groups, and post events to groups. Events are passed to all
members of the group that the event is posted to. Events can, just like the 
`postEvent` function of DSM, contain either some variables, or all variables.
If a call ends, it is automatically removed from all groups it belongs to.

Actions: 

  groups.join(groupname)            -  Join a group
  groups.leave(groupname)           -  Leave a group
  groups.leaveAll()                 -  Leave all groups
  groups.postEvent(groupname, var1;var2)  -  post event to groupname with var1 and var2
  groups.postEvent(groupname, var)  -  post event to groupname with all variables


Example:
  import(mod_groups);
  initial state START
  enter {
   groups.join("yeah");
   repost();
  };

  transition "in the call" START --> IN_CALL;

  state IN_CALL;

  transition "got key" IN_CALL - key / {
	set($event="key_press");
	set($key=#key);
	set($duration=#duration);
	set($type=groups);
        logVars(1);
	groups.postEvent("yeah", event;key;duration;type);
  } -> IN_CALL;

  transition "got group event" IN_CALL - event(#type==groups) / {
	logParams();
  } -> IN_CALL;

  transition "hangup" IN_CALL - hangup / {
    -- groups.leave("yeah");
    groups.leaveAll();
    stop(false);
  } -> END;

  state END;