public static int Main(string[] args) { GCSettings.LatencyMode = GCLatencyMode.SustainedLowLatency; try { IWebHost host = InitializationWorker.Run(args.Length == 0 ? null : args[0]).Result; Console.WriteLine("Initialization Finished"); Collect(true); WarmUpWorker.Run(); Collect(true); Collect(true); Collect(true); //Stats.Print(); UnsafeStringContainer.PrintUsage(); host.WaitForShutdown(); } catch (Exception e) { Console.WriteLine(e); return(-1); } Console.WriteLine("Application exited"); return(0); }
public ushort GetOrAdd(string value) { if (value == null) { return(0); } if (_string2Index.TryGetValue(value, out ushort result)) { return(result); } result = ++_currentIndex; _index2String[result] = value; Utf8String utf8String = UnsafeStringContainer.GetString(value, _quote); _index2Bytes[result] = utf8String; _utf82index.Add(utf8String, result); _string2Index.Add(value, result); _index2Accounts[result] = new HList <uint>(); return(result); }
private static unsafe bool ParseEmailValue(ref ParseContext pctx, AccountStub stub) { stub.Fields |= UpdatedFields.Email; pctx.Move(1); // skip quote var separatorIndex = pctx.IndexOfAny((byte)'"', (byte)'@'); if (pctx[separatorIndex] == '"') { return(false); } var p = pctx.CurrentPointer; pctx.Move(separatorIndex + 1); var quoteIndex = pctx.IndexOf((byte)'"'); var domainString = new Utf8String(pctx.CurrentPointer, quoteIndex); ushort domainIndex = StringIndexer.Domains.Find(domainString); var spanEmail = new SpanEmail(p, (byte)separatorIndex, domainIndex); if (!Database.IsUniqueEmail(spanEmail)) { return(false); } stub.email = new Email(UnsafeStringContainer.Clone(new ReadOnlySpan <byte>(p, separatorIndex)), domainIndex); pctx.Move(quoteIndex + 2); return(true); }
public override Email ReadJson(JsonReader reader, Type objectType, Email existingValue, bool hasExistingValue, JsonSerializer serializer) { var value = (string)reader.Value; var tokens = value.Split('@'); ushort domainIndex; lock (_latch) { domainIndex = StringIndexer.Domains.GetOrAdd(tokens[1]); } Utf8String email = UnsafeStringContainer.GetString(tokens[0], false); return(new Email(email, domainIndex)); }
public void FillAccount(Account account) { account.id = id; account.Email = email; account.fname = fname; account.sname = sname; account.phone = UnsafeStringContainer.GetString(phone, true); account.country = country; account.premium = premium; account.interests = interests; account.SexStatus = sexStatus == SexStatus.None ? GetSexStatus() : sexStatus; account.birth = birth; account.city = city; account.likes?.Clear(); account.ReplaceLikes(likes, false); account.joined = joined; }