messaging3: Introduce messaging_local_backend()
[samba.git] / source3 / include / messages.h
index 27b315642c6a9ca8cb7584b0ca496d5d11f5b931..bea3fd00370af54fe27f91b4d8c6b2f6e0c46dc5 100644 (file)
 
 #include "librpc/gen_ndr/server_id.h"
 
-#ifdef CLUSTER_SUPPORT
 #define MSG_BROADCAST_PID_STR  "0:0"
-#else
-#define MSG_BROADCAST_PID_STR  "0"
-#endif
 
 struct messaging_context;
 struct messaging_rec;
@@ -80,6 +76,9 @@ struct messaging_context {
        struct tevent_context *event_ctx;
        struct messaging_callback *callbacks;
 
+       struct tevent_req **new_waiters;
+       unsigned num_new_waiters;
+
        struct tevent_req **waiters;
        unsigned num_waiters;
 
@@ -88,21 +87,21 @@ struct messaging_context {
 };
 
 struct messaging_backend {
-       NTSTATUS (*send_fn)(struct messaging_context *msg_ctx,
+       NTSTATUS (*send_fn)(struct server_id src,
                            struct server_id pid, int msg_type,
-                           const DATA_BLOB *data,
+                           const struct iovec *iov, int iovlen,
                            struct messaging_backend *backend);
        void *private_data;
 };
 
-NTSTATUS messaging_tdb_init(struct messaging_context *msg_ctx,
+NTSTATUS messaging_dgm_init(struct messaging_context *msg_ctx,
                            TALLOC_CTX *mem_ctx,
                            struct messaging_backend **presult);
-
-bool messaging_tdb_parent_init(TALLOC_CTX *mem_ctx);
-
-void *messaging_tdb_event(TALLOC_CTX *mem_ctx, struct messaging_context *msg,
-                         struct tevent_context *ev);
+NTSTATUS messaging_dgm_cleanup(struct messaging_context *msg_ctx, pid_t pid);
+NTSTATUS messaging_dgm_wipe(struct messaging_context *msg_ctx);
+void *messaging_dgm_register_tevent_context(TALLOC_CTX *mem_ctx,
+                                           struct messaging_context *msg_ctx,
+                                           struct tevent_context *ev);
 
 NTSTATUS messaging_ctdbd_init(struct messaging_context *msg_ctx,
                              TALLOC_CTX *mem_ctx,
@@ -117,6 +116,8 @@ struct messaging_context *messaging_init(TALLOC_CTX *mem_ctx,
                                         struct tevent_context *ev);
 
 struct server_id messaging_server_id(const struct messaging_context *msg_ctx);
+struct messaging_backend *messaging_local_backend(
+       struct messaging_context *msg_ctx);
 
 /*
  * re-init after a fork
@@ -140,9 +141,20 @@ NTSTATUS messaging_send(struct messaging_context *msg_ctx,
 NTSTATUS messaging_send_buf(struct messaging_context *msg_ctx,
                            struct server_id server, uint32_t msg_type,
                            const uint8_t *buf, size_t len);
+NTSTATUS messaging_send_iov(struct messaging_context *msg_ctx,
+                           struct server_id server, uint32_t msg_type,
+                           const struct iovec *iov, int iovlen);
 void messaging_dispatch_rec(struct messaging_context *msg_ctx,
                            struct messaging_rec *rec);
 
+struct tevent_req *messaging_filtered_read_send(
+       TALLOC_CTX *mem_ctx, struct tevent_context *ev,
+       struct messaging_context *msg_ctx,
+       bool (*filter)(struct messaging_rec *rec, void *private_data),
+       void *private_data);
+int messaging_filtered_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
+                                struct messaging_rec **presult);
+
 struct tevent_req *messaging_read_send(TALLOC_CTX *mem_ctx,
                                       struct tevent_context *ev,
                                       struct messaging_context *msg,
@@ -150,6 +162,8 @@ struct tevent_req *messaging_read_send(TALLOC_CTX *mem_ctx,
 int messaging_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
                        struct messaging_rec **presult);
 
+bool messaging_parent_dgm_cleanup_init(struct messaging_context *msg);
+
 #include "librpc/gen_ndr/ndr_messaging.h"
 
 #endif