예제 #1
0
        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);
            }
        }
예제 #2
0
    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);
    }
예제 #3
0
    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);
    }