Ejemplo n.º 1
0
        void MapStruct <T>(out Func <T, Key> getKey, out Action <T, Key> setKey, out Func <T, Entity, T> From, out Func <Entity, T, Entity> To)
        {
            var objType = typeof(T);
            var sset    = new Func <string, VAction <T, int>, VAction <T, Entity> >(StructSet).Method.GetGenericMethodDefinition();
            var sget    = new Func <string, VFunc <T, int>, VAction <T, Entity> >(StructGet).Method.GetGenericMethodDefinition();
            var members = objType.GetProperties();
            var from    = new VAction <T, Entity> [members.Length];
            var to      = new VAction <T, Entity> [members.Length];

            // value types can't have keys
            getKey = null;
            setKey = null;
            int propCount = 0;

            for (int i = 0; i < members.Length; ++i)
            {
                // this is a reference type, so accumulate a list of getters/setters for the type's members
                //FIXME: add support for overridable field members via attributes
                var member = members[i];
                if (member.GetCustomAttribute <NotMappedAttribute>() == null)
                {
                    var tset = typeof(VAction <,>).MakeGenericType(objType, member.PropertyType);
                    from[propCount] = (VAction <T, Entity>)sset
                                      .MakeGenericMethod(objType, member.PropertyType)
                                      .Invoke(null, new object[] { member.Name, member.GetSetMethod().CreateDelegate(tset) });

                    var tget = typeof(VFunc <,>).MakeGenericType(objType, member.PropertyType);
                    to[propCount++] = (VAction <T, Entity>)sget
                                      .MakeGenericMethod(objType, member.PropertyType)
                                      .Invoke(null, new object[] { member.Name, member.GetGetMethod().CreateDelegate(tget) });
                }
            }
            From = (obj, e) =>
            {
                if (e == null)
                {
                    return(default(T));
                }
                for (var i = 0; i < propCount; ++i)
                {
                    from[i](ref obj, e);
                }
                return(obj);
            };
            To = (e, obj) =>
            {
                if (e == null)
                {
                    throw new ArgumentNullException("entity");
                }
                for (var i = 0; i < propCount; ++i)
                {
                    to[i](ref obj, e);
                }
                return(e);
            };
        }
Ejemplo n.º 2
0
 private void SaveActionToDB(int roomID, VAction act)
 {
     SaveActionToDB(roomID, new List <VAction>()
     {
         act
     });
 }
Ejemplo n.º 3
0
        protected override void process(Entity entity)
        {
            VAction action = (VAction)_ActionMapper.get(entity);

            action.doAction();

            ecs_instance.delete_entity(entity);
        }
Ejemplo n.º 4
0
 internal void UpdateRoomActionLive(string roomID, VAction act)
 {
     if (act != null)
     {
         ActionMsg jsonAction = new ActionMsg(act.ID, act.UserID, act.TimeStamp, act.ToStringWithoutUser(), -1);
         context.Clients.Group(roomID).updateRoomActionLive(roomID, act.TabID, jsonAction);
     }
 }
Ejemplo n.º 5
0
        //currently actions dont have any tags
        internal static ICollection <CriticalActionPoints> Analyze(VAction action)
        {
            List <CriticalActionPoints> cps = new List <CriticalActionPoints>();

            CriticalActionPoints cp = new CriticalActionPoints();

            cp.TabID    = action.TabID;
            cp.Priority = priority[i++ % priority.Length];
            cp.Type     = CriticalPointTypes.None;
            cps.Add(cp);

            return(cps);
        }
Ejemplo n.º 6
0
        internal void UpdateRoomActionLiveControl(string roomID, VAction act)
        {
            UpdateRoomActionLive(roomID, act);
            UpdateRoomUser(roomID, act.UserID, true);

            if (act.CriticalPoints == null)
            {
                return;
            }
            foreach (CriticalActionPoints cp in act.CriticalPoints)
            {
                UpdateNewCP(roomID, cp);
            }
        }
Ejemplo n.º 7
0
        public static Entity createAction(ActionDef aDef, Entity owner, Entity Target)
        {
            Entity e = ActionFactory.ECSInstance.create();

            VAction action = new VAction();

            action.ActionDef = aDef;
            action.Owner     = owner;
            action.Target    = Target;

            ActionFactory.ECSInstance.add_component(e, action);

            ActionFactory.ECSInstance.resolve(e);

            return(e);
        }
Ejemplo n.º 8
0
        internal static ICollection <CriticalActionPoints> Analyze(VAction action)
        {
            //TODO replace with eran's code

            List <CriticalActionPoints> cps = new List <CriticalActionPoints>();

            CriticalActionPoints cp = new CriticalActionPoints();

            cp.TabID    = action.TabID;
            cp.Priority = priority[i++ % priority.Length];
            cp.Type     = CriticalPointTypes.I;
            cps.Add(cp);

            return(null);
            //return cps;
        }
Ejemplo n.º 9
0
 private void AddAction(VAction action, bool clearAll)
 {
     if (clearAll)
     {
         for (int i = actionList.Count - 1; i > 0; i--)
         {
             actionList.RemoveAt(i);
         }
         if (actionList.Count > 0)
         {
             actionList[0].CancelAction();  //Just cancel the last one
         }
         actionList.Add(action);
     }
     else
     {
         actionList.Add(action);
     }
 }
Ejemplo n.º 10
0
        private List <VAction> GetActionHistory(int tabID, int startIndex)
        {
            List <VAction> actions = new List <VAction>();
            string         json    = VmtDevAPI.GetActionHistory(tabID, startIndex);

            if (json == null)
            {
                throw new TimeoutException(String.Format("TabID: {0} | TimeOut Exception | waiting time for actions from client API acceeded the timeout!", tabID));
            }

            var results = JsonConvert.DeserializeObject <dynamic>(json);

            foreach (var item in results)
            {
                VAction action = VAction.ConvertHistoryActionJson(tabID, item);
                if (action != null)
                {
                    actions.Add(action);
                }
            }
            return(actions);
        }
Ejemplo n.º 11
0
        public void HandleLiveAction(string actID, string xmlstr, string log, string eventName, int roomID)
        {
            //temporary solution for "if(url.xml == null)" always pass
            var    logRes = JsonConvert.DeserializeObject <dynamic>(log);
            string user   = logRes.userName.Value.ToString().Trim();

            if (isSagletUserInRoom(roomID.ToString(), user))
            {
                return;
            }
            criticalPointAlerts.user_action(roomID, user);
            UpdateRoomLastUpdate(roomID);
            //end temporary solution

            // TODO handle log and eventName
            var url = JsonConvert.DeserializeObject <dynamic>(xmlstr);

            if (url.xml == null)
            {
                return;
            }
            //var logRes= JsonConvert.DeserializeObject<dynamic>(log);

            VAction action = VAction.ConvertLiveActionJson(actID, url.xml.ToString(), logRes, eventName);

            if (action != null)
            {
                action.CriticalPoints = CriticalPointAnalyzer.Analyze(action);
                //int roomID = db.Tabs.Find(action.TabID).GroupID;
                //action.CriticalPoints.Add(criticalPointAlerts.user_action(roomID, action.UserID, (List<CriticalActionPoints>)action.CriticalPoints));

                //temporary canceled
                SaveActionToDB(roomID, action);
                hubDetails.UpdateRoomActionLiveControl(roomID.ToString(), action);
                //hubIndex.UpdateRoomIndex(roomID.ToString());
            }
        }
Ejemplo n.º 12
0
 static VAction <T, Entity> StructSet <T, TField>(string name, VAction <T, TField> setter) =>
 (ref T obj, Entity e) => setter(ref obj, Value <TField> .From(e[name]));