00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef NTG_SERVER_H
00023 #define NTG_SERVER_H
00024
00025 #ifdef __cplusplus
00026 extern "C" {
00027 #endif
00028
00029 #include <stdarg.h>
00030 #include "Integra/integra_instance.h"
00031 #include "Integra/integra_model.h"
00032 #include "Integra/integra_error.h"
00033 #include "Integra/integra_path.h"
00034 #include "Integra/integra_connection.h"
00035 #include "Integra/integra_bridge_host.h"
00036
00037 #define RESPONSE_LABEL "response"
00038 #define BASE_URL "db.integralive.org:80/"
00039 #define ADMIN_URL BASE_URL "admin/"
00040 #define NTG_NULL_STRING "None"
00041
00042 typedef struct ntg_class_list_ {
00043 char **classes;
00044 int n_classes;
00045 } ntg_class_list;
00046
00047 typedef struct ntg_server_ {
00048
00049 ntg_class_list *classlist;
00050 ntg_model *model;
00051 ntg_bridge_interface *bridge;
00052 ntg_instance *root;
00053 struct ntg_connection_ *connection_list;
00054
00055 } ntg_server;
00056
00058 typedef struct ntg_client_ {
00059 char *ip;
00060 int port;
00061 } ntg_client;
00062
00069 ntg_class_list *ntg_classlist(const ntg_server *server);
00070
00077 ntg_definition *ntg_classinfo(ntg_server *server, const char *class_name);
00078
00086 ntg_attribute_list *ntg_attributes(const ntg_server *server,
00087 const char *class_name);
00088
00098 char *ntg_new(const ntg_server *server, const char *class_name,
00099 const char *instance_name, const ntg_path *path);
00100
00108 ntg_error_code ntg_delete(ntg_server *server,const ntg_path *path);
00109
00118 ntg_error_code ntg_rename(const ntg_server *server,const ntg_path *path, const char *name);
00119
00128 ntg_error_code ntg_save(const ntg_server *server,const ntg_path *path, const char *file_path);
00129
00138 ntg_error_code ntg_load(const ntg_server *server,const char *file_path,
00139 const ntg_path *path);
00140
00150 ntg_error_code ntg_move(const ntg_server *server,const ntg_path *instance_path,
00151 const ntg_path *parent_path);
00152
00153
00162 ntg_error_code ntg_set(const ntg_server *server,
00163 const ntg_path *attribute_path, const ntg_value *value);
00164
00173 ntg_value *ntg_get(const ntg_server *server, const ntg_path *path);
00174
00182 ntg_node_list *ntg_nodelist(const ntg_server *server, const ntg_path *path);
00183
00185 void ntg_updates(const ntg_server *server, int index);
00186
00188 int ntg_stateindex(const ntg_server *server);
00189
00190
00208 ntg_error_code ntg_runscript(ntg_server *server, const char *script);
00209
00210
00211
00212 typedef void *(* ntg_server_callback)(ntg_server *, int, va_list);
00213 ntg_server *ntg_server_new(void);
00214
00215 void *ntg_server_do(ntg_server_callback, const int argc, ...);
00216
00226 typedef void *(*ntg_bridge_callback)(int argc, void *argv);
00227
00229 void *server_receive_callback(ntg_id id, unsigned int port, const int argc,
00230 const ntg_value *message, void (*bridge_send_callback)(const ntg_port *, const ntg_value *));
00231
00232
00242 ntg_bridge_callback ntg_server_run(const char * bridge_file, const int port);
00243
00244 ntg_definition *ntg_get_definition_by_name(const ntg_server *server,
00245 const char *name);
00246
00247 char *ntg_get_type_by_id(const ntg_server *server, const int id);
00248 char ntg_type_code_from_type_string(const char *type);
00249 char *ntg_get_scope_by_id(const ntg_server *server, const int id);
00250 char *ntg_get_control_attribute_by_id(ntg_server *server, const int id);
00251 char *ntg_get_control_by_control_attribute_id(ntg_server *server, const int id);
00252 char *ntg_get_scale_by_id(ntg_server *server, const int id);
00253 ntg_module_attribute *ntg_get_module_attribute_by_id(const ntg_server *server, const int id);
00254
00255 ntg_default_value *ntg_get_default_value_by_id(ntg_server *server, const int id);
00256 char *ntg_get_unit_by_id(ntg_server *server, const int id);
00257 char *ntg_get_control_by_id(ntg_server *server, const int id);
00258
00259 int ntg_register(ntg_server *server, const char *ip, const int port);
00260
00263 ntg_instance *ntg_server_get_root(const ntg_server *server);
00264
00265 void ntg_server_set_root(ntg_server *server, ntg_instance *root);
00266
00268 ntg_node_list *ntg_server_get_nodelist(const ntg_server *server,
00269 ntg_instance *container, ntg_path *parent_path,
00270 ntg_node_list *nodelist);
00271
00273 ntg_attribute_list *ntg_server_get_class_attributes(const ntg_server *server,
00274 const char *class_name, ntg_attribute_list *attribute_list);
00275
00277 ntg_error_code ntg_server_update_connection(ntg_server *server,
00278 const ntg_instance *connection_instance,
00279 const ntg_instance_attribute *instance_attribute);
00280
00282 ntg_error_code ntg_server_new_connection(ntg_server *server,
00283 const ntg_instance *connection_instance);
00284
00286 ntg_error_code ntg_server_delete_connection(ntg_server *server,
00287 const ntg_instance *connection_instance);
00288
00292 ntg_error_code ntg_server_delete_orphaned_connections(ntg_server *server);
00293
00300 ntg_error_code ntg_server_instance_delete(ntg_server *server, ntg_instance *instance);
00301
00304 ntg_error_code ntg_server_fix_connections(ntg_server *server,
00305 ntg_instance *instance, const char *name);
00306
00307 #ifdef __cplusplus
00308 }
00309 #endif
00310
00311 #endif
00312