예제 #1
0
        public override void OnMessageEvent(ServiceStack.ServerEventMessage msg)
        {
            if (msg.Channel != typeof(JarsResourceGroup).Name)
            {
                return;
            }

            alertControl.FormDisplaySpeed  = DevExpress.XtraBars.Alerter.AlertFormDisplaySpeed.Fast;
            alertControl.FormShowingEffect = DevExpress.XtraBars.Alerter.AlertFormShowingEffect.SlideHorizontal;
            alertControl.FormLocation      = DevExpress.XtraBars.Alerter.AlertFormLocation.BottomRight;
            var alertInfo = new StringBuilder();

            switch (msg.Selector)
            {
            case SelectorTypes.delete:
                List <string> ids = msg.Data.ConvertTo <List <string> >();
                if (ids.Any())
                {
                    foreach (var id in ids)
                    {
                        var rec = ((IEnumerable <JarsResourceGroup>)defaultBindingSource.List).FirstOrDefault(r => $"{r.Id}" == $"{id}");
                        if (rec != null)
                        {
                            this.InvokeIfRequired(frm => frm.defaultBindingSource.Remove(rec));
                        }
                        alertInfo.AppendLine($"Id: {id} (Removed) ");
                    }
                }
                this.InvokeIfRequired(frm => alertControl.Show(this, "Delete Group", alertInfo.ToString()));
                break;

            case SelectorTypes.store:
                List <JarsResourceGroup> storeDto = msg.Json.FromJson <List <JarsResourceGroup> >();

                if (storeDto != null)
                {
                    foreach (var entity in storeDto)
                    {
                        var rec = ((IEnumerable <JarsResourceGroup>)defaultBindingSource.List).FirstOrDefault(r => $"{r.Id}" == $"{entity.Id}");
                        if (rec != null)
                        {
                            rec = entity.PopulateWith(entity);
                        }
                        else
                        {
                            defaultBindingSource.List.Add(entity);
                        }
                        alertInfo.AppendLine($"{entity.Name} ({entity.Code}) ");
                    }
                }
                this.InvokeIfRequired(frm => alertControl.Show(this, "Group Stored", alertInfo.ToString()));
                OnRefreshDataAsync();
                break;
            }
            base.OnMessageEvent(msg);
        }
예제 #2
0
파일: StatusesForm.cs 프로젝트: CobyC/JaRS
        public override void OnMessageEvent(ServiceStack.ServerEventMessage msg)
        {
            if (msg.Channel != typeof(ApptStatus).Name)
            {
                return;
            }

            //var thread = new Thread(() =>
            //{
            //    switch (msg.Selector)
            //    {
            //        case SelectorTypes.delete:
            //            MessageBox.Show($"DELETE - Op:{msg.Op} Selector:{msg.Selector} Target:{msg.Target} Channel:{msg.Channel} EventId:{msg.EventId}");
            //            break;
            //        case SelectorTypes.store:
            //            MessageBox.Show($"SAVE - Op:{msg.Op} Selector:{msg.Selector} Target:{msg.Target} Channel:{msg.Channel} EventId:{msg.EventId}");
            //            break;
            //    }
            //});
            //thread.Start();
            base.OnMessageEvent(msg);
        }
예제 #3
0
        public override void OnMessageEvent(ServiceStack.ServerEventMessage msg)
        {
            if (msg.Channel != typeof(ApptLabel).Name)
            {
                return;
            }

            if (msg.Selector == SelectorTypes.store)
            {
                var msgData = msg.Json.FromJson <ServerEventMessageData>();
                var lbls    = msgData.jsonDataString.FromJson <List <ApptLabel> >();
                foreach (var lbl in lbls)
                {
                    var fnd = ((List <ApptLabel>)defaultBindingSource.List).Find(l => l.Id == lbl.Id);
                    if (fnd == null)
                    {
                        defaultBindingSource.Add(fnd);
                    }
                }
                this.BeginInvokeIfRequired(c => { c.defaultBindingSource.ResetBindings(false); });
            }
            if (msg.Selector == SelectorTypes.delete)
            {
                var msgData = msg.Json.FromJson <ServerEventMessageData>();
                var ids     = msgData.jsonDataString.FromJson <List <int> >();
                foreach (var id in ids)
                {
                    var fnd = ((List <ApptLabel>)defaultBindingSource.List).Find(l => l.Id == id);
                    if (fnd != null)
                    {
                        defaultBindingSource.Remove(fnd);
                    }
                    this.BeginInvokeIfRequired(c => { c.defaultBindingSource.ResetBindings(false); });
                }
            }
            base.OnMessageEvent(msg);
        }
예제 #4
0
파일: JarsRulesForm.cs 프로젝트: CobyC/JaRS
        public override void OnMessageEvent(ServiceStack.ServerEventMessage msg)
        {
            if (msg.Channel != typeof(JarsRule).Name)
            {
                return;
            }

            switch (msg.Selector)
            {
            case SelectorTypes.delete:
                MessageBox.Show($"DELETE - Op:{msg.Op} Selector:{msg.Selector} Target:{msg.Target} Channel:{msg.Channel} EventId:{msg.EventId}");
                break;

            case SelectorTypes.store:
                if (msg.Channel == nameof(JarsRule))
                {
                    JarsRule entityCon = msg.Json.FromJson <JarsRule>();
                    //IEntityRule findCond = ResourceEntityConditionsList.FirstOrDefault(c => c.Id == entityCon.Id);
                    //if (findCond != null)
                    //{
                    //    //replace
                    //    ResourceEntityConditionsList.Remove(findCond);
                    //    ResourceEntityConditionsList.Add(entityCon);
                    //}
                    //else
                    //{
                    //    //add
                    //    ResourceEntityConditionsList.Add(entityCon);
                    //}
                    //update bindings
                    UpdateLinkedBindingSources();
                }
                //MessageBox.Show($"SAVE - Op:{msg.Op} Selector:{msg.Selector} Target:{msg.Target} Channel:{msg.Channel} EventId:{msg.EventId}");
                break;
            }
            base.OnMessageEvent(msg);
        }
예제 #5
0
        private void ProcessOnJoinMessage(ServerEventMessage e)
        {
            var msg = new ServerEventJoin().Populate(e, JsonServiceClient.ParseObject(e.Json));

            OnCommandReceived(msg);
        }
예제 #6
0
        void ProcessEventMessage(ServerEventMessage e)
        {
            var parts = e.Data.SplitOnFirst(' ');

            e.Selector = parts[0];
            var selParts = e.Selector.SplitOnFirst('@');

            if (selParts.Length > 1)
            {
                e.Channel  = selParts[0];
                e.Selector = selParts[1];
            }

            e.Json = parts[1];

            if (!string.IsNullOrEmpty(e.Selector))
            {
                parts = e.Selector.SplitOnFirst('.');
                if (parts.Length < 2)
                {
                    throw new ArgumentException("Invalid Selector '{0}'".Fmt(e.Selector));
                }

                e.Op = parts[0];
                var target = parts[1].Replace("%20", " ");

                var tokens = target.SplitOnFirst('$');
                e.Target = tokens[0];
                if (tokens.Length > 1)
                {
                    e.CssSelector = tokens[1];
                }

                if (e.Op == "cmd")
                {
                    switch (e.Target)
                    {
                    case "onConnect":
                        ProcessOnConnectMessage(e);
                        return;

                    case "onJoin":
                        ProcessOnJoinMessage(e);
                        return;

                    case "onLeave":
                        ProcessOnLeaveMessage(e);
                        return;

                    case "onUpdate":
                        ProcessOnUpdateMessage(e);
                        return;

                    case "onHeartbeat":
                        ProcessOnHeartbeatMessage(e);
                        return;

                    default:
                        ServerEventCallback cb;
                        if (Handlers.TryGetValue(e.Target, out cb))
                        {
                            cb(this, e);
                        }
                        break;
                    }
                }

                ServerEventCallback receiver;
                NamedReceivers.TryGetValue(e.Op, out receiver);
                if (receiver != null)
                {
                    receiver(this, e);
                }
            }

            OnMessageReceived(e);
        }