Code Duplication    Length = 16-18 lines in 2 locations

src/Snowflake.php 1 location

@@ 131-148 (lines=18) @@
128
    /**
129
     * Set start time (millisecond).
130
     */
131
    public function setStartTimeStamp(int $startTime)
132
    {
133
        $missTime = $this->getCurrentMicrotime() - $startTime;
134
135
        if ($missTime < 0) {
136
            throw new \Exception('The start time cannot be greater than the current time');
137
        }
138
139
        $maxTimeDiff = -1 ^ (-1 << self::MAX_TIMESTAMP_LENGTH);
140
141
        if ($missTime > $maxTimeDiff) {
142
            throw new \Exception(sprintf('The current microtime - starttime is not allowed to exceed -1 ^ (-1 << %d), You can reset the start time to fix this', self::MAX_TIMESTAMP_LENGTH));
143
        }
144
145
        $this->startTime = $startTime;
146
147
        return $this;
148
    }
149
150
    /**
151
     * Get start timestamp (millisecond), If not set default to 2019-08-08 08:08:08.

src/Sonyflake.php 1 location

@@ 78-93 (lines=16) @@
75
    /**
76
     * Set start time (millisecond).
77
     */
78
    public function setStartTimeStamp(int $startTime)
79
    {
80
        $elapsedTime = floor(($this->getCurrentMicrotime() - $startTime) / 10) | 0;
81
        if ($elapsedTime < 0) {
82
            throw new \Exception('The start time cannot be greater than the current time');
83
        }
84
85
        $maxTimeDiff = -1 ^ (-1 << self::MAX_TIMESTAMP_LENGTH);
86
        if ($elapsedTime > $maxTimeDiff) {
87
            throw new \Exception('Exceeding the maximum life cycle of the algorithm');
88
        }
89
90
        $this->startTime = $startTime;
91
92
        return $this;
93
    }
94
95
    /**
96
     * Parse snowflake id.