Ejemplo n.º 1
0
        public void TestLongConstructor()
        {
            var peonyId = new PeonyId(72811205743345696);

            Assert.Equal(0, peonyId.Reserved);
            Assert.Equal(8679772108, peonyId.Timestamp);
            Assert.Equal(0, peonyId.Region);
            Assert.Equal(0, peonyId.Machine);
            Assert.Equal(32, peonyId.Sequence);
            Assert.Equal(PeonyId.PeonyIdTimer.PeonyIdEpoch.AddMilliseconds(8679772108), peonyId.CreationTime);
            Assert.Equal("72811205743345696", peonyId.ToString());
        }
Ejemplo n.º 2
0
        public void TestParse()
        {
            var peonyId1 = PeonyId.Parse("72811205743345696");

            Assert.True(peonyId1.ToLong().Equals(72811205743345696));
            Assert.True(peonyId1.ToString() == "72811205743345696");

            var peonyId2 = PeonyId.Parse("-9150560831105924097");

            Assert.True(peonyId2.ToLong().Equals(-9150560831105924097));
            Assert.True(peonyId2.ToString() == "-9150560831105924097");
        }
Ejemplo n.º 3
0
        public void TestFullSizeCustomizedArgumentsConstructor()
        {
            var peonyId = new PeonyId(1, 8679772108, 5, 256, 1023);

            Assert.Equal(1, peonyId.Reserved);
            Assert.Equal(8679772108, peonyId.Timestamp);
            Assert.Equal(5, peonyId.Region);
            Assert.Equal(256, peonyId.Machine);
            Assert.Equal(1023, peonyId.Sequence);
            Assert.Equal(PeonyId.PeonyIdTimer.PeonyIdEpoch.AddMilliseconds(8679772108), peonyId.CreationTime);
            Assert.Equal("-9150560831105924097", peonyId.ToString());
        }
Ejemplo n.º 4
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(PeonyId.GenerateNewId(
                       reserved: reserved,
                       timestamp: (timestamp > 0 ? (long?)timestamp : null),
                       region: region,
                       machine: machine,
                       sequence: (sequence > 0 ? (int?)sequence : null)).ToLong().ToString());
        }
Ejemplo n.º 5
0
        private dynamic DecodeId(dynamic parameters)
        {
            if (!this.Request.Query.id.HasValue)
            {
                return(HttpStatusCode.BadRequest);
            }

            PeonyId id;

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

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