3 * Author: Mingqiang Zhuang
5 * Created on February 10, 2009
7 * (c) Copyright 2009, Schooner Information Technology, Inc.
8 * http://www.schoonerinfotech.com/
14 #include <sys/types.h>
16 #if !defined(__cplusplus)
25 #define UNIT_ITEMS_COUNT 1024 /* each window unit has 1024 items */
26 #define KEY_PREFIX_SIZE (sizeof(uint64_t)) /* key prefix length: 8 bytes */
27 #define INVALID_OFFSET (-1) /* invalid offset in the character table */
28 #define FIXED_EXPIRE_TIME 60 /* default expire time is 60s */
29 #define EXPIRE_TIME_ERROR 5 /* default expire time error is 5s */
31 /* information of a task item(object) */
32 typedef struct task_item
34 uint64_t key_prefix
; /* prefix of the key, 8 bytes, binary */
35 int key_size
; /* key size */
36 int key_suffix_offset
; /* suffix offset in the global character table */
38 int value_size
; /* data size */
39 int value_offset
; /* data offset in the global character table */
41 time_t client_time
; /* the current client time */
42 int exp_time
; /* expire time */
45 /* task item for multi-get */
46 typedef struct mlget_task_item
48 ms_task_item_t
*item
; /* task item */
49 bool verify
; /* whether verify data or not */
50 bool finish_verify
; /* whether finish data verify or not */
51 bool get_miss
; /* whether get miss or not */
52 } ms_mlget_task_item_t
;
54 /* information of multi-get task */
55 typedef struct mlget_task
57 ms_mlget_task_item_t
*mlget_item
; /* multi-get task array */
58 int mlget_num
; /* how many tasks in mlget_task array */
59 int value_index
; /* the nth value received by the connect, for multi-get */
62 /* structure used to store the state of the running task */
65 int cmd
; /* command name */
66 bool verify
; /* whether verify data or not */
67 bool finish_verify
; /* whether finish data verify or not */
68 bool get_miss
; /* whether get miss or not */
69 ms_task_item_t
*item
; /* task item */
71 /* counter for command distribution adjustment */
72 uint64_t get_opt
; /* number of total get operations */
73 uint64_t set_opt
; /* number of total set operations, no including warmup set count */
74 int cycle_undo_get
; /* number of undo get in an adjustment cycle */
75 int cycle_undo_set
; /* number of undo set in an adjustment cycle */
76 uint64_t verified_get
; /* number of total verified get operations */
77 uint64_t overwrite_set
; /* number of total overwrite set operations */
82 /* the state machine call the function to execute task.*/
83 int ms_exec_task(struct conn
*c
);
86 /* calculate the difference value of two time points */
87 int64_t ms_time_diff(struct timeval
*start_time
, struct timeval
*end_time
);
94 #endif /* end of MS_TASK_H */