reactor packet I/O & duplicated packet filter & evicted session filter

This commit is contained in:
luwenpeng
2024-03-09 19:28:14 +08:00
parent ee35a26a9d
commit 512dfddd03
79 changed files with 1974 additions and 2093 deletions

View File

@@ -2,7 +2,6 @@
#include "id_generator.h"
#include "stellar.h"
#include "timestamp.h"
struct id_generator
{
@@ -49,11 +48,6 @@ int id_generator_init(uint8_t device_base, uint8_t device_offset)
return 0;
}
void id_generator_free()
{
memset(&global_id_generator, 0, sizeof(struct id_generator));
}
/*
* 高位 --- 低位
*
@@ -61,16 +55,14 @@ void id_generator_free()
* | 1bit | 12bit device_id | 8bit thread_id | 28bit timestamp in sec | 15bit sequence per thread |
* +------+------------------+----------------+------------------------+---------------------------+
*/
uint64_t id_generator_get()
uint64_t id_generator_alloc(uint64_t now_sec, uint64_t thread_index)
{
#define MAX_ID_PER_THREAD (32768)
#define MAX_ID_BASE_TIME (268435456L)
uint64_t global_id = 0;
uint64_t thread_index = stellar_get_current_thread_index();
uint64_t id_per_thread = (global_id_generator.thread_volatile[thread_index]++) % MAX_ID_PER_THREAD;
uint64_t id_base_time = timestamp_get_sec() % MAX_ID_BASE_TIME;
uint64_t id_base_time = now_sec % MAX_ID_BASE_TIME;
global_id = (global_id_generator.device_id << 51) |
(thread_index << 43) |
(id_base_time << 15) |