/*
This file is part of Ingen.
Copyright 2007-2012 David Robillard
Ingen is free software: you can redistribute it and/or modify it under the
terms of the GNU Affero General Public License as published by the Free
Software Foundation, either version 3 of the License, or any later version.
Ingen is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU Affero General Public License for details.
You should have received a copy of the GNU Affero General Public License
along with Ingen. If not, see .
*/
#ifndef INGEN_ENGINE_OBJECTSENDER_HPP
#define INGEN_ENGINE_OBJECTSENDER_HPP
namespace Ingen {
class Interface;
namespace Server {
class GraphObjectImpl;
class PatchImpl;
class NodeImpl;
class PortImpl;
class PluginImpl;
/** Utility class for sending GraphObjects to clients via Interface.
*
* While Interface is the direct low level message-based interface
* (protocol), this is used from the engine to easily send proper Objects
* with these messages (which is done in a few different parts of the code).
*
* Basically a serialiser, except to calls on Interface rather than
* eg a byte stream.
*/
class ObjectSender {
public:
static void send_object(Interface* client,
const GraphObjectImpl* object,
bool recursive);
private:
static void send_patch(Interface* client,
const PatchImpl* patch,
bool recursive,
bool bundle = true);
static void send_node(Interface* client,
const NodeImpl* node,
bool recursive,
bool bundle = true);
static void send_port(Interface* client,
const PortImpl* port,
bool bundle = true);
};
} // namespace Server
} // namespace Ingen
#endif // INGEN_ENGINE_OBJECTSENDER_HPP