DoubletSolver::DoubletSolver() {
	start_word = "river";
	goal_word = "sweep";
	word_size = start_word.size();
	expansions = 0;
	priority_queue = new MinHeap(3);
	parse_dictionary("data/AStarTestFile.txt");
}
DoubletSolver::DoubletSolver(std::string start, std::string end, std::string filename){
	start_word = start;
	goal_word = end;
	word_size = start_word.size();
	expansions = 0;
	priority_queue = new MinHeap(3);
	parse_dictionary(filename);
}
Esempio n. 3
0
/*
 * A Phdc Manager requests to be added to the manager list.
 * - parse the parameters
 *
 * Initial version: the PHDC manager calls dbus_register_phdc_manager,
 * sending a simple path and a service name
 * TODO: check for DBUS_TYPE_UNIX_FD   ((int) 'h')
 */
static DBusMessage *dbus_register_phdc_agent(DBusConnection *conn,
					DBusMessage *msg, void *data)
{
	struct near_phdc_data *phdc_mgr;
	int err;

	DBG("conn %p", conn);

	/* Allocate the phdc_mgr struct */
	phdc_mgr = g_try_malloc0(sizeof(struct near_phdc_data));
	if (!phdc_mgr) {
		err = -ENOMEM;
		goto error;
	}

	/* Allocate a default p2p_driver */
	phdc_mgr->p2p_driver = g_try_malloc0(sizeof(struct near_p2p_driver));
	if (!phdc_mgr->p2p_driver) {
		err = -ENOMEM;
		goto error;
	}

	/* Get the the sender name */
	phdc_mgr->sender = g_strdup(dbus_message_get_sender(msg));

	DBG("%s", phdc_mgr->sender);

	/* default p2p values */
	phdc_mgr->p2p_driver->fallback_service_name = NULL;
	phdc_mgr->p2p_driver->sock_type = SOCK_STREAM;
	phdc_mgr->p2p_driver->single_connection = FALSE;
	phdc_mgr->p2p_driver->new_client = phdc_p2p_newclient;
	phdc_mgr->p2p_driver->close = phdc_p2p_close;

	/* look for dict values and fill the struct */
	err = parse_dictionary(msg, data, phdc_mgr, phdc_mgr->p2p_driver);
	if (err < 0)
		goto error;

	/* TODO: At this time, there's no support for Role == Agent */
	if (phdc_mgr->role == ROLE_AGENT) {
		err = -ENOTSUP;
		goto error;
	}

	/* No correct role ? */
	if (phdc_mgr->role == ROLE_UNKNOWN) {
		err = -EINVAL;
		goto error;
	}

	/* No path ? */
	if (!phdc_mgr->path) {
		err = -EINVAL;
		goto error;
	}

	/* defaulting the p2p driver */
	if (!phdc_mgr->p2p_driver->service_name)
		phdc_mgr->p2p_driver->service_name =
						g_strdup(DEFAULT_PHDC_SERVICE);

	/* p2p internal name */
	phdc_mgr->p2p_driver->name = g_strdup_printf("{%s-%s}",
			(phdc_mgr->role == ROLE_MANAGER ? ROLE_MANAGER_TEXT :
							ROLE_AGENT_TEXT),
					phdc_mgr->p2p_driver->service_name);

	/* if one pointer is null, memory failed ! */
	if ((!phdc_mgr->p2p_driver->name) ||
				(!phdc_mgr->p2p_driver->service_name)) {
		err = -ENOMEM;
		goto error;
	}

	/* Watch the Phdc Manager */
	phdc_mgr->watch = g_dbus_add_disconnect_watch(phdc_conn,
							phdc_mgr->sender,
							phdc_manager_disconnect,
							phdc_mgr, NULL);
	/* Add to the existing Manager list */
	err = manager_add_to_list(phdc_mgr);
	if (err < 0)
		goto error;

	/* and register the p2p driver for the specified service */
	err = near_p2p_register(phdc_mgr->p2p_driver);
	if (err < 0)
		goto error;

	return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);

error:
	/* free memory */
	free_mgr_data(phdc_mgr);
	return error_failed(msg, -err);
}