refactoring
This commit is contained in:
parent
dcc1ad3e17
commit
5538178cab
@ -16,8 +16,8 @@ namespace DTLib
|
||||
|
||||
public void CompressArray(T[] sourceArray)
|
||||
{
|
||||
var listMem = new List<T>();
|
||||
var listDesc = new List<byte>();
|
||||
List<T> listMem = new List<T>();
|
||||
List<byte> listDesc = new List<byte>();
|
||||
T prevElement = sourceArray[0];
|
||||
listMem.Add(sourceArray[0]);
|
||||
listDesc.Add(1);
|
||||
@ -60,10 +60,7 @@ namespace DTLib
|
||||
{
|
||||
if (sum < index)
|
||||
sum += Description[i];
|
||||
else if(sum==index)
|
||||
output=Memory[i];
|
||||
else
|
||||
output=Memory[i-1];
|
||||
else output = sum == index ? Memory[i] : Memory[i - 1];
|
||||
}
|
||||
storageUsing.ReleaseMutex();
|
||||
return output;
|
||||
|
||||
@ -33,19 +33,10 @@ namespace DTLib.Dtsod
|
||||
// выдаёт Exception
|
||||
public new dynamic this[string key]
|
||||
{
|
||||
get
|
||||
{
|
||||
if(TryGetValue(key, out dynamic value))
|
||||
return value;
|
||||
else
|
||||
throw new Exception($"Dtsod[{key}] key not found");
|
||||
}
|
||||
get => TryGetValue(key, out dynamic value) ? value : throw new Exception($"Dtsod[{key}] key not found");
|
||||
set
|
||||
{
|
||||
if(TrySetValue(key, value))
|
||||
return;
|
||||
else
|
||||
throw new Exception($"Dtsod[{key}] key not found");
|
||||
if (!TrySetValue(key, value)) throw new Exception($"Dtsod[{key}] key not found");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -77,19 +77,10 @@ namespace DTLib.Dtsod
|
||||
// выдаёт Exception
|
||||
public new dynamic this[string key]
|
||||
{
|
||||
get
|
||||
{
|
||||
if(TryGetValue(key, out dynamic value))
|
||||
return value;
|
||||
else
|
||||
throw new Exception($"Dtsod[{key}] key not found");
|
||||
}
|
||||
get => TryGetValue(key, out dynamic value) ? value : throw new Exception($"Dtsod[{key}] key not found");
|
||||
set
|
||||
{
|
||||
if(TrySetValue(key, value))
|
||||
return;
|
||||
else
|
||||
throw new Exception($"Dtsod[{key}] key not found");
|
||||
if (!TrySetValue(key, value)) throw new Exception($"Dtsod[{key}] key not found");
|
||||
}
|
||||
}
|
||||
|
||||
@ -111,18 +102,12 @@ namespace DTLib.Dtsod
|
||||
{
|
||||
try
|
||||
{
|
||||
bool isList;
|
||||
if(value is IList)
|
||||
isList=true;
|
||||
else
|
||||
isList=false;
|
||||
bool isList = value is IList;
|
||||
base[key] = new(base[key].Type, value, isList);
|
||||
return true;
|
||||
}
|
||||
catch (KeyNotFoundException)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
{ return false; }
|
||||
}
|
||||
|
||||
DtsodV22 Parse(string text)
|
||||
|
||||
@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DTLib.Dtsod
|
||||
{
|
||||
|
||||
@ -1,12 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DTLib.Dtsod
|
||||
namespace DTLib.Dtsod
|
||||
{
|
||||
static public class DtsodV30
|
||||
public static class DtsodV30
|
||||
{
|
||||
/*
|
||||
public static DtsodV30 FromObject(object target)
|
||||
|
||||
@ -22,7 +22,7 @@ namespace DTLib.Filesystem
|
||||
public static void Copy(string source_dir, string new_dir, bool owerwrite = false)
|
||||
{
|
||||
Create(new_dir);
|
||||
var subdirs = new List<string>();
|
||||
List<string> subdirs = new List<string>();
|
||||
List<string> files = GetAllFiles(source_dir, ref subdirs);
|
||||
for (int i = 0; i < subdirs.Count; i++)
|
||||
{
|
||||
@ -40,7 +40,7 @@ namespace DTLib.Filesystem
|
||||
public static void Copy(string source_dir, string new_dir, out List<string> conflicts, bool owerwrite = false)
|
||||
{
|
||||
conflicts = new List<string>();
|
||||
var subdirs = new List<string>();
|
||||
List<string> subdirs = new List<string>();
|
||||
List<string> files = GetAllFiles(source_dir, ref subdirs);
|
||||
Create(new_dir);
|
||||
for (int i = 0; i < subdirs.Count; i++)
|
||||
@ -60,7 +60,7 @@ namespace DTLib.Filesystem
|
||||
// удаляет папку со всеми подпапками и файлами
|
||||
public static void Delete(string dir)
|
||||
{
|
||||
var subdirs = new List<string>();
|
||||
List<string> subdirs = new List<string>();
|
||||
List<string> files = GetAllFiles(dir, ref subdirs);
|
||||
for (int i = 0; i < files.Count; i++)
|
||||
File.Delete(files[i]);
|
||||
@ -82,7 +82,7 @@ namespace DTLib.Filesystem
|
||||
// выдает список всех файлов
|
||||
public static List<string> GetAllFiles(string dir)
|
||||
{
|
||||
var all_files = new List<string>();
|
||||
List<string> all_files = new List<string>();
|
||||
string[] cur_files = Directory.GetFiles(dir);
|
||||
for (int i = 0; i < cur_files.Length; i++)
|
||||
{
|
||||
@ -101,7 +101,7 @@ namespace DTLib.Filesystem
|
||||
// выдает список всех файлов и подпапок в папке
|
||||
public static List<string> GetAllFiles(string dir, ref List<string> all_subdirs)
|
||||
{
|
||||
var all_files = new List<string>();
|
||||
List<string> all_files = new List<string>();
|
||||
string[] cur_files = Directory.GetFiles(dir);
|
||||
for (int i = 0; i < cur_files.Length; i++)
|
||||
{
|
||||
@ -122,7 +122,7 @@ namespace DTLib.Filesystem
|
||||
|
||||
public static void GrantAccess(string fullPath)
|
||||
{
|
||||
var dirInfo = new System.IO.DirectoryInfo(fullPath);
|
||||
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(fullPath);
|
||||
System.Security.AccessControl.DirectorySecurity dirSecurity = dirInfo.GetAccessControl();
|
||||
dirSecurity.AddAccessRule(new System.Security.AccessControl.FileSystemAccessRule(
|
||||
new System.Security.Principal.SecurityIdentifier(
|
||||
|
||||
@ -62,12 +62,8 @@ namespace DTLib.Filesystem
|
||||
|
||||
public static void AppendAllText(string file, string content) => AppendAllBytes(file, content.ToBytes());
|
||||
|
||||
public static System.IO.FileStream OpenRead(string file)
|
||||
{
|
||||
if(!Exists(file))
|
||||
throw new Exception($"file not found: <{file}>");
|
||||
return System.IO.File.OpenRead(file);
|
||||
}
|
||||
public static System.IO.FileStream OpenRead(string file) =>
|
||||
Exists(file) ? System.IO.File.OpenRead(file) : throw new Exception($"file not found: <{file}>");
|
||||
public static System.IO.FileStream OpenWrite(string file)
|
||||
{
|
||||
File.Create(file, true);
|
||||
|
||||
@ -22,7 +22,7 @@ namespace DTLib.Filesystem
|
||||
lock (new object())
|
||||
{
|
||||
key += ": ";
|
||||
using var reader = new System.IO.StreamReader(configfile);
|
||||
using System.IO.StreamReader reader = new System.IO.StreamReader(configfile);
|
||||
while (!reader.EndOfStream)
|
||||
{
|
||||
string st = reader.ReadLine();
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
// включает init и record из c# 9.0
|
||||
@ -47,7 +46,7 @@ namespace DTLib
|
||||
// массив в лист
|
||||
public static List<T> ToList<T>(this T[] input)
|
||||
{
|
||||
var list = new List<T>();
|
||||
List<T> list = new List<T>();
|
||||
list.AddRange(input);
|
||||
return list;
|
||||
}
|
||||
@ -55,7 +54,7 @@ namespace DTLib
|
||||
// удаление нескольких элементов массива
|
||||
public static T[] RemoveRange<T>(this T[] input, int startIndex, int count)
|
||||
{
|
||||
var list = input.ToList();
|
||||
List<T> list = input.ToList();
|
||||
list.RemoveRange(startIndex, count);
|
||||
return list.ToArray();
|
||||
}
|
||||
@ -110,7 +109,7 @@ namespace DTLib
|
||||
// хеш в виде массива байт в строку (хеш изначально не в кодировке UTF8, так что метод выше не работает с ним)
|
||||
public static string HashToString(this byte[] hash)
|
||||
{
|
||||
var builder = new StringBuilder();
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for (int i = 0; i < hash.Length; i++)
|
||||
{
|
||||
builder.Append(hash[i].ToString("x2"));
|
||||
@ -165,7 +164,7 @@ namespace DTLib
|
||||
// делает что надо в отличии от String.Split(), который не убирает char c из начала
|
||||
public static List<string> SplitToList(this string s, char c)
|
||||
{
|
||||
var ar = s.ToCharArray();
|
||||
char[] ar = s.ToCharArray();
|
||||
StringBuilder b = new();
|
||||
List<string> o = new();
|
||||
if (ar[0] != c)
|
||||
@ -195,12 +194,7 @@ namespace DTLib
|
||||
return parts;
|
||||
}
|
||||
|
||||
public static T If<T>(this T input, bool condition, Func<T,T> if_true, Func<T,T> if_false)
|
||||
{
|
||||
if(condition)
|
||||
return if_true(input);
|
||||
else
|
||||
return if_false(input);
|
||||
}
|
||||
public static T If<T>(this T input, bool condition, Func<T, T> if_true, Func<T, T> if_false) =>
|
||||
condition ? if_true(input) : if_false(input);
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
using DTLib.Filesystem;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Security.Cryptography;
|
||||
using DTLib.Filesystem;
|
||||
|
||||
namespace DTLib
|
||||
{
|
||||
@ -20,7 +20,7 @@ namespace DTLib
|
||||
// хеш из двух массивов
|
||||
public byte[] Hash(byte[] input, byte[] salt)
|
||||
{
|
||||
var rez = new List<byte>();
|
||||
List<byte> rez = new List<byte>();
|
||||
rez.AddRange(input);
|
||||
rez.AddRange(salt);
|
||||
return sha256.ComputeHash(rez.ToArray());
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
using DTLib.Dtsod;
|
||||
using DTLib.Filesystem;
|
||||
using System.Net.Sockets;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using DTLib.Dtsod;
|
||||
using DTLib.Filesystem;
|
||||
using static DTLib.PublicLog;
|
||||
|
||||
namespace DTLib.Network
|
||||
@ -54,7 +54,7 @@ namespace DTLib.Network
|
||||
|
||||
public byte[] DownloadFileToMemory()
|
||||
{
|
||||
using var fileStream = new System.IO.MemoryStream();
|
||||
using System.IO.MemoryStream fileStream = new System.IO.MemoryStream();
|
||||
Download_SharedCode(fileStream, false);
|
||||
byte[] output = fileStream.GetBuffer();
|
||||
fileStream.Close();
|
||||
@ -144,9 +144,9 @@ namespace DTLib.Network
|
||||
if (!dirOnServer.EndsWith("\\"))
|
||||
dirOnServer += "\\";
|
||||
Debug("b", "downloading manifest <", "c", dirOnServer + "manifest.dtsod", "b", ">\n");
|
||||
var manifest = new Dtsod.DtsodV22(DownloadFileToMemory(dirOnServer+"manifest.dtsod").BytesToString());
|
||||
DtsodV22 manifest = new Dtsod.DtsodV22(DownloadFileToMemory(dirOnServer + "manifest.dtsod").BytesToString());
|
||||
Debug("g", $"found {manifest.Values.Count} files in manifest\n");
|
||||
var hasher = new Hasher();
|
||||
Hasher hasher = new Hasher();
|
||||
foreach (string fileOnServer in manifest.Keys)
|
||||
{
|
||||
string fileOnClient = dirOnClient + fileOnServer;
|
||||
|
||||
@ -16,7 +16,7 @@ namespace DTLib.Network
|
||||
// пингует айпи с помощью встроенной в винду проги, возвращает задержку
|
||||
public static string PingIP(string address)
|
||||
{
|
||||
var proc = new Process();
|
||||
Process proc = new Process();
|
||||
proc.StartInfo.FileName = "cmd.exe";
|
||||
proc.StartInfo.Arguments = "/c @echo off & chcp 65001 >nul & ping -n 5 " + address;
|
||||
proc.StartInfo.CreateNoWindow = true;
|
||||
|
||||
@ -42,7 +42,7 @@ namespace DTLib.Network
|
||||
throw new Exception($"SendPackage() error: package is too big ({data.Length} bytes)");
|
||||
if (data.Length == 0)
|
||||
throw new Exception($"SendPackage() error: package has zero size");
|
||||
var list = new List<byte>();
|
||||
List<byte> list = new List<byte>();
|
||||
byte[] packageSize = data.Length.ToBytes();
|
||||
if (packageSize.Length == 1)
|
||||
list.Add(0);
|
||||
|
||||
11
XXHash.cs
11
XXHash.cs
@ -136,14 +136,9 @@ namespace DTLib
|
||||
// <returns>The computed hash code.</returns>
|
||||
protected override byte[] HashFinal()
|
||||
{
|
||||
if(_TotalLength>=16)
|
||||
{
|
||||
_Hash32=RotateLeft32(_ACC32_1, 1)+RotateLeft32(_ACC32_2, 7)+RotateLeft32(_ACC32_3, 12)+RotateLeft32(_ACC32_4, 18);
|
||||
}
|
||||
else
|
||||
{
|
||||
_Hash32=_Seed32+PRIME32_5;
|
||||
}
|
||||
_Hash32 = _TotalLength >= 16
|
||||
? RotateLeft32(_ACC32_1, 1) + RotateLeft32(_ACC32_2, 7) + RotateLeft32(_ACC32_3, 12) + RotateLeft32(_ACC32_4, 18)
|
||||
: _Seed32 + PRIME32_5;
|
||||
_Hash32 += (uint)_TotalLength;
|
||||
while (_RemainingLength >= 4)
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user