File: stx.h

package info (click to toggle)
st 1.9-3.4
  • links: PTS
  • area: main
  • in suites: trixie
  • size: 812 kB
  • sloc: ansic: 5,585; makefile: 379; asm: 362; sh: 27
file content (91 lines) | stat: -rw-r--r-- 2,634 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#ifndef _STX_H_
#define _STX_H_

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>
#include <netdb.h>
#include <errno.h>
#include "st.h"


#ifdef __cplusplus
extern "C" {
#endif


/*****************************************
 * Basic types definitions
 */

typedef struct _stx_centry stx_cache_entry_t;
typedef struct _stx_cache  stx_cache_t;

/* This is public type */
typedef struct _stx_cache_info {
  size_t max_size;
  size_t max_weight;
  size_t hash_size;
  size_t cur_size;
  size_t cur_weight;
  unsigned long hits;
  unsigned long lookups;
  unsigned long inserts;
  unsigned long deletes;
} stx_cache_info_t;


/*****************************************
 * Cache and cache entry methods
 */

stx_cache_t *stx_cache_create(size_t max_size, size_t max_weight,
			      size_t hash_size,
			      unsigned long (*key_hash_fn)(const void *key),
			      long (*key_cmp_fn)(const void *key1,
						 const void *key2),
			      void (*cleanup_fn)(void *key, void *data));
void stx_cache_empty(stx_cache_t *cache);
void stx_cache_traverse(stx_cache_t *cache,
			void (*callback)(void *key, void *data));
void stx_cache_traverse_lru(stx_cache_t *, void (*)(void *, void *),
			    unsigned int);
void stx_cache_traverse_mru(stx_cache_t *, void (*)(void *, void *),
			    unsigned int);
void stx_cache_getinfo(stx_cache_t *cache, stx_cache_info_t *info);
size_t stx_cache_getsize(stx_cache_t *cache);
size_t stx_cache_getweight(stx_cache_t *cache);


stx_cache_entry_t *stx_cache_entry_create(void *key, void *data,
					  size_t weight);
void stx_cache_entry_delete(stx_cache_t *cache, stx_cache_entry_t *entry);
stx_cache_entry_t *stx_cache_entry_lookup(stx_cache_t *cache, const void *key);
void stx_cache_entry_release(stx_cache_t *, stx_cache_entry_t *);
int stx_cache_entry_insert(stx_cache_t *cache, stx_cache_entry_t *entry);
stx_cache_entry_t *stx_cache_entry_getlru(stx_cache_t *cache);
int stx_cache_entry_sizeof(void);
void *stx_cache_entry_getdata(stx_cache_entry_t *entry);
void *stx_cache_entry_getkey(stx_cache_entry_t *entry);
size_t stx_cache_entry_getweight(stx_cache_entry_t *entry);


int stx_dns_cache_init(size_t max_size, size_t max_bytes, size_t hash_size);
void stx_dns_cache_getinfo(stx_cache_info_t *info);
int stx_dns_getaddrlist(const char *hostname, struct in_addr *addrs,
			int *num_addrs, st_utime_t timeout);
int stx_dns_getaddr(const char *hostname, struct in_addr *addr,
		    st_utime_t timeout);

#ifdef __cplusplus
}
#endif

#endif /* !_STX_H_ */