Ejemplo n.º 1
0
void
AtomWriter::delta(const Raul::URI&            uri,
                  const Resource::Properties& remove,
                  const Resource::Properties& add)
{
	LV2_Atom_Forge_Frame msg;
	forge_request(&msg, _uris.patch_Patch);
	lv2_atom_forge_key(&_forge, _uris.patch_subject);
	forge_uri(uri);

	lv2_atom_forge_key(&_forge, _uris.patch_remove);
	LV2_Atom_Forge_Frame remove_obj;
	lv2_atom_forge_object(&_forge, &remove_obj, 0, 0);
	forge_properties(remove);
	lv2_atom_forge_pop(&_forge, &remove_obj);

	lv2_atom_forge_key(&_forge, _uris.patch_add);
	LV2_Atom_Forge_Frame add_obj;
	lv2_atom_forge_object(&_forge, &add_obj, 0, 0);
	forge_properties(add);
	lv2_atom_forge_pop(&_forge, &add_obj);

	lv2_atom_forge_pop(&_forge, &msg);
	finish_msg();
}
Ejemplo n.º 2
0
void
AtomWriter::get(const Raul::URI& uri)
{
	LV2_Atom_Forge_Frame msg;
	forge_request(&msg, _uris.patch_Get);
	lv2_atom_forge_key(&_forge, _uris.patch_subject);
	forge_uri(uri);
	lv2_atom_forge_pop(&_forge, &msg);
	finish_msg();
}
Ejemplo n.º 3
0
void
AtomWriter::disconnect(const Raul::Path& tail,
                       const Raul::Path& head)
{
	LV2_Atom_Forge_Frame msg;
	forge_request(&msg, _uris.patch_Delete);
	lv2_atom_forge_key(&_forge, _uris.patch_body);
	forge_arc(tail, head);
	lv2_atom_forge_pop(&_forge, &msg);
	finish_msg();
}
Ejemplo n.º 4
0
void
AtomWriter::connect(const Raul::Path& tail,
                    const Raul::Path& head)
{
	LV2_Atom_Forge_Frame msg;
	forge_request(&msg, _uris.patch_Put);
	lv2_atom_forge_key(&_forge, _uris.patch_subject);
	forge_uri(Node::path_to_uri(Raul::Path::lca(tail, head)));
	lv2_atom_forge_key(&_forge, _uris.patch_body);
	forge_arc(tail, head);
	lv2_atom_forge_pop(&_forge, &msg);
	finish_msg();
}
Ejemplo n.º 5
0
void
AtomWriter::move(const Raul::Path& old_path,
                 const Raul::Path& new_path)
{
	LV2_Atom_Forge_Frame msg;
	forge_request(&msg, _uris.patch_Move);
	lv2_atom_forge_key(&_forge, _uris.patch_subject);
	forge_uri(Node::path_to_uri(old_path));
	lv2_atom_forge_key(&_forge, _uris.patch_destination);
	forge_uri(Node::path_to_uri(new_path));
	lv2_atom_forge_pop(&_forge, &msg);
	finish_msg();
}
Ejemplo n.º 6
0
void
AtomWriter::set_property(const Raul::URI& subject,
                         const Raul::URI& predicate,
                         const Atom&      value)
{
	LV2_Atom_Forge_Frame msg;
	forge_request(&msg, _uris.patch_Set);
	lv2_atom_forge_key(&_forge, _uris.patch_subject);
	forge_uri(subject);
	lv2_atom_forge_key(&_forge, _uris.patch_property);
	lv2_atom_forge_urid(&_forge, _map.map_uri(predicate.c_str()));
	lv2_atom_forge_key(&_forge, _uris.patch_value);
	lv2_atom_forge_atom(&_forge, value.size(), value.type());
	lv2_atom_forge_write(&_forge, value.get_body(), value.size());

	lv2_atom_forge_pop(&_forge, &msg);
	finish_msg();
}
Ejemplo n.º 7
0
void
AtomWriter::put(const Raul::URI&            uri,
                const Resource::Properties& properties,
                Resource::Graph             ctx)
{
	LV2_Atom_Forge_Frame msg;
	forge_request(&msg, _uris.patch_Put);
	lv2_atom_forge_key(&_forge, _uris.patch_subject);
	forge_uri(uri);
	lv2_atom_forge_key(&_forge, _uris.patch_body);

	LV2_Atom_Forge_Frame body;
	lv2_atom_forge_object(&_forge, &body, 0, 0);
	forge_properties(properties);
	lv2_atom_forge_pop(&_forge, &body);

	lv2_atom_forge_pop(&_forge, &msg);
	finish_msg();
}
Ejemplo n.º 8
0
void
AtomWriter::response(int32_t id, Status status, const std::string& subject)
{
	if (!id) {
		return;
	}

	LV2_Atom_Forge_Frame msg;
	forge_request(&msg, _uris.patch_Response);
	lv2_atom_forge_key(&_forge, _uris.patch_request);
	lv2_atom_forge_int(&_forge, id);
	if (!subject.empty() && Raul::URI::is_valid(subject)) {
		lv2_atom_forge_key(&_forge, _uris.patch_subject);
		lv2_atom_forge_uri(&_forge, subject.c_str(), subject.length());
	}
	lv2_atom_forge_key(&_forge, _uris.patch_body);
	lv2_atom_forge_int(&_forge, static_cast<int>(status));
	lv2_atom_forge_pop(&_forge, &msg);
	finish_msg();
}
Ejemplo n.º 9
0
void
AtomWriter::disconnect_all(const Raul::Path& graph,
                           const Raul::Path& path)
{
	LV2_Atom_Forge_Frame msg;
	forge_request(&msg, _uris.patch_Delete);

	lv2_atom_forge_key(&_forge, _uris.patch_subject);
	forge_uri(Node::path_to_uri(graph));

	lv2_atom_forge_key(&_forge, _uris.patch_body);
	LV2_Atom_Forge_Frame arc;
	lv2_atom_forge_object(&_forge, &arc, 0, _uris.ingen_Arc);
	lv2_atom_forge_key(&_forge, _uris.ingen_incidentTo);
	forge_uri(Node::path_to_uri(path));
	lv2_atom_forge_pop(&_forge, &arc);

	lv2_atom_forge_pop(&_forge, &msg);
	finish_msg();
}
Ejemplo n.º 10
0
/*
 * Server has asked us to make a choice.
 *
 * Ask AI and return result.
 */
static void handle_choose(char *ptr)
{
    player *p_ptr;
    char msg[1024];
    int pos, type, num, num_special;
    int list[MAX_DECK], special[MAX_DECK];
    int arg1, arg2, arg3;
    int i;

    /* Get player pointer */
    p_ptr = &real_game.p[player_us];

    /* Read choice log position expected */
    pos = get_integer(&ptr);

    /* Check for further along in log than we are */
    if (pos > p_ptr->choice_pos)
    {
        /* Adjust current position */
        p_ptr->choice_size = p_ptr->choice_pos = pos;
    }

    /* Check for request for choice we have already made */
    else if (pos < p_ptr->choice_pos)
    {
        /* XXX Do nothing */
        return;
    }

    /* Read choice type */
    type = get_integer(&ptr);

    /* Read number of items in list */
    num = get_integer(&ptr);

    /* Loop over items in list */
    for (i = 0; i < num; i++)
    {
        /* Read list item */
        list[i] = get_integer(&ptr);
    }

    /* Read number of special items in list */
    num_special = get_integer(&ptr);

    /* Loop over special items */
    for (i = 0; i < num_special; i++)
    {
        /* Read special item */
        special[i] = get_integer(&ptr);
    }

    /* Read extra arguments */
    arg1 = get_integer(&ptr);
    arg2 = get_integer(&ptr);
    arg3 = get_integer(&ptr);

    /* Ask AI for decision */
    ai_func.make_choice(&real_game, player_us, type, list, &num,
                        special, &num_special, arg1, arg2, arg3);

    /* Start reply */
    ptr = msg;

    /* Begin message */
    start_msg(&ptr, MSG_CHOOSE);

    /* Put choice log position */
    put_integer(p_ptr->choice_pos, &ptr);

    /* Copy entries from choice log */
    for (i = p_ptr->choice_pos; i < p_ptr->choice_size; i++)
    {
        /* Copy entry */
        put_integer(p_ptr->choice_log[i], &ptr);
    }

    /* Move current position to end of choice log */
    p_ptr->choice_pos = p_ptr->choice_size;

    /* Finish message */
    finish_msg(msg, ptr);

    /* Send reply */
    send_msg(0, msg);
}