octopus: remove include to flounder file in public include
[barrelfish] / include / octopus_server / service.h
1 /**
2  * \file
3  * \brief octopus service handler header file.
4  */
5
6 /*
7  * Copyright (c) 2011, 2012, ETH Zurich.
8  * All rights reserved.
9  *
10  * This file is distributed under the terms in the attached LICENSE file.
11  * If you do not find this file, copies can be found by writing to:
12  * ETH Zurich D-INFK, CAB F.78, Universitaetstr. 6, CH-8092 Zurich,
13  * Attn: Systems Group.
14  */
15
16 #ifndef OCTOPUS_SERVICE_H_
17 #define OCTOPUS_SERVICE_H_
18
19 #include <barrelfish/barrelfish.h>
20 #include <octopus/definitions.h>
21
22 struct oct_reply_state;
23
24 struct skb_writer {
25     size_t length;
26     char buffer[MAX_QUERY_LENGTH]; // TODO can be bigger than max query length...
27 };
28
29 struct oct_query_state {
30     struct skb_writer std_out;
31     struct skb_writer std_err;
32     int exec_res;
33 };
34
35 typedef void(*oct_reply_handler_fn)(struct octopus_binding*, struct oct_reply_state*);
36
37 struct oct_reply_state {
38     struct octopus_binding* binding;
39     oct_reply_handler_fn reply;
40
41     struct oct_query_state query_state;
42     bool return_record;
43     errval_t error;
44
45     // Pubsub / Trigger state
46     uint64_t client_handler;
47     uint64_t client_state;
48     octopus_mode_t mode;
49     octopus_trigger_id_t server_id;
50
51     // For capability storage
52     struct capref cap;
53     char* retkey;
54
55     struct oct_reply_state *next;
56 };
57
58 errval_t new_oct_reply_state(struct oct_reply_state**, oct_reply_handler_fn);
59
60 void get_names_handler(struct octopus_binding*, const char*, octopus_trigger_t);
61 void get_handler(struct octopus_binding*, const char*, octopus_trigger_t);
62 void set_handler(struct octopus_binding*, const char*, uint64_t, octopus_trigger_t, bool);
63 void get_with_idcap_handler(struct octopus_binding*, struct capref,
64                             octopus_trigger_t);
65 void set_with_idcap_handler(struct octopus_binding*, struct capref, const char*,
66                             uint64_t, octopus_trigger_t, bool);
67 void del_handler(struct octopus_binding*, const char*, octopus_trigger_t);
68 void exists_handler(struct octopus_binding*, const char*, octopus_trigger_t);
69 void wait_for_handler(struct octopus_binding*, const char*);
70 void remove_trigger_handler(struct octopus_binding*, octopus_trigger_id_t);
71
72 void subscribe_handler(struct octopus_binding*, const char*, uint64_t, uint64_t);
73 void publish_handler(struct octopus_binding*, const char*);
74 void unsubscribe_handler(struct octopus_binding*, uint64_t);
75
76 void get_identifier(struct octopus_binding*);
77 void identify_binding(struct octopus_binding*, uint64_t, octopus_binding_type_t);
78
79 // Capability Storage
80 void get_cap_handler(struct octopus_binding*, const char*);
81 void put_cap_handler(struct octopus_binding*, const char*, struct capref);
82 void sput_cap_handler(struct octopus_binding*, const char*, struct capref);
83 void remove_cap_handler(struct octopus_binding*, const char*);
84
85 #endif /* OCTOPUS_SERVICE_H_ */