public void Register(TType packetId, Func <TPacket> createPacket) { lock (_addLock) { if (Packets.ContainsKey(packetId)) { throw new DuplicatePacketIdException <TType>(packetId); } Packets.Add(packetId, createPacket); IdMap.Add(createPacket().GetType(), packetId); } }
public async Task <IdMap <Guid> > ReadApisAsync() { var result = new IdMap <Guid>(); var rows = await _connection.QueryAsync <(int Id, string GuidText)>(@" SELECT ApiId, Guid FROM Apis "); foreach (var(id, guidText) in rows) { var guid = Guid.Parse(guidText); result.Add(id, guid); } return(result); }
public async Task <IdMap <PackageIdentity> > ReadPackagesAsync() { var result = new IdMap <PackageIdentity>(); var rows = await _connection.QueryAsync <(int Id, string Name, string Version)>(@" SELECT PackageId, Name, Version FROM Packages "); foreach (var(id, name, versionText) in rows) { var version = NuGetVersion.Parse(versionText); var identity = new PackageIdentity(name, version); result.Add(id, identity); } return(result); }