| 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 |