1 | :- module(zmq, [init_zmq/0, | |
2 | master_main/10, alloc_term/3, | |
3 | setup_worker/5, work_reactor/1, teardown_worker/0, | |
4 | new_results_message/1, start_timer/0, stop_timer/0, | |
5 | msg_put_str/2, put_succ/4, add_stats/1, send_and_destroy_msg/1]). | |
6 | ||
7 | :- use_module('../../src/module_information.pl'). | |
8 | :- module_info(group,experimental). | |
9 | :- module_info(description,'This is the interface to C code for distributed model checking.'). | |
10 | :- module_info(revision,'$Rev: 9609 $'). | |
11 | :- module_info(lastchanged,'$LastChangedDate: 2011-11-18 10:43:02 +0100 (Fr, 18 Nov 2011) $'). | |
12 | ||
13 | foreign_resource('zmq', [master_main, alloc_term, | |
14 | setup_worker, work_reactor, teardown_worker, | |
15 | new_results_message, | |
16 | start_timer, stop_timer, | |
17 | msg_put_str, put_succ, | |
18 | add_stats, send_and_destroy_msg]). | |
19 | ||
20 | % master functions | |
21 | foreign(master_main, c, master_main(+integer,+integer,+integer,+address(zchunk_t),+address(zchunk_t),+string,+string,+string,+integer,[-integer])). | |
22 | foreign(alloc_term, c, alloc_term(+address(char), +integer, [-address(zchunk_t)])). | |
23 | ||
24 | % worker functions | |
25 | foreign(setup_worker, c, setup_worker(+integer, +integer, +string, +string, +string)). | |
26 | foreign(work_reactor, c, work_reactor([-integer])). | |
27 | foreign(teardown_worker, c, teardown_worker). | |
28 | foreign(new_results_message, c, new_results_message([-address(zmsg_t)])). | |
29 | foreign(start_timer, c, start_timer). | |
30 | foreign(stop_timer, c, stop_timer). | |
31 | foreign(msg_put_str, c, msg_put_str(+address(zmsg_t), +string)). | |
32 | foreign(put_succ, c, put_succ(+address(zmsg_t), +address(char), +integer, +integer)). | |
33 | foreign(add_stats, c, add_stats(+address(zmsg_t))). | |
34 | foreign(send_and_destroy_msg, c, send_and_destroy_msg(+address(zmsg_t))). | |
35 | ||
36 | :- dynamic is_initialised/0. | |
37 | ||
38 | init_zmq :- is_initialised,!. | |
39 | init_zmq :- | |
40 | load_foreign_resource(library(zmq)), | |
41 | assert(is_initialised). | |
42 |