/// <summary> /// Enqueue the observed invocation in the observation queue of the machine /// </summary> /// <param name="e">event corresponding to the action</param> /// <param name="o">IObservationCallback ob</param> /// <param name="args">parameters of the action</param> public static void __OnEvent(EventInfo e, object o, object[] args) { IObservationCallback oc = o as IObservationCallback; if (oc == null || e == null) { throw new Exception("__OnEvent"); } Symbol actionSymbol = oc.GetActionSymbol(e); Term obs = ConstructInvocationTerm(actionSymbol, args); oc.Enqueue(obs); }