ZOO-Project
service_internal_ruby.h
Go to the documentation of this file.
1 /*
2  * Author : GĂ©rald FENOY
3  *
4  * Copyright (c) 2014 GeoLabs SARL
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to deal
8  * in the Software without restriction, including without limitation the rights
9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10  * copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in
14  * all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22  * THE SOFTWARE.
23  */
24 
25 #ifndef ZOO_SERVICE_INTERNAL_RUBY_H
26 #define ZOO_SERVICE_INTERNAL_RUBY_H 1
27 
28 #pragma once
29 
30 #define RUBY_GLOBAL_SETUP
31 #undef NEED_STRLCAT
32 #undef NEED_STRLCPY
33 #include "service.h"
34 #include "service_internal.h"
35 #undef RUBY_EXPORT
36 #undef STRCASECMP
37 #undef STRNCASECMP
38 #undef _
39 #include <ruby.h>
40 #if ZRUBY_VERSION < 2
41 #include <version.h>
42 #else
43 #include <ruby/version.h>
44 #endif
45 #if RUBY_VERSION_MINOR==8
46 #include <st.h>
47 #else
48 #include <ruby/st.h>
49 #endif
50 
51 #define MAX_ARGS 3
52 
55 struct my_callback {
56  VALUE obj;
57  ID method_id;
58  int nargs;
59  VALUE args[MAX_ARGS];
60 };
61 
62 void ruby_trace_error(maps*);
63 VALUE FunCallWrap(VALUE);
64 VALUE LoadWrap(VALUE);
65 
66 VALUE RubyHash_FromMaps(maps*);
67 VALUE RubyHash_FromMap(map*);
68 
69 maps* mapsFromRubyHash(VALUE);
70 void createMapsFromRubyHash(maps**,VALUE);
71 map* mapFromRubyHash(VALUE);
72 
74 
75 VALUE RubyTranslate(int,VALUE*,VALUE);
76 VALUE RubyUpdateStatus(int,VALUE*,VALUE);
77 
78 #endif
VALUE RubyTranslate(int, VALUE *, VALUE)
Use the ZOO-Services messages translation function from the Ruby environment (ZOO-API) ...
Definition: service_internal_ruby.c:445
VALUE args[MAX_ARGS]
The arguments values.
Definition: service_internal_ruby.h:59
VALUE LoadWrap(VALUE)
Load a ruby file.
Definition: service_internal_ruby.c:145
VALUE obj
Object used to call a method.
Definition: service_internal_ruby.h:56
VALUE RubyHash_FromMaps(maps *)
Convert a maps to a Ruby Hash.
Definition: service_internal_ruby.c:212
VALUE RubyUpdateStatus(int, VALUE *, VALUE)
Update the ongoing status of a running service from the Ruby environment (ZOO-API) ...
Definition: service_internal_ruby.c:461
maps * mapsFromRubyHash(VALUE)
Convert a Ruby Hash to a maps.
Definition: service_internal_ruby.c:355
linked list of map pointer
Definition: main_conf_read.y:292
void createMapsFromRubyHash(maps **, VALUE)
VALUE RubyHash_FromMap(map *)
Convert a map to a Ruby Hash.
Definition: service_internal_ruby.c:257
KVP linked list.
Definition: service.h:244
VALUE FunCallWrap(VALUE)
Call a ruby function with parameters.
Definition: service_internal_ruby.c:157
Metadata information about a full Service.
Definition: main_conf_read.y:329
#define MAX_ARGS
Definition: service_internal_ruby.h:51
int zoo_ruby_support(maps **, map *, service *, maps **, maps **)
Load a Ruby file then run the function corresponding to the service by passing the conf...
Definition: service_internal_ruby.c:44
map * mapFromRubyHash(VALUE)
Convert a Ruby Hash to a map.
Definition: service_internal_ruby.c:389
void ruby_trace_error(maps *)
Print the Ruby Stack Trace in an ows:ExceptionReport XML Document.
Definition: service_internal_ruby.c:168
int nargs
The arguments number.
Definition: service_internal_ruby.h:58
ID method_id
The method to call.
Definition: service_internal_ruby.h:57
The Ruby method pointer.
Definition: service_internal_ruby.h:55