]> rtime.felk.cvut.cz Git - frescor/forb.git/blob - src/object_type.h
forb_request_send() moved to iop.c
[frescor/forb.git] / src / object_type.h
1 /**************************************************************************/
2 /* ---------------------------------------------------------------------- */
3 /* Copyright (C) 2006 - 2008 FRESCOR consortium partners:                 */
4 /*                                                                        */
5 /*   Universidad de Cantabria,              SPAIN                         */
6 /*   University of York,                    UK                            */
7 /*   Scuola Superiore Sant'Anna,            ITALY                         */
8 /*   Kaiserslautern University,             GERMANY                       */
9 /*   Univ. Politécnica  Valencia,           SPAIN                        */
10 /*   Czech Technical University in Prague,  CZECH REPUBLIC                */
11 /*   ENEA                                   SWEDEN                        */
12 /*   Thales Communication S.A.              FRANCE                        */
13 /*   Visual Tools S.A.                      SPAIN                         */
14 /*   Rapita Systems Ltd                     UK                            */
15 /*   Evidence                               ITALY                         */
16 /*                                                                        */
17 /*   See http://www.frescor.org for a link to partners' websites          */
18 /*                                                                        */
19 /*          FRESCOR project (FP6/2005/IST/5-034026) is funded             */
20 /*       in part by the European Union Sixth Framework Programme          */
21 /*       The European Union is not liable of any use that may be          */
22 /*       made of this code.                                               */
23 /*                                                                        */
24 /*                                                                        */
25 /*  This file is part of FORB (Frescor Object Request Broker)             */
26 /*                                                                        */
27 /* FORB is free software; you can redistribute it and/or modify it        */
28 /* under terms of the GNU General Public License as published by the      */
29 /* Free Software Foundation; either version 2, or (at your option) any    */
30 /* later version.  FORB is distributed in the hope that it will be        */
31 /* useful, but WITHOUT ANY WARRANTY; without even the implied warranty    */
32 /* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU    */
33 /* General Public License for more details. You should have received a    */
34 /* copy of the GNU General Public License along with FORB; see file       */
35 /* COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,  */
36 /* Cambridge, MA 02139, USA.                                              */
37 /*                                                                        */
38 /* As a special exception, including FORB header files in a file,         */
39 /* instantiating FORB generics or templates, or linking other files       */
40 /* with FORB objects to produce an executable application, does not       */
41 /* by itself cause the resulting executable application to be covered     */
42 /* by the GNU General Public License. This exception does not             */
43 /* however invalidate any other reasons why the executable file might be  */
44 /* covered by the GNU Public License.                                     */
45 /**************************************************************************/
46
47 /**
48  * @file   object_type.h
49  * @author Michal Sojka <sojkam1@fel.cvut.cz>
50  * @date   Sun Oct 12 16:19:24 2008
51  * 
52  * @brief  Incomplete declarations of forb_object type and all associated stuff.
53  * 
54  * 
55  */
56
57 #ifndef FORB_FORB_OBJECT_H
58 #define FORB_FORB_OBJECT_H
59
60 #include <forb/basic_types.h>
61 #include <stdlib.h>
62 #include <forb/types.h>
63
64 #if defined(__cplusplus)
65 extern "C" {
66 #endif
67
68 struct _forb_object;
69
70 /** Opaque object reference type. */
71 typedef struct _forb_object *forb_object;
72 typedef forb_object CORBA_Object;
73
74 #if !defined(_forb_orb_defined)
75 #define _forb_orb_defined 1
76 typedef forb_object forb_orb;
77 #endif
78
79 /**
80  * FORB exception types. Inspired by CORBA's standard system
81  * exceptions.
82  */
83 enum forb_exception {
84         FORB_EX_NONE,           /* 0 */
85         FORB_EX_UNKNOWN,        /* 1 */
86         FORB_EX_BAD_PARAM,      /* 2 */
87         FORB_EX_NO_MEMORY,      /* 3 */
88         FORB_EX_IMP_LIMIT,      /* 4 */
89         FORB_EX_COMM_FAILURE,   /* 5 */
90         FORB_EX_INV_OBJREF,     /* 6 */
91         FORB_EX_NO_PERMISSION,  /* 7 */
92         FORB_EX_INTERNAL,       /* 8 */
93         FORB_EX_MARSHAL,        /* 9 */
94         FORB_EX_INITIALIZE,     /* 10 */
95         FORB_EX_NO_IMPLEMENT,   /* 11 */
96         FORB_EX_BAD_OPERATION,  /* 12 */
97         FORB_EX_NO_RESOURCES,   /* 13 */
98         FORB_EX_NO_RESPONSE,    /* 14 */
99         FORB_EX_TRANSIENT,      /* 15 */
100         FORB_EX_FREE_MEM,       /* 16 */
101         FORB_EX_INV_IDENT,      /* 17 */
102         FORB_EX_INV_FLAG,       /* 18 */
103         FORB_EX_DATA_CONVERSION,  /* 19 */
104         FORB_EX_OBJECT_NOT_EXIST, /* 20 */
105         FORB_EX_TIMEOUT,          /* 21 */
106         FORB_EX_APPLICATION,      /* 22 */ /**< Application defined exception - TODO: Add minor number to forb_env */
107 };
108
109 /** 
110  * Environment for FORB invocations.
111  * 
112  */
113 struct forb_env {
114         enum forb_exception major; /**< Exception number */
115 };
116
117 typedef struct forb_env CORBA_Environment;
118
119 static inline CORBA_boolean forb_exception_occurred(CORBA_Environment *env)
120 {
121         return (env->major != FORB_EX_NONE);
122 }
123
124 #define forb_malloc(size) malloc(size)
125 #define forb_free(ptr) free(ptr)
126
127 #define CORBA_malloc(size) forb_malloc(size)
128 #define CORBA_free(ptr) forb_free(ptr)
129
130 #ifdef __cplusplus
131 } /* extern "C"*/
132 #endif
133
134 #endif