6 #define READ_MULT_REQUEST 2
8 #define MOVE_MULT_REQUEST 4
9 #define TRANS_REQUEST 5
11 #define TRANS_COMMIT 7
14 #define OBJECT_FOUND 8
15 #define OBJECT_NOT_FOUND 9
16 #define OBJECTS_FOUND 10
17 #define OBJECTS_NOT_FOUND 11
18 #define TRANS_AGREE 12
19 #define TRANS_DISAGREE 13
20 #define TRANS_SUCESSFUL 14
27 #define DEFAULT_OBJ_STORE_SIZE 1048510 //1MB
28 //bit designations for status field of objheader
32 typedef struct objheader {
35 unsigned short version;
36 unsigned short rcount;
40 typedef struct objstr {
41 unsigned int size; //this many bytes are allocated after this header
46 typedef struct transrecord {
48 chashtable_t *lookupTable;
51 /* Initialize main object store and lookup tables, start server thread. */
54 /* Prototypes for object header */
55 unsigned int getNewOID(void);
56 unsigned int objSize(objheader_t *object);
57 /* end object header */
59 /* Prototypes for object store */
60 objstr_t *objstrCreate(unsigned int size); //size in bytes
61 void objstrDelete(objstr_t *store); //traverse and free entire list
62 void *objstrAlloc(objstr_t *store, unsigned int size); //size in bytes
63 /* end object store */
65 /* Prototypes for server portion */
67 void *dstmAccept(void *);
68 /* end server portion */
70 /* Prototypes for transactions */
71 transrecord_t *transStart();
72 objheader_t *transRead(transrecord_t *record, unsigned int oid);
73 objheader_t *transCreateObj(transrecord_t *record, unsigned short type); //returns oid
74 int transCommit(transrecord_t *record); //return 0 if successful
75 /* end transactions */
77 void *getRemoteObj(transrecord_t *, unsigned int, unsigned int);