public TableXmlWrapper(QueryResultPt qrp) : base(qrp.result)
 {
     Token   = qrp.token;
     Count   = qrp.count;
     Message = qrp.msg;
     Success = qrp.success == 0;
 }
Exemple #2
0
 private void _ic_Notified(CVResult r, object o)
 {
     if (r == CVResult.TableQueryReceived)
     {
         if (o is QueryResultPt)
         {
             QueryResultPt qrp = o as QueryResultPt;
             if (qrp.success == 0)
             {
                 if (qrp.resultFmart == "xml")
                 {
                     _txw = new TableXmlWrapper(qrp);
                     Notified?.Invoke(CVRTableResult.SelectXmlReceived, _txw);
                 }
                 else if (qrp.resultFmart == "json")
                 {
                     _cjp = new CVRJsonParser(qrp.result)
                     {
                         Token = qrp.token,
                         Count = qrp.count
                     };
                     Notified?.Invoke(CVRTableResult.SelectJsonReceived, _cjp);
                 }
             }
             else
             {
                 Notified?.Invoke(CVRTableResult.SelectFailed, qrp.msg);
             }
         }
     }
     else if (r == CVResult.TableUpdateReceived)
     {
         if (o is ExecuteResultPt)
         {
             ExecuteResultPt erp = o as ExecuteResultPt;
             _ui = new UpdateItem
             {
                 Id      = erp.token,
                 Succeed = erp.success == 0,
                 Msg     = erp.msg
             };
             Notified?.Invoke(CVRTableResult.UpdateResultReceived, _ui);
         }
     }
 }
Exemple #3
0
 public CVRJsonParser(QueryResultPt qrp)
     : this(qrp.result)
 {
     Count = qrp.count;
     Token = qrp.token;
 }
        private void _ic_Notified(CVResult r, object o)
        {
            if (r == CVResult.TableQueryReceived)
            {
                if (o is QueryResultPt)
                {
                    QueryResultPt qrp = o as QueryResultPt;
                    if (qrp.token == _token)
                    {
                        if (qrp.success == 0)
                        {
                            TableXmlWrapper txw = new TableXmlWrapper(qrp);

                            _curNum    = txw.Count;
                            _curIndex  = 0;
                            _pageCount = txw.Count / _pageSize + (txw.Count % _pageSize == 0 ? 0 : 1);

                            foreach (XmlNode xn in txw.Nodes)
                            {
                                ResXmlNodeParser rxnp     = new ResXmlNodeParser(xn);
                                string           pathfile = rxnp.Pathfile.Remove(0, 1);
                                string           file     = pathfile.Replace(_dc.RemoteDirectory + @"/", "");

                                string source = @"ftp://" + _dc.Ip + @"/" + pathfile;
                                string target = Path.Combine(_dc.LocalDirectory, file).Replace("/", @"\");

                                DateTime tdt = File.Exists(target) ? File.GetLastWriteTime(target) : DateTime.MinValue;
                                if (!Kits.DateTimeEqual(rxnp.Lastwrite, tdt))
                                {
                                    if (UseMemory)
                                    {
                                        DownloadMemoryItem dmi = new DownloadMemoryItem
                                        {
                                            Id     = rxnp.Id,
                                            Source = source,
                                            Target = target,
                                            Crc    = rxnp.Crc,
                                            Tag    = rxnp.Name
                                        };
                                        _dc.Add(dmi);
                                    }
                                    else
                                    {
                                        DownloadDataItem ddi = new DownloadDataItem
                                        {
                                            Id     = rxnp.Id,
                                            Source = source,
                                            Target = target,
                                            Crc    = rxnp.Crc,
                                            Tag    = rxnp.Name
                                        };
                                        _dc.Add(ddi);
                                    }
                                }
                                else
                                {
                                    Notified?.Invoke(CVResDownloadResult.ExistedTarget, target);
                                    if (++_curIndex >= _curNum)
                                    {
                                        if (++_pageNo >= _pageCount)
                                        {
                                            Completed?.Invoke();
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            Notified?.Invoke(CVResDownloadResult.RequestResourceFailed, qrp.msg);
                        }
                    }
                }
            }
        }
Exemple #5
0
        public override void Do(byte[] body)
        {
            try
            {
                if (body != null)
                {
                    int len = body.Length;
                    int id  = ProtobufWrapper.GetPacketCmd(body);

                    if (id == (int)ProtoBuffType.S2CLogin)
                    {
                        LoginPt lp = ProtobufWrapper.ByteDeserialize <LoginPt>(body, len - 2);
                        if (lp.service == 1)
                        {
                            //add
                            Notify(CVResult.UserEdited, lp);
                            Log.AddEvent("UserAdded", lp.msg);
                        }
                        else if (lp.service == 2)
                        {
                            //edit
                            Notify(CVResult.UserEdited, lp);
                            Log.AddEvent("UserEdited", lp.msg);
                        }
                        else if (lp.service == 3)
                        {
                            //delete
                            Notify(CVResult.UserEdited, lp);
                            Log.AddEvent("UserDeleted", lp.msg);
                        }
                        else if (lp.service == 4)
                        {
                            //get
                            if (lp.success == 0)
                            {
                                _client.Id = lp.id;
                                Notify(CVResult.LogonSucceeded, lp);
                                Log.AddEvent("LogonSucceeded", lp.msg);
                            }
                            else
                            {
                                Notify(CVResult.LogonFailed, lp);
                                Log.AddEvent("LogonFailed", lp.msg);
                                _client.Shutdown();
                            }
                        }
                    }
                    else if (id == (int)ProtoBuffType.S2CResourceEditResult)
                    {
                        ResourcePt rpb = ProtobufWrapper.ByteDeserialize <ResourcePt>(body, len - 2);
                        Notify(CVResult.ResourceOperationResponded, rpb);

                        if (rpb.service == 1)
                        {
                            //add
                            Log.AddEvent("ResourceAdded", rpb.pathfile);
                        }
                        else if (rpb.service == 2)
                        {
                            //edit
                            Log.AddEvent("ResourceEdited", rpb.pathfile);
                        }
                        else if (rpb.service == 3)
                        {
                            //delete
                            Log.AddEvent("ResourceDeleted", rpb.pathfile);
                        }
                        else if (rpb.service == 4)
                        {
                            //get
                            Log.AddEvent("ResourceGot", rpb.objectid);
                        }
                    }
                    else if (id == (int)ProtoBuffType.S2CResourceQueryResult)
                    {
                        ResourceResultPt rpt = ProtobufWrapper.ByteDeserialize <ResourceResultPt>(body, len - 2);
                        Notify(CVResult.ResourceOperationResponded, rpt);

                        //Log.AddEvent("ResourceQueried", rpt.count.ToString());
                    }
                    else if (id == (int)ProtoBuffType.S2CLogonUser)
                    {
                        LogoutPt lp = ProtobufWrapper.ByteDeserialize <LogoutPt>(body, len - 2);
                        Notify(CVResult.OnlineUserChanged, lp);

                        Log.AddEvent("OnlineUserChanged", lp.id.ToString());
                    }
                    else if (id == (int)ProtoBuffType.S2CGetOnlineUserResult)
                    {
                        LogonUserListPt lulp = ProtobufWrapper.ByteDeserialize <LogonUserListPt>(body, len - 2);
                        Notify(CVResult.OnlineUsersNotified, lulp);

                        Log.AddEvent("OnlineUsersNotified", lulp.logonUsers.Count.ToString());
                    }
                    else if (id == (int)ProtoBuffType.S2CChatReceiveTextMsg)
                    {
                        ChatTextPt chatpt = ProtobufWrapper.ByteDeserialize <ChatTextPt>(body, len - 2);
                        Notify(CVResult.MessageReceived, chatpt);

                        Log.AddEvent("MessageReceived", chatpt.msg);
                    }
                    else if (id == (int)ProtoBuffType.S2CMessage)
                    {
                        MessagePt mp = ProtobufWrapper.ByteDeserialize <MessagePt>(body, len - 2);
                        if (mp.msgtype == "101001")
                        {
                            Notify(CVResult.ServerSessionTimeouted, mp);
                        }
                        else
                        {
                            Notify(CVResult.MessageNotified, mp);
                        }

                        Log.AddEvent("MessageNotified", mp.msg);
                    }
                    else if (id == (int)ProtoBuffType.S2CChatStatusReceived)
                    {
                        ChatTextStatePt o = ProtobufWrapper.ByteDeserialize <ChatTextStatePt>(body, len - 2);
                        Notify(CVResult.MessageStatusReceived, o);

                        Log.AddEvent("MessageStatusReceived", o.state);
                    }
                    else if (id == (int)ProtoBuffType.S2CTableQueryResult)
                    {
                        QueryResultPt o = ProtobufWrapper.ByteDeserialize <QueryResultPt>(body, len - 2);
                        Notify(CVResult.TableQueryReceived, o);

                        Log.AddEvent("TableQueryReceived", o.msg);
                    }
                    else if (id == (int)ProtoBuffType.S2CTableUpdateResult)
                    {
                        ExecuteResultPt o = ProtobufWrapper.ByteDeserialize <ExecuteResultPt>(body, len - 2);
                        if (o.token == "add_evt" || o.token == "add_log")
                        {
                            //日志和事件
                            if (o.success == 1)
                            {
                                //失败
                                if (o.token == "add_evt")
                                {
                                    //系统日志
                                    Notify(CVResult.AddEventFailed, o.msg);
                                }
                                else
                                {
                                    //用户日志
                                    Notify(CVResult.AddLogFailed, o.msg);
                                }
                            }
                        }
                        else
                        {
                            Notify(CVResult.TableUpdateReceived, o);
                            if (o.success == 0)
                            {
                                Log.AddEvent("TableUpdateReceived", o.token);
                            }
                            else
                            {
                                Log.AddEvent("TableUpdateReceived", o.msg);
                            }
                        }
                    }
                    else
                    {
                        //object o = ProtobufWrapper.ByteDeserialize<object>(body, len - 2);
                        //Notify(CVResult.CustomNotificationReceived, o);
                        Notify(CVResult.Unknown, id);
                    }
                }
            }
            catch (Exception ex)
            {
                _client.Notify(CVResult.ExceptionHappened, ex);
            }
        }