Assuan server mode is now basically usable
[gnupg.git] / assuan / assuan.h
1 /* assuan.c - Definitions for the Assuna protocol
2  *      Copyright (C) 2001 Free Software Foundation, Inc.
3  *
4  * This file is part of GnuPG.
5  *
6  * GnuPG is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * GnuPG is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19  */
20
21 #ifndef ASSUAN_H
22 #define ASSUAN_H
23
24 #ifdef __cplusplus
25 extern "C" { 
26 #if 0
27  }
28 #endif
29 #endif
30
31 typedef enum {
32   ASSUAN_No_Error = 0,
33   ASSUAN_General_Error = 1,
34   ASSUAN_Out_Of_Core = 2,
35   ASSUAN_Invalid_Value = 3,
36   ASSUAN_Timeout = 4,  
37   ASSUAN_Read_Error = 5,
38   ASSUAN_Write_Error = 6,
39
40   /* error codes above 99 are meant as status codes */
41   ASSUAN_Not_Implemented = 100,
42   ASSUAN_Server_Fault    = 101,
43   ASSUAN_Invalid_Command = 102,
44   ASSUAN_Unknown_Command = 103,
45   ASSUAN_Syntax_Error    = 104,
46   ASSUAN_Parameter_Error = 105,
47   ASSUAN_Parameter_Conflict = 106,
48   ASSUAN_Line_Too_Long = 107,
49   ASSUAN_Line_Not_Terminated = 108,
50   ASSUAN_No_Input = 109,
51   ASSUAN_No_Output = 110,
52
53   ASSUAN_Cert_Revoked = 301,
54   ASSUAN_No_CRL_For_Cert = 302,
55   ASSUNA_CRL_Too_Old = 303,
56
57 } AssuanError;
58
59 /* This is a list of pre-registered ASSUAN commands */
60 typedef enum {
61   ASSUAN_CMD_NOP = 0,
62   ASSUAN_CMD_CANCEL,    /* cancel the current request */
63   ASSUAN_CMD_BYE,
64   ASSUAN_CMD_AUTH,
65   ASSUAN_CMD_RESET,
66   ASSUAN_CMD_DATA,
67   ASSUAN_CMD_END,
68   ASSUAN_CMD_INPUT,
69   ASSUAN_CMD_OUTPUT,
70
71   ASSUAN_CMD_USER = 256  /* Other commands should be used with this offset*/
72 } AssuanCommand;
73
74
75 struct assuan_context_s;
76 typedef struct assuan_context_s *ASSUAN_CONTEXT;
77
78 /*-- assuan-handler.c --*/
79 int assuan_register_command (ASSUAN_CONTEXT ctx,
80                              int cmd_id, const char *cmd_string,
81                              int (*handler)(ASSUAN_CONTEXT, char *));
82 int assuan_process (ASSUAN_CONTEXT ctx);
83
84
85 /*-- assuan-listen.c --*/
86 int assuan_accept (ASSUAN_CONTEXT ctx);
87 int assuan_get_input_fd (ASSUAN_CONTEXT ctx);
88 int assuan_get_output_fd (ASSUAN_CONTEXT ctx);
89
90
91 /*-- assuan-pipe-server.c --*/
92 int assuan_init_pipe_server (ASSUAN_CONTEXT *r_ctx, int filedes[2]);
93 void assuan_deinit_pipe_server (ASSUAN_CONTEXT ctx);
94
95
96 /*-- assuan-util.c --*/
97 void assuan_set_malloc_hooks ( void *(*new_alloc_func)(size_t n),
98                                void *(*new_realloc_func)(void *p, size_t n),
99                                void (*new_free_func)(void*) );
100 int assuan_set_error (ASSUAN_CONTEXT ctx, int err, const char *text);
101
102 /*-- assuan-errors.c (built) --*/
103 const char *assuan_strerror (AssuanError err);
104
105
106 #ifdef __cplusplus
107 }
108 #endif
109 #endif /*ASSUAN_H*/