Git init
[pkgs/e/elektra.git] / src / backends / daemon / message.h
1 /***************************************************************************
2                 message.h  -  Class for a protocol messages
3                              -------------------
4     begin                : Sun Mar 12 2006
5     copyright            : (C) 2006 by Yannick Lecaillez, Avi Alkalay
6     email                : avi@unix.sh
7  ***************************************************************************/
8
9 /***************************************************************************
10  *                                                                         *
11  *   This program is free software; you can redistribute it and/or modify  *
12  *   it under the terms of the BSD License (revised).                      *
13  *                                                                         *
14  ***************************************************************************/
15
16 /***************************************************************************
17  *                                                                         *
18  * Class for messages, to be passed over a protocol line.                  *
19  *                                                                         *
20  ***************************************************************************/
21
22
23
24 /* Subversion stuff
25
26 $Id$
27
28 */
29
30 #ifndef __MESSAGE__
31 #define __MESSAGE__
32
33 #include "datatype.h"
34
35 #define MSG_MAX_ARGS    8
36
37 typedef enum {
38         MESSAGE_REQUEST,
39         MESSAGE_REPLY
40 } MessageType;
41
42 #define INTERNAL_ERROR  1<<15
43
44 typedef struct {
45         MessageType     type;
46         int             procId;
47         int             nbArgs;
48         DataType        args[MSG_MAX_ARGS];
49
50         size_t          size;
51
52         /* In memory, this struct is followed by
53          * the serialized arguments. "size" reflect that. */
54 } Message;
55
56 Message *messageNew(MessageType msgType, int procedure, ...);
57 MessageType messageGetType(const Message *msg);
58 int messageGetProcedure(const Message *msg);
59 int messageGetNbArgs(const Message *msg);
60 int messageExtractArgs(const Message *msg, ...);
61 void messageDel(Message *msg);
62
63 #endif /* __MESSAGE__ */