public async Task <bool> CreateDatabaseAsync ( string database, string description, bool readerAccess = true ) { if (!CheckConnection()) { return(false); } var query = new Query(this, CommandCode.CreateDatabase); query.AddAnsi(database).NewLine(); query.AddAnsi(description).NewLine(); query.Add(readerAccess ? 1 : 0).NewLine(); var response = await ExecuteAsync(query); if (ReferenceEquals(response, null)) { return(false); } if (!response.CheckReturnCode()) { return(false); } return(true); } // method CreateDatabaseAsync
public async Task <string?> ReadTextFileAsync ( string?specification ) { if (!CheckConnection()) { return(null); } if (string.IsNullOrEmpty(specification)) { return(null); } var query = new Query(this, CommandCode.ReadDocument); query.AddAnsi(specification); var response = await ExecuteAsync(query); if (ReferenceEquals(response, null)) { return(null); } var result = IrbisText.IrbisToWindows(response.ReadAnsi()); return(result); } // method ReadTextFileAsync
public async Task <Record?> ReadRecordAsync ( int mfn ) { if (!CheckConnection()) { return(null); } var query = new Query(this, CommandCode.ReadRecord); query.AddAnsi(Database); query.Add(mfn); var response = await ExecuteAsync(query); if (ReferenceEquals(response, null)) { return(null); } if (!response.CheckReturnCode(_goodCodesForReadRecord)) { return(null); } var result = new Record { Database = Database }; result.Decode(response); return(result); } // method ReadRecordAsync
public async Task <int> GetMaxMfnAsync ( string?database = default ) { if (!CheckConnection()) { return(0); } database ??= Database; var query = new Query(this, CommandCode.GetMaxMfn); query.AddAnsi(database); var response = await ExecuteAsync(query); if (ReferenceEquals(response, null)) { return(0); } if (!response.CheckReturnCode()) { return(0); } return(response.ReturnCode); } // method GetMaxMfnAsync
public async Task <bool> DeleteDatabaseAsync ( string?database = default ) { if (!CheckConnection()) { return(false); } database ??= Database; var query = new Query(this, CommandCode.DeleteDatabase); query.AddAnsi(database).NewLine(); var response = await ExecuteAsync(query); if (ReferenceEquals(response, null)) { return(false); } if (!response.CheckReturnCode()) { return(false); } return(true); } // method DeleteDatabaseAsync
public async Task <bool> ConnectAsync() { if (Connected) { return(true); } AGAIN : QueryId = 1; ClientId = new Random().Next(100000, 999999); var query = new Query(this, CommandCode.RegisterClient); query.AddAnsi(Username); query.AddAnsi(Password); var response = await ExecuteAsync(query); if (ReferenceEquals(response, null)) { return(false); } if (response.GetReturnCode() == -3337) { goto AGAIN; } if (response.ReturnCode < 0) { return(false); } Connected = true; ServerVersion = response.ServerVersion; Interval = response.ReadInteger(); // TODO Read INI-file return(true); } // method ConnectAsync
public async Task <string?> FormatRecordAsync ( string format, int mfn ) { if (!CheckConnection()) { return(null); } var query = new Query(this, CommandCode.FormatRecord); query.AddAnsi(Database); var prepared = IrbisFormat.PrepareFormat(format); query.AddAnsi(prepared); query.Add(1); query.Add(mfn); var response = await ExecuteAsync(query); if (ReferenceEquals(response, null)) { return(null); } response.CheckReturnCode(); string result = response.ReadRemainingUtfText(); if (!string.IsNullOrEmpty(result)) { result = result.TrimEnd(); } return(result); } // method FormatRecordAsync
public async Task <string[]> ListFilesAsync ( string specification ) { if (!CheckConnection() || string.IsNullOrEmpty(specification)) { return(Array.Empty <string>()); } var query = new Query(this, CommandCode.ListFiles); query.AddAnsi(specification); var response = await ExecuteAsync(query); if (ReferenceEquals(response, null)) { return(Array.Empty <string>()); } var lines = response.ReadRemainingAnsiLines(); var result = new LocalList <string>(); foreach (var line in lines) { var files = IrbisText.SplitIrbisToLines(line); foreach (var file1 in files) { if (!string.IsNullOrEmpty(file1)) { foreach (var file2 in file1.Split(IrbisText.WindowsDelimiter)) { if (!string.IsNullOrEmpty(file2)) { result.Add(file2); } } } } } return(result.ToArray()); } // method ListFilesAsync
public async Task <bool> DisconnectAsync() { if (Connected) { var query = new Query(this, CommandCode.UnregisterClient); query.AddAnsi(Username); try { await ExecuteAsync(query); } catch (Exception exception) { Debug.WriteLine(exception.Message); } Connected = false; } return(true); } // method DisconnectAsync
public async Task <Response?> ExecuteAsync ( string command, params object[] args ) { if (!CheckConnection()) { return(null); } var query = new Query(this, command); foreach (var arg in args) { query.AddAnsi(arg?.ToString()); } var result = await ExecuteAsync(query); return(result); } // method ExecuteAsync