jsweeper/src/session.cpp

95 lines
1.6 KiB
C++
Raw Normal View History

#include <string>
#include "session.h"
std::string Session::m_last_name;
Session::Session()
{
GError *error = NULL;
m_connection = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
m_proxy = NULL;
if (m_connection == NULL) return;
m_proxy = dbus_g_proxy_new_for_name(
m_connection, "org.jackaudio.sessionmanager",
"/org/jackaudio/sessionmanager", "org.jackaudio.sessionmanager");
if (m_proxy == NULL) {
g_object_unref(m_connection);
m_connection = NULL;
}
}
Session::~Session()
{
if (m_proxy) g_object_unref(m_proxy);
}
int Session::Save()
{
return SaveAs(m_last_name);
}
int Session::SaveAs(std::string name)
{
GError *error = NULL;
int ret;
if (m_proxy == NULL) return -1;
dbus_g_proxy_call(m_proxy, "save_as", &error,
G_TYPE_STRING, name.c_str(),
G_TYPE_INVALID,
G_TYPE_INT, &ret,
G_TYPE_INVALID);
m_last_name = name;
return ret;
}
int Session::Load(std::string name)
{
GError *error = NULL;
int ret;
if (m_proxy == NULL) return -1;
dbus_g_proxy_call(m_proxy, "load", &error,
G_TYPE_STRING, name.c_str(),
G_TYPE_INVALID,
G_TYPE_INT, &ret,
G_TYPE_INVALID);
m_last_name = name;
return ret;
}
std::list<std::string> Session::List()
{
GError *error = NULL;
char **session_list = NULL;
char **session_list_ptr;
std::list<std::string> list;
if (m_proxy == NULL) return list;
dbus_g_proxy_call(m_proxy, "list", &error,
G_TYPE_INVALID,
G_TYPE_STRV, &session_list,
G_TYPE_INVALID);
if (session_list == NULL) return list;
for (session_list_ptr = session_list; *session_list_ptr; session_list_ptr++) {
list.push_back(*session_list_ptr);
}
g_strfreev(session_list);
return list;
}