annotate extensions/dbg_interactive/messages.i @ 662:2e94ef0515d7 1.1.0-rc1

Updated copyright information
author Sebastien Decugis <sdecugis@nict.go.jp>
date Fri, 14 Jan 2011 16:27:21 +0900
parents 5e5d8152c229
children 8c3dc8584dab
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
637
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1 /*********************************************************************************************************
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
2 * Software License Agreement (BSD License) *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
3 * Author: Sebastien Decugis <sdecugis@nict.go.jp> *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
4 * *
662
2e94ef0515d7 Updated copyright information
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 649
diff changeset
5 * Copyright (c) 2011, WIDE Project and NICT *
637
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
6 * All rights reserved. *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
7 * *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
8 * Redistribution and use of this software in source and binary forms, with or without modification, are *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
9 * permitted provided that the following conditions are met: *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
10 * *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
11 * * Redistributions of source code must retain the above *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
12 * copyright notice, this list of conditions and the *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
13 * following disclaimer. *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
14 * *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
15 * * Redistributions in binary form must reproduce the above *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
16 * copyright notice, this list of conditions and the *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
17 * following disclaimer in the documentation and/or other *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
18 * materials provided with the distribution. *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
19 * *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
20 * * Neither the name of the WIDE Project or NICT nor the *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
21 * names of its contributors may be used to endorse or *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
22 * promote products derived from this software without *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
23 * specific prior written permission of WIDE Project and *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
24 * NICT. *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
25 * *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
27 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
28 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
29 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
30 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
32 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
33 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
34 *********************************************************************************************************/
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
35
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
36 /* Do not include this directly, use dbg_interactive.i instead */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
37
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
38 /****** MESSAGES *********/
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
39
638
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
40 %{
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
41 struct anscb_py_layer {
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
42 PyObject * cb;
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
43 PyObject * data;
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
44 };
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
45
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
46 /* If a python callback was provided, it is received in cbdata */
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
47 static void anscb_python(void *cbdata, struct msg ** msg) {
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
48 /* The python callback is received in cbdata */
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
49 PyObject * result, *PyMsg;
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
50 struct anscb_py_layer * l = cbdata;
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
51
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
52 if (!l) {
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
53 fd_log_debug("Internal error! Python callback disappeared...\n");
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
54 return;
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
55 }
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
56
649
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
57 if (l->cb) {
638
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
58
649
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
59 SWIG_PYTHON_THREAD_BEGIN_BLOCK;
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
60
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
61 if (!msg || !*msg) {
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
62 PyMsg = Py_None;
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
63 } else {
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
64 PyMsg = SWIG_NewPointerObj((void *)*msg, SWIGTYPE_p_msg, 0 );
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
65 }
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
66
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
67 result = PyEval_CallFunction(l->cb, "(OO)", PyMsg, l->data);
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
68 Py_XDECREF(l->cb);
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
69 Py_XDECREF(l->data);
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
70 free(l);
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
71
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
72 /* The callback is supposed to return a message or NULL */
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
73 if (!SWIG_IsOK(SWIG_ConvertPtr(result, (void *)msg, SWIGTYPE_p_msg, SWIG_POINTER_DISOWN))) {
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
74 fd_log_debug("Error: Cannot convert the return value to message.\n");
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
75 *msg = NULL;
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
76 }
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
77
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
78 Py_XDECREF(result);
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
79
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
80 SWIG_PYTHON_THREAD_END_BLOCK;
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
81
638
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
82 }
649
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
83 /* else */
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
84 /* Only the timeout was specified, without a callback */
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
85 /* in this case, just delete the message */
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
86 /* it actually happens automatically when we do nothing. */
638
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
87 }
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
88 %}
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
89
637
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
90 struct msg {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
91 };
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
92
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
93 %extend msg {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
94 msg(struct dict_object * model=NULL, int flags = MSGFL_ALLOC_ETEID) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
95 struct msg * m = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
96 int ret = fd_msg_new( model, flags, &m);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
97 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
98 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
99 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
100 return m;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
101 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
102 /* construct also from a binary buffer */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
103 msg(char * STRING, size_t LENGTH) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
104 int ret;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
105 struct msg * m = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
106 /* First, copy the string */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
107 unsigned char * buf = malloc(LENGTH);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
108 if (buf == NULL) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
109 DI_ERROR_MALLOC;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
110 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
111 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
112 memcpy(buf, STRING, LENGTH);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
113 ret = fd_msg_parse_buffer(&buf, LENGTH, &m);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
114 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
115 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
116 free(buf);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
117 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
118 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
119 return m;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
120 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
121 ~msg() {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
122 int ret = fd_msg_free($self);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
123 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
124 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
125 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
126 }
638
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
127
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
128 /* SEND THE MESSAGE */
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
129 %delobject send; /* when this has been called, the msg must not be freed anymore */
649
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
130 void send(PyObject * PyCb = NULL, PyObject * data = NULL, unsigned int timeout = 0) {
638
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
131 int ret;
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
132 struct msg * m = $self;
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
133 struct anscb_py_layer * l = NULL;
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
134
649
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
135 if (PyCb || timeout) {
638
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
136 l = malloc(sizeof(struct anscb_py_layer));
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
137 if (!l) {
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
138 DI_ERROR_MALLOC;
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
139 return;
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
140 }
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
141
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
142 Py_XINCREF(PyCb);
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
143 Py_XINCREF(data);
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
144 l->cb = PyCb;
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
145 l->data = data;
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
146 }
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
147
649
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
148 if (timeout) {
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
149 struct timespec ts;
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
150 (void) clock_gettime(CLOCK_REALTIME, &ts);
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
151 ts.tv_sec += timeout;
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
152 ret = fd_msg_send_timeout(&m, anscb_python, l, &ts);
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
153 } else {
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
154 ret = fd_msg_send(&m, PyCb ? anscb_python : NULL, l);
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
155 }
638
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
156 if (ret != 0) {
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
157 DI_ERROR(ret, NULL, NULL);
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
158 }
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
159 }
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
160
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
161 /* Create an answer */
637
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
162 %delobject create_answer; /* when this has been called, the original msg should not be freed anymore */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
163 struct msg * create_answer(struct dictionary * dict = NULL, int flags = 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
164 /* if dict is not provided, attempt to get it from the request model */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
165 struct dictionary * d = dict;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
166 struct msg * m = $self;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
167 int ret;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
168 if (!d) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
169 struct dict_object * mo = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
170 ret = fd_msg_model($self, &mo);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
171 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
172 DI_ERROR(ret, NULL, "Error retrieving query model.");
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
173 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
174 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
175 if (mo == NULL) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
176 /* use the fD dictionary by default */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
177 d = fd_g_config->cnf_dict;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
178 } else {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
179 ret = fd_dict_getdict ( mo, &d );
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
180 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
181 DI_ERROR(ret, NULL, "Error retrieving query's dictionary.");
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
182 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
183 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
184 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
185 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
186 ret = fd_msg_new_answer_from_req(d, &m, flags);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
187 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
188 DI_ERROR(ret, NULL, "Cannot guess the dictionary to use, please provide it as parameter.");
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
189 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
190 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
191
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
192 return m;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
193 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
194 /* Return the first child AVP if any */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
195 struct avp * first_child() {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
196 struct avp * a = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
197 int ret = fd_msg_browse($self, MSG_BRW_FIRST_CHILD, &a, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
198 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
199 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
200 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
201 return a;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
202 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
203
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
204 /* Enumerable list of children AVP */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
205 %newobject children;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
206 PyObject * children() {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
207 struct avp * a = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
208 PyObject * rl;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
209 int ret = fd_msg_browse($self, MSG_BRW_FIRST_CHILD, &a, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
210 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
211 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
212 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
213 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
214 SWIG_PYTHON_THREAD_BEGIN_BLOCK;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
215 rl = PyList_New(0);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
216 while (a) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
217 PyList_Append(rl, SWIG_NewPointerObj((void *)a, SWIGTYPE_p_avp, 0 /* do not own the AVPs */ ));
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
218 ret = fd_msg_browse(a, MSG_BRW_NEXT, &a, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
219 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
220 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
221 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
222 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
223 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
224 Py_XINCREF(rl);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
225 SWIG_PYTHON_THREAD_END_BLOCK;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
226 return rl;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
227 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
228
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
229 /* Add a new AVP */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
230 void add_child(struct avp *DISOWN, int begin = 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
231 int ret = fd_msg_avp_add ( $self, begin ? MSG_BRW_FIRST_CHILD : MSG_BRW_LAST_CHILD, DISOWN);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
232 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
233 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
234 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
235 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
236
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
237 /* Search an AVP */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
238 struct avp * search(struct dict_object * what) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
239 struct avp * a = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
240 int ret = fd_msg_search_avp($self, what, &a);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
241 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
242 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
243 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
244 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
245 return a;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
246 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
247
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
248 /* Dump */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
249 void dump (int tree = 1) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
250 if (tree)
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
251 fd_msg_dump_walk(0, $self);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
252 else
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
253 fd_msg_dump_one(0, $self);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
254 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
255
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
256 /* Model */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
257 struct dict_object * model() {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
258 struct dict_object * m = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
259 int ret = fd_msg_model($self, &m);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
260 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
261 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
262 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
263 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
264 return m;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
265 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
266
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
267 /* Header */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
268 struct msg_hdr * header() {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
269 struct msg_hdr * h = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
270 int ret = fd_msg_hdr($self, &h);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
271 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
272 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
273 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
274 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
275 return h;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
276 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
277
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
278 /* Get query if message is an answer */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
279 struct msg * get_query() {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
280 struct msg * q = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
281 int ret = fd_msg_answ_getq($self, &q);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
282 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
283 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
284 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
285 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
286 return q;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
287 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
288
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
289 /* Get / Set routing data */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
290 struct rt_data * get_rtd() {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
291 struct rt_data * r = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
292 int ret = fd_msg_rt_get($self, &r);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
293 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
294 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
295 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
296 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
297 return r;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
298 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
299 void set_rtd(struct rt_data *DISOWN) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
300 struct rt_data * r = DISOWN;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
301 int ret = fd_msg_rt_associate($self, &r);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
302 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
303 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
304 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
305 return;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
306 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
307
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
308 /* Is routable? */
640
237cf6339546 dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 638
diff changeset
309 PyObject * is_routable() {
237cf6339546 dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 638
diff changeset
310 PyObject * r;
237cf6339546 dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 638
diff changeset
311 if (fd_msg_is_routable($self))
237cf6339546 dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 638
diff changeset
312 r = Py_True;
237cf6339546 dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 638
diff changeset
313 else
237cf6339546 dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 638
diff changeset
314 r = Py_False;
237cf6339546 dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 638
diff changeset
315 Py_XINCREF(r);
237cf6339546 dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 638
diff changeset
316 return r;
637
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
317 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
318
649
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
319 /* Is request? (shortcut) */
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
320 PyObject * is_request() {
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
321 PyObject * r;
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
322 int ret;
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
323 struct msg_hdr * h;
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
324
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
325 ret = fd_msg_hdr($self, &h);
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
326 if (ret != 0) {
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
327 DI_ERROR(ret, NULL, NULL);
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
328 }
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
329 if (h->msg_flags & CMD_FLAG_REQUEST)
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
330 r = Py_True;
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
331 else
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
332 r = Py_False;
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
333 Py_XINCREF(r);
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
334 return r;
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
335 }
5e5d8152c229 Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 640
diff changeset
336
637
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
337 /* Get the source */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
338 char *source() {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
339 char * s = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
340 int ret = fd_msg_source_get($self, &s);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
341 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
342 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
343 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
344 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
345 return s;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
346 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
347
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
348 /* Get the session */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
349 %newobject get_session; /* it may be created or not, it is harmless because we only reclaim in ~session */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
350 struct session *get_session(struct dictionary * dict = NULL) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
351 struct session *s = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
352 struct dictionary * d = dict;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
353 int ret = 0;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
354 if (d == NULL)
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
355 d = fd_g_config->cnf_dict; /* default: use daemon's */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
356 ret = fd_msg_sess_get(d, $self, &s, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
357 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
358 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
359 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
360 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
361 return s;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
362 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
363
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
364 /* Bufferize */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
365 %cstring_output_allocate_size(char ** outbuffer, size_t * outlen, free(*$1));
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
366 void bufferize ( char ** outbuffer, size_t * outlen ) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
367 int ret = fd_msg_bufferize ( $self, (void *)outbuffer, outlen );
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
368 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
369 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
370 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
371 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
372
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
373 /* Dictionary parsing */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
374 %newobject parse_dict;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
375 struct fd_pei * parse_dict(struct dictionary * dict=NULL) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
376 int ret;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
377 struct fd_pei pei, *e = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
378 struct dictionary * d = dict;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
379 memset(&pei, 0, sizeof(struct fd_pei));
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
380 if (d == NULL)
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
381 d = fd_g_config->cnf_dict; /* default: use daemon's */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
382
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
383 ret = fd_msg_parse_dict ( $self, d, &pei );
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
384 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
385 e = malloc(sizeof(struct fd_pei));
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
386 if (!e) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
387 DI_ERROR_MALLOC;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
388 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
389 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
390 memcpy(e, &pei, sizeof(struct fd_pei));
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
391 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
392 return e; /* returns NULL when everything went OK */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
393 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
394
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
395 /* Rules parsing */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
396 %newobject parse_rules;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
397 struct fd_pei * parse_rules(struct dictionary * dict=NULL) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
398 int ret;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
399 struct fd_pei pei, *e = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
400 struct dictionary * d = dict;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
401 memset(&pei, 0, sizeof(struct fd_pei));
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
402 if (d == NULL)
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
403 d = fd_g_config->cnf_dict; /* default: use daemon's */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
404
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
405 ret = fd_msg_parse_rules ( $self, d, &pei );
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
406 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
407 e = malloc(sizeof(struct fd_pei));
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
408 if (!e) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
409 DI_ERROR_MALLOC;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
410 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
411 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
412 memcpy(e, &pei, sizeof(struct fd_pei));
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
413 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
414 return e; /* returns NULL when everything went OK */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
415 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
416
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
417 /* Update the length info in header */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
418 void update_length() {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
419 int ret = fd_msg_update_length ( $self );
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
420 if (ret) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
421 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
422 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
423 }
638
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
424
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
425 /* Set the result code */
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
426 void rescode_set(char * rescode = "DIAMETER_SUCCESS", char * errormsg = NULL, struct avp * optavp = NULL, int type_id = 0) {
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
427 int ret = fd_msg_rescode_set( $self, rescode, errormsg, optavp, type_id );
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
428 if (ret) {
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
429 DI_ERROR(ret, NULL, NULL);
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
430 }
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
431 }
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
432
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
433 /* Add the origin */
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
434 void add_origin(int osi = 0) {
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
435 int ret = fd_msg_add_origin( $self, osi );
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
436 if (ret) {
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
437 DI_ERROR(ret, NULL, NULL);
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
438 }
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
439 }
9448cba86673 Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 637
diff changeset
440
637
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
441 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
442
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
443 struct avp {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
444 };
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
445
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
446 %extend avp {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
447 avp(struct dict_object * model = NULL, int flags = 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
448 struct avp * a = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
449 int ret = fd_msg_avp_new( model, flags, &a);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
450 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
451 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
452 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
453 return a;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
454 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
455 ~avp() {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
456 int ret = fd_msg_free($self);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
457 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
458 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
459 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
460 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
461
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
462 /* Return the first child AVP if any */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
463 struct avp * first_child() {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
464 struct avp * a = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
465 int ret = fd_msg_browse($self, MSG_BRW_FIRST_CHILD, &a, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
466 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
467 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
468 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
469 return a;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
470 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
471
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
472 /* Enumerable list of children AVP */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
473 %newobject children;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
474 PyObject * children() {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
475 struct avp * a = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
476 PyObject * rl;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
477 int ret = fd_msg_browse($self, MSG_BRW_FIRST_CHILD, &a, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
478 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
479 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
480 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
481 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
482 SWIG_PYTHON_THREAD_BEGIN_BLOCK;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
483 rl = PyList_New(0);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
484 while (a) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
485 PyList_Append(rl, SWIG_NewPointerObj((void *)a, SWIGTYPE_p_avp, 0 /* the AVPs are not owned */ ));
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
486 ret = fd_msg_browse(a, MSG_BRW_NEXT, &a, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
487 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
488 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
489 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
490 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
491 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
492 Py_XINCREF(rl);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
493 SWIG_PYTHON_THREAD_END_BLOCK;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
494 return rl;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
495 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
496
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
497 /* Add a new AVP */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
498 void add_next(struct avp *avp) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
499 int ret = fd_msg_avp_add ( $self, MSG_BRW_NEXT, avp);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
500 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
501 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
502 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
503 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
504 void add_prev(struct avp *avp) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
505 int ret = fd_msg_avp_add ( $self, MSG_BRW_PREV, avp);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
506 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
507 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
508 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
509 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
510 void add_child(struct avp *DISOWN, int begin = 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
511 int ret = fd_msg_avp_add ( $self, begin ? MSG_BRW_FIRST_CHILD : MSG_BRW_LAST_CHILD, DISOWN);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
512 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
513 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
514 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
515 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
516
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
517 /* Get the next AVP at the same level */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
518 struct avp * get_next() {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
519 struct avp * a = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
520 int ret = fd_msg_browse($self, MSG_BRW_NEXT, &a, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
521 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
522 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
523 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
524 return a;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
525 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
526
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
527 /* Dump */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
528 void dump (int tree = 1) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
529 if (tree)
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
530 fd_msg_dump_walk(0, $self);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
531 else
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
532 fd_msg_dump_one(0, $self);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
533 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
534
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
535 /* Model */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
536 struct dict_object * model() {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
537 struct dict_object * m = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
538 int ret = fd_msg_model($self, &m);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
539 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
540 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
541 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
542 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
543 return m;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
544 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
545
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
546 /* Header */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
547 struct avp_hdr * header() {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
548 struct avp_hdr * h = NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
549 int ret = fd_msg_avp_hdr($self, &h);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
550 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
551 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
552 return NULL;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
553 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
554 return h;
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
555 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
556
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
557 /* set value */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
558 void setval(union avp_value * val) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
559 int ret = fd_msg_avp_setvalue ( $self, val );
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
560 if (ret != 0) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
561 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
562 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
563 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
564
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
565 /* Update the length info in header */
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
566 void update_length() {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
567 int ret = fd_msg_update_length ( $self );
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
568 if (ret) {
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
569 DI_ERROR(ret, NULL, NULL);
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
570 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
571 }
22e8fac3b2d6 Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
572 }
"Welcome to our mercurial repository"