Esempio n. 1
0
int main(int argc, char **argv)
{
    config.daemonize = 0;
    config.logserver = "minard";
    config.dataserver = "192.168.80.100";//"192.168.80.1";
    config.logfile = "";
    config.loglevel = NOTICE;

    parseOptions(argc, argv);

    strcpy(logfile, config.logfile);
    verbosity = config.loglevel;

    if (config.daemonize) daemonize();

    signal(SIGPIPE, SIG_IGN);
    signal(SIGINT, sigint_handler);

    Log(NOTICE, "tubii server started");

    el = aeCreateEventLoop(100);

    if ((aeCreateTimeEvent(el, 0, printSkipped, NULL, NULL)) == AE_ERR) {
        LogRaw(WARNING, "failed to set up printSkipped()");
    }

    startLogServer(config.logserver, "tubii");

    initServer(el, 4001, commandTable, sizeof(commandTable)/sizeof(struct command));

    /* set up the dispatch_connect event which will try to connect to the
     * data stream server. If it can't connect, it will retry every 10
     * seconds. */
    if (data_connect(config.dataserver)) {
        Log(WARNING, "failed to set up data stream");
        return 1;
    }

    auto_init();

    /* start tubii readout */
    if (start_tubii_readout(1000)) {
        //Log(WARNING, tubii_err);
        return 1;
    }

    /* set up status event */
    if (aeCreateTimeEvent(el, 0, tubii_status, NULL, NULL) == AE_ERR) {
        Log(WARNING, "failed to set up status tubii");
        return 1;
    }

    /* enter the main event loop */
    el->stop = 0;
    while (!el->stop) {
        if (el->beforesleep != NULL)
            el->beforesleep(el);
        aeProcessEvents(el, AE_ALL_EVENTS);
    }

    Log(NOTICE, "ctrl-c caught. flushing buffers...");

    time_t now = time(NULL);
    while (time(NULL) < now + 1) {
        if (aeProcessEvents(el, AE_FILE_EVENTS | AE_DONT_WAIT) == 0) break;
    }

    aeDeleteEventLoop(el);

    return 0;
}
Esempio n. 2
0
void VisualScript::_set_data(const Dictionary& p_data) {

	Dictionary d = p_data;
	if (d.has("base_type"))
		base_type=d["base_type"];

	variables.clear();
	Array vars=d["variables"];
	for (int i=0;i<vars.size();i++) {

		Dictionary v=vars[i];
		add_variable(v["name"],v["default_value"]);
		_set_variable_info(v["name"],v);
	}


	custom_signals.clear();
	Array sigs=d["signals"];
	for (int i=0;i<sigs.size();i++) {

		Dictionary cs=sigs[i];
		add_custom_signal(cs["name"]);

		Array args=cs["arguments"];
		for(int j=0;j<args.size();j+=2) {
			custom_signal_add_argument(cs["name"],Variant::Type(int(args[j+1])),args[j]);
		}
	}

	Array funcs=d["functions"];
	functions.clear();

	for (int i=0;i<funcs.size();i++) {

		Dictionary func=funcs[i];

		StringName name=func["name"];
		//int id=func["function_id"];
		add_function(name);

		Array nodes = func["nodes"];

		for(int i=0;i<nodes.size();i+=3) {

			add_node(name,nodes[i],nodes[i+2],nodes[i+1]);
		}


		Array sequence_connections=func["sequence_connections"];

		for (int j=0;j<sequence_connections.size();j+=3) {

			sequence_connect(name,sequence_connections[j+0],sequence_connections[j+1],sequence_connections[j+2]);
		}


		Array data_connections=func["data_connections"];

		for (int j=0;j<data_connections.size();j+=4) {

			data_connect(name,data_connections[j+0],data_connections[j+1],data_connections[j+2],data_connections[j+3]);

		}


	}

}