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