1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #ifndef SP_UID_H
- #define SP_UID_H
- #pragma once
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "y2k_time.h"
- typedef u__int64_t sp_uid_t;
- typedef struct sp_uid_generator_t sp_uid_generator_t;
- // uid_t is conflict with defined type in sys/types.h [3/19/2020 12:10 Gifur]
- struct _sp_uid_t {
- union {
- u__int64_t id;
- struct {
- unsigned short app_id;
- unsigned short dsn;
- unsigned int tick;
- };
- };
- };
- sp_uid_generator_t *sp_uid_generator_create(unsigned short app_id, int mt);
- void sp_uid_generator_destroy(sp_uid_generator_t *uid);
- sp_uid_t sp_uid_generator_new_id(sp_uid_generator_t *uid);
- sp_uid_t sp_uid_make(unsigned short app_id);
- sp_uid_t sp_uid_update(sp_uid_t t);
- static __inline unsigned int sp_uid_get_tick_part(sp_uid_t t)
- {
- struct _sp_uid_t r;
- r.id = t;
- return r.tick;
- }
- static __inline sp_uid_t sp_uid_change_app_id(sp_uid_t t, unsigned short app_id)
- {
- struct _sp_uid_t r;
- r.id = t;
- r.app_id = app_id;
- return r.id;
- }
- #ifdef __cplusplus
- } // extern "C" {
- #endif
- #endif // SP_UID_H
|