/// <summary> /// Execute the command. /// </summary> public override ServerResponse Execute ( ClientQuery clientQuery ) { Sure.NotNull(clientQuery, nameof(clientQuery)); ServerResponse result = base.Execute(clientQuery); result.GetReturnCode(); if (result.ReturnCode == 0) { int expected = result.RequireInt32(); FoundCount = expected; List <FoundItem> foundList = FoundItem .ParseServerResponse(result, expected) .ThrowIfNull("Found"); Found = foundList; _FetchRemaining(result, expected); if (!_subCommand && FirstRecord == 1 && NumberOfRecords == 0) { Debug.Assert ( foundList.Count == expected, "Found.Count != expected in total" ); } } return(result); }
public static MarcRecord ParseResponseForReadRecord ( [NotNull] ServerResponse response, [NotNull] MarcRecord record ) { Sure.NotNull(response, "response"); Sure.NotNull(record, "record"); try { record.Fields.BeginUpdate(); ParseMfnStatusVersion ( response.RequireUtfString(), response.RequireUtfString(), record ); string line; while (true) { line = response.GetUtfString(); if (string.IsNullOrEmpty(line)) { break; } if (line == "#") { break; } RecordField field = ParseLine(line); if (field.Tag > 0) { record.Fields.Add(field); } } if (line == "#") { int returnCode = response.RequireInt32(); if (returnCode >= 0) { line = response.RequireUtfString(); line = IrbisText.IrbisToWindows(line); record.Description = line; } } } finally { record.Fields.EndUpdate(); record.Modified = false; } return(record); }
public static ServerStat Parse ( [NotNull] ServerResponse response ) { ServerStat result = new ServerStat { TotalCommandCount = response.RequireInt32(), ClientCount = response.RequireInt32(), Unknown = response.RequireInt32() }; List <ClientInfo> clients = new List <ClientInfo>(); while (true) { string number = response.GetAnsiString(); string ipAddress = response.GetAnsiString(); if (string.IsNullOrEmpty(number) || string.IsNullOrEmpty(ipAddress)) { break; } ClientInfo client = new ClientInfo { Number = number, IPAddress = ipAddress, Port = response.RequireAnsiString(), Name = response.RequireAnsiString(), ID = response.RequireAnsiString(), Workstation = response.RequireAnsiString(), Registered = response.RequireAnsiString(), Acknowledged = response.RequireAnsiString(), LastCommand = response.RequireAnsiString(), CommandNumber = response.RequireAnsiString() }; clients.Add(client); } result.RunningClients = clients.ToArray(); return(result); }