public TableXmlWrapper(QueryResultPt qrp) : base(qrp.result) { Token = qrp.token; Count = qrp.count; Message = qrp.msg; Success = qrp.success == 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); } } }
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); } } } } }
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); } }