be392e47ce4b534d37f614e6729848b44e828209
[IRC.git] / Robust / src / Runtime / DSTM / interface / sockpool.h
1 #ifndef _SOCKPOOL_H_
2 #define _SOCKPOOL_H_
3
4 #include "dstm.h"
5 #include "ip.h"
6
7 int test_and_set(volatile unsigned int *addr);
8 void UnLock(volatile unsigned int *addr);
9
10 typedef struct socknode {
11     int sd;
12     unsigned int mid;
13     struct socknode *next;
14 } socknode_t;
15
16 typedef struct sockPoolHashTable {
17     socknode_t **table;
18     socknode_t *inuse;
19     unsigned int size;
20     volatile unsigned int mylock;
21 } sockPoolHashTable_t;
22
23 sockPoolHashTable_t *createSockPool(sockPoolHashTable_t *, unsigned int);
24 int getSock(sockPoolHashTable_t *, unsigned int);
25 int getSock2(sockPoolHashTable_t *, unsigned int);
26 int getSockWithLock(sockPoolHashTable_t *, unsigned int);
27 void freeSock(sockPoolHashTable_t *, unsigned int, int);
28 void freeSockWithLock(sockPoolHashTable_t *, unsigned int, int);
29 void insToList(sockPoolHashTable_t *, socknode_t *);
30 void insToListWithLock(sockPoolHashTable_t *, socknode_t *);
31 int createNewSocket(unsigned int);
32
33 #if 0
34 /************************************************
35  * Array Implementation data structures 
36  ***********************************************/
37 #define MAX_CONN_PER_MACHINE    10
38 typedef struct sock_pool {
39     unsigned int mid;
40     int *sd;
41     char *inuse;
42 } sock_pool_t;
43
44 sock_pool_t *initSockPool(unsigned int *, int);
45 int getSock(sock_pool_t *, unsigned int);
46 int freeSock(sock_pool_t *, int);
47 #endif
48
49 #endif