Changeset 988 for vendor/current/source3/include/messages.h
- Timestamp:
- Nov 24, 2016, 1:14:11 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vendor/current/source3/include/messages.h
r740 r988 4 4 Copyright (C) Andrew Tridgell 2000 5 5 Copyright (C) 2001, 2002 by Martin Pool 6 6 7 7 This program is free software; you can redistribute it and/or modify 8 8 it under the terms of the GNU General Public License as published by 9 9 the Free Software Foundation; either version 3 of the License, or 10 10 (at your option) any later version. 11 11 12 12 This program is distributed in the hope that it will be useful, 13 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 15 GNU General Public License for more details. 16 16 17 17 You should have received a copy of the GNU General Public License 18 18 along with this program. If not, see <http://www.gnu.org/licenses/>. … … 43 43 #define FLAG_MSG_SMBD 0x0002 44 44 #define FLAG_MSG_NMBD 0x0004 45 #define FLAG_MSG_ PRINT_NOTIFY0x000845 #define FLAG_MSG_WINBIND 0x0008 46 46 #define FLAG_MSG_PRINT_GENERAL 0x0010 47 47 /* dbwrap messages 4001-4999 */ 48 48 #define FLAG_MSG_DBWRAP 0x0020 49 50 51 /*52 * Virtual Node Numbers are identifying a node within a cluster. Ctdbd sets53 * this, we retrieve our vnn from it.54 */55 56 #define NONCLUSTER_VNN (0xFFFFFFFF)57 49 58 50 /* … … 68 60 69 61 #include "librpc/gen_ndr/server_id.h" 62 #include "lib/util/data_blob.h" 63 #include "system/network.h" 70 64 71 #ifdef CLUSTER_SUPPORT72 65 #define MSG_BROADCAST_PID_STR "0:0" 73 #else74 #define MSG_BROADCAST_PID_STR "0"75 #endif76 66 77 67 struct messaging_context; 78 68 struct messaging_rec; 79 69 80 /*81 * struct messaging_context belongs to messages.c, but because we still have82 * messaging_dispatch, we need it here. Once we get rid of signals for83 * notifying processes, this will go.84 */85 86 struct messaging_context {87 struct server_id id;88 struct event_context *event_ctx;89 struct messaging_callback *callbacks;90 91 struct messaging_backend *local;92 struct messaging_backend *remote;93 };94 95 70 struct messaging_backend { 96 NTSTATUS (*send_fn)(struct messaging_context *msg_ctx, 97 struct server_id pid, int msg_type, 98 const DATA_BLOB *data, 99 struct messaging_backend *backend); 71 int (*send_fn)(struct server_id src, 72 struct server_id pid, int msg_type, 73 const struct iovec *iov, int iovlen, 74 const int *fds, size_t num_fds, 75 struct messaging_backend *backend); 100 76 void *private_data; 101 77 }; 102 78 103 NTSTATUS messaging_tdb_init(struct messaging_context *msg_ctx, 104 TALLOC_CTX *mem_ctx, 105 struct messaging_backend **presult); 106 107 bool messaging_tdb_parent_init(TALLOC_CTX *mem_ctx); 108 109 NTSTATUS messaging_ctdbd_init(struct messaging_context *msg_ctx, 110 TALLOC_CTX *mem_ctx, 111 struct messaging_backend **presult); 79 int messaging_ctdbd_init(struct messaging_context *msg_ctx, 80 TALLOC_CTX *mem_ctx, 81 struct messaging_backend **presult); 112 82 struct ctdbd_connection *messaging_ctdbd_connection(void); 113 83 … … 116 86 const void *buf, size_t len, 117 87 int *n_sent); 118 struct event_context *messaging_event_context(struct messaging_context *msg_ctx);119 88 struct messaging_context *messaging_init(TALLOC_CTX *mem_ctx, 120 struct server_id server_id, 121 struct event_context *ev); 89 struct tevent_context *ev); 122 90 123 91 struct server_id messaging_server_id(const struct messaging_context *msg_ctx); 92 struct tevent_context *messaging_tevent_context( 93 struct messaging_context *msg_ctx); 94 struct server_id_db *messaging_names_db(struct messaging_context *msg_ctx); 124 95 125 96 /* 126 97 * re-init after a fork 127 98 */ 128 NTSTATUS messaging_reinit(struct messaging_context *msg_ctx, 129 struct server_id id); 99 NTSTATUS messaging_reinit(struct messaging_context *msg_ctx); 130 100 131 101 NTSTATUS messaging_register(struct messaging_context *msg_ctx, … … 139 109 void messaging_deregister(struct messaging_context *ctx, uint32_t msg_type, 140 110 void *private_data); 111 112 /** 113 * CAVEAT: 114 * 115 * While the messaging_send*() functions are synchronuous by API, 116 * they trigger a tevent-based loop upon sending bigger messages. 117 * 118 * Hence callers should not use these in purely synchonous code, 119 * but run a tevent_loop instead. 120 */ 141 121 NTSTATUS messaging_send(struct messaging_context *msg_ctx, 142 122 struct server_id server, 143 123 uint32_t msg_type, const DATA_BLOB *data); 124 144 125 NTSTATUS messaging_send_buf(struct messaging_context *msg_ctx, 145 126 struct server_id server, uint32_t msg_type, 146 const uint8 *buf, size_t len); 147 void messaging_dispatch_rec(struct messaging_context *msg_ctx, 148 struct messaging_rec *rec); 127 const uint8_t *buf, size_t len); 128 int messaging_send_iov_from(struct messaging_context *msg_ctx, 129 struct server_id src, struct server_id dst, 130 uint32_t msg_type, 131 const struct iovec *iov, int iovlen, 132 const int *fds, size_t num_fds); 133 NTSTATUS messaging_send_iov(struct messaging_context *msg_ctx, 134 struct server_id server, uint32_t msg_type, 135 const struct iovec *iov, int iovlen, 136 const int *fds, size_t num_fds); 137 138 struct tevent_req *messaging_filtered_read_send( 139 TALLOC_CTX *mem_ctx, struct tevent_context *ev, 140 struct messaging_context *msg_ctx, 141 bool (*filter)(struct messaging_rec *rec, void *private_data), 142 void *private_data); 143 int messaging_filtered_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, 144 struct messaging_rec **presult); 145 146 struct tevent_req *messaging_read_send(TALLOC_CTX *mem_ctx, 147 struct tevent_context *ev, 148 struct messaging_context *msg, 149 uint32_t msg_type); 150 int messaging_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, 151 struct messaging_rec **presult); 152 153 struct tevent_req *messaging_handler_send( 154 TALLOC_CTX *mem_ctx, struct tevent_context *ev, 155 struct messaging_context *msg_ctx, uint32_t msg_type, 156 bool (*handler)(struct messaging_context *msg_ctx, 157 struct messaging_rec **rec, void *private_data), 158 void *private_data); 159 int messaging_handler_recv(struct tevent_req *req); 160 161 int messaging_cleanup(struct messaging_context *msg_ctx, pid_t pid); 162 163 bool messaging_parent_dgm_cleanup_init(struct messaging_context *msg); 149 164 150 165 #include "librpc/gen_ndr/ndr_messaging.h"
Note:
See TracChangeset
for help on using the changeset viewer.