示例#1
0
        public void TestLongConstructor()
        {
            var catkinId = new CatkinId(36671638107855309);

            Assert.Equal(0, catkinId.Reserved);
            Assert.Equal(8743199851, catkinId.Timestamp);
            Assert.Equal(0, catkinId.Region);
            Assert.Equal(0, catkinId.Machine);
            Assert.Equal(6605, catkinId.Sequence);
            Assert.Equal(CatkinId.CatkinIdTimer.CatkinIdEpoch.AddMilliseconds(8743199851), catkinId.CreationTime);
            Assert.Equal("36671638107855309", catkinId.ToString());
        }
示例#2
0
        public void TestParse()
        {
            var catkinId1 = CatkinId.Parse("36671638107855309");

            Assert.True(catkinId1.ToLong().Equals(36671638107855309));
            Assert.True(catkinId1.ToString() == "36671638107855309");

            var catkinId2 = CatkinId.Parse("-9186966433981537281");

            Assert.True(catkinId2.ToLong().Equals(-9186966433981537281));
            Assert.True(catkinId2.ToString() == "-9186966433981537281");
        }
示例#3
0
        public void TestFullSizeCustomizedArgumentsConstructor()
        {
            var catkinId = new CatkinId(1, 8679772108, 5, 31, 1023);

            Assert.Equal(1, catkinId.Reserved);
            Assert.Equal(8679772108, catkinId.Timestamp);
            Assert.Equal(5, catkinId.Region);
            Assert.Equal(31, catkinId.Machine);
            Assert.Equal(1023, catkinId.Sequence);
            Assert.Equal(CatkinId.CatkinIdTimer.CatkinIdEpoch.AddMilliseconds(8679772108), catkinId.CreationTime);
            Assert.Equal("-9186966433981537281", catkinId.ToString());
        }
示例#4
0
        public void TestFullSizeDefaultArgumentsConstructor()
        {
            var catkinId = new CatkinId(0, 219902320000, 5, 31, 1023);

            Assert.Equal(0, catkinId.Reserved);
            Assert.Equal(219902320000, catkinId.Timestamp);
            Assert.Equal(5, catkinId.Region);
            Assert.Equal(31, catkinId.Machine);
            Assert.Equal(1023, catkinId.Sequence);
            Assert.Equal(CatkinId.CatkinIdTimer.CatkinIdEpoch.AddMilliseconds(219902320000), catkinId.CreationTime);
            Assert.Equal("922337180386845695", catkinId.ToString());
        }
示例#5
0
        private dynamic GenerateId(dynamic parameters)
        {
            byte   reserved  = 0;
            long   timestamp = -1;
            byte   region    = 0;
            ushort machine   = 0;
            int    sequence  = -1;

            if (this.Request.Query.reserved.HasValue)
            {
                if (!byte.TryParse(this.Request.Query.reserved.Value.ToString(), out reserved))
                {
                    return(HttpStatusCode.BadRequest);
                }
            }
            if (this.Request.Query.timestamp.HasValue)
            {
                if (!long.TryParse(this.Request.Query.timestamp.Value.ToString(), out timestamp) ||
                    timestamp < 0)
                {
                    return(HttpStatusCode.BadRequest);
                }
            }
            if (this.Request.Query.region.HasValue)
            {
                if (!byte.TryParse(this.Request.Query.region.Value.ToString(), out region))
                {
                    return(HttpStatusCode.BadRequest);
                }
            }
            if (this.Request.Query.machine.HasValue)
            {
                if (!ushort.TryParse(this.Request.Query.machine.Value.ToString(), out machine))
                {
                    return(HttpStatusCode.BadRequest);
                }
            }
            if (this.Request.Query.sequence.HasValue)
            {
                if (!int.TryParse(this.Request.Query.sequence.Value.ToString(), out sequence) ||
                    sequence < 0)
                {
                    return(HttpStatusCode.BadRequest);
                }
            }

            return(CatkinId.GenerateNewId(
                       reserved: reserved,
                       timestamp: (timestamp > 0 ? (long?)timestamp : null),
                       region: region,
                       machine: machine,
                       sequence: (sequence > 0 ? (int?)sequence : null)).ToLong().ToString());
        }
示例#6
0
        private dynamic DecodeId(dynamic parameters)
        {
            if (!this.Request.Query.id.HasValue)
            {
                return(HttpStatusCode.BadRequest);
            }

            CatkinId id;

            if (!CatkinId.TryParse(this.Request.Query.id.ToString(), out id))
            {
                return(HttpStatusCode.BadRequest);
            }

            return(this.Response.AsJson(id));
        }