diff --git a/Makefile.in b/Makefile.in
index 79ef7e0..843af3b 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -39,6 +39,7 @@ PLUGIN_SOURCES= \
SERVICE_SOURCES= \
$(wildcard src/service/*.c) \
+ $(wildcard src/service/@OSNAME@/*.c) \
$(wildcard src/service/@OSNAME@/*.rc)
TEST_SOURCES= \
diff --git a/configure.ac b/configure.ac
index cd9ef94..3c46129 100644
--- a/configure.ac
+++ b/configure.ac
@@ -85,6 +85,7 @@ case "$host" in
app_win32_revision=$(date +%y.%m.%d.%H)
AC_SUBST(WIN32_VERSION,$app_win32_revision)
AC_CONFIG_FILES(src/core/windows/resources.rc)
+ AC_CONFIG_FILES(src/service/windows/resources.rc)
AC_CONFIG_FILES(src/plugin/windows/resources.rc)
;;
diff --git a/pw3270-plugin-ipc.cbp b/pw3270-plugin-ipc.cbp
index 8b8aceb..71579cb 100644
--- a/pw3270-plugin-ipc.cbp
+++ b/pw3270-plugin-ipc.cbp
@@ -96,6 +96,15 @@
+
+
+
+
+
+
+
+
+
@@ -103,6 +112,10 @@
+
+
+
+
diff --git a/src/service/getproperties.c b/src/service/getproperties.c
new file mode 100644
index 0000000..d115dc6
--- /dev/null
+++ b/src/service/getproperties.c
@@ -0,0 +1,53 @@
+/*
+ * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
+ * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
+ * aplicativos mainframe. Registro no INPI sob o nome G3270.
+ *
+ * Copyright (C) <2008>
+ *
+ * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
+ * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
+ * Free Software Foundation.
+ *
+ * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
+ * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
+ * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
+ * obter mais detalhes.
+ *
+ * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
+ * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
+ * St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Este programa está nomeado como getproperties.c e possui - linhas de código.
+ *
+ * Referências:
+ *
+ * https://github.com/joprietoe/gdbus/blob/master/gdbus-example-server.c
+ * https://github.com/bratsche/glib/blob/master/gio/tests/gdbus-example-export.c
+ *
+ * Contatos:
+ *
+ * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
+ * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
+ *
+ */
+
+#include
+#include
+#include
+#include
+
+GVariant * service_get_property(GObject *object, const gchar *property_name, GError **error) {
+
+ debug("%s",__FUNCTION__);
+
+ g_set_error (error,
+ G_IO_ERROR,
+ G_IO_ERROR_NOT_FOUND,
+ "Can't find any property named %s", property_name
+ );
+
+ return NULL;
+
+}
+
diff --git a/src/service/linux/start.c b/src/service/linux/start.c
new file mode 100644
index 0000000..965fbcd
--- /dev/null
+++ b/src/service/linux/start.c
@@ -0,0 +1,98 @@
+/*
+ * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
+ * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
+ * aplicativos mainframe. Registro no INPI sob o nome G3270.
+ *
+ * Copyright (C) <2008>
+ *
+ * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
+ * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
+ * Free Software Foundation.
+ *
+ * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
+ * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
+ * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
+ * obter mais detalhes.
+ *
+ * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
+ * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
+ * St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Este programa está nomeado como start.c e possui - linhas de código.
+ *
+ * Referências:
+ *
+ * https://github.com/joprietoe/gdbus/blob/master/gdbus-example-server.c
+ * https://github.com/bratsche/glib/blob/master/gio/tests/gdbus-example-export.c
+ *
+ * Contatos:
+ *
+ * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
+ *
+ */
+
+#include "../private.h"
+
+#define PW3270_SERVICE_DBUS_SERVICE_PATH "/br/com/bb/tn3270/service"
+#define PW3270_SERVICE_DBUS_SERVICE "br.com.bb.tn3270.service"
+#define PW3270_SERVICE_DBUS_SERVICE_INTERFACE "br.com.bb.tn3270.service"
+
+static const gchar introspection_xml[] =
+ ""
+ " "
+ " "
+ " "
+ "";
+
+static GDBusNodeInfo *introspection_data = NULL;
+static guint owner_id = 0;
+
+static void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) {
+
+ static const GDBusInterfaceVTable interface_vtable = {
+ service_method_call,
+ service_get_property,
+ service_set_property
+ };
+
+ guint registration_id;
+
+
+ registration_id = g_dbus_connection_register_object (connection,
+ PW3270_SERVICE_DBUS_SERVICE_PATH,
+ introspection_data->interfaces[0],
+ &interface_vtable,
+ NULL, /* user_data */
+ NULL, /* user_data_free_func */
+ NULL); /* GError** */
+ g_assert (registration_id > 0);
+
+}
+
+static void on_name_acquired(GDBusConnection *connection, const gchar *name, gpointer user_data) {
+
+ g_message("Acquired %s",name);
+
+}
+
+static void on_name_lost (GDBusConnection *connection, const gchar *name, gpointer user_data) {
+ g_message("Lost %s",name);
+ g_main_loop_quit(NULL);
+}
+
+void service_start(void) {
+
+ introspection_data = g_dbus_node_info_new_for_xml(introspection_xml, NULL);
+
+ owner_id = g_bus_own_name (G_BUS_TYPE_SESSION,
+ PW3270_SERVICE_DBUS_SERVICE,
+ G_BUS_NAME_OWNER_FLAGS_NONE,
+ on_bus_acquired,
+ on_name_acquired,
+ on_name_lost,
+ NULL,
+ NULL);
+
+
+}
+
diff --git a/src/service/methods.c b/src/service/methods.c
new file mode 100644
index 0000000..f0d8869
--- /dev/null
+++ b/src/service/methods.c
@@ -0,0 +1,50 @@
+/*
+ * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
+ * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
+ * aplicativos mainframe. Registro no INPI sob o nome G3270.
+ *
+ * Copyright (C) <2008>
+ *
+ * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
+ * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
+ * Free Software Foundation.
+ *
+ * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
+ * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
+ * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
+ * obter mais detalhes.
+ *
+ * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
+ * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
+ * St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Este programa está nomeado como methods.c e possui - linhas de código.
+ *
+ * Referências:
+ *
+ * https://github.com/joprietoe/gdbus/blob/master/gdbus-example-server.c
+ * https://github.com/bratsche/glib/blob/master/gio/tests/gdbus-example-export.c
+ *
+ * Contatos:
+ *
+ * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
+ * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
+ *
+ */
+
+#include
+#include
+#include
+#include
+#include
+
+GVariant * service_method_call(GObject *object, const gchar *method_name, GVariant *parameters, GError **error) {
+
+ g_set_error (error,
+ G_IO_ERROR,
+ G_IO_ERROR_NOT_FOUND,
+ "Can't find any method named %s", method_name
+ );
+
+ return NULL;
+}
diff --git a/src/service/private.h b/src/service/private.h
index b47b2f5..d55223b 100644
--- a/src/service/private.h
+++ b/src/service/private.h
@@ -33,9 +33,6 @@
#define ERROR_DOMAIN g_quark_from_static_string(PACKAGE_NAME)
- #define PW3270_SERVICE_DBUS_SERVICE_PATH "/br/com/bb/pw3270/service"
- #define PW3270_SERVICE_DBUS_SERVICE "br.com.bb.pw3270.service"
-
#include
#include
#include
@@ -52,6 +49,11 @@
typedef struct _session session;
typedef struct _sessionClass sessionClass;
+ G_GNUC_INTERNAL void service_start(void);
+ G_GNUC_INTERNAL GVariant * service_method_call(GObject *object, const gchar *method_name, GVariant *parameters, GError **error);
+ G_GNUC_INTERNAL GVariant * service_get_property(GObject *object, const gchar *property_name, GError **error);
+ G_GNUC_INTERNAL gboolean service_set_property(GObject *object, const gchar *property_name, GVariant *value, GError **error);
+
G_END_DECLS
diff --git a/src/service/service.c b/src/service/service.c
index 64c12b2..f6e9eca 100644
--- a/src/service/service.c
+++ b/src/service/service.c
@@ -153,6 +153,8 @@ int main(int argc, char *argv[]) {
}
#endif // _WIN32
+ service_start();
+
g_print("%s starts\n",argv[0]);
main_loop = g_main_loop_new(NULL, FALSE);
diff --git a/src/service/setproperties.c b/src/service/setproperties.c
new file mode 100644
index 0000000..ca208e7
--- /dev/null
+++ b/src/service/setproperties.c
@@ -0,0 +1,53 @@
+/*
+ * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
+ * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
+ * aplicativos mainframe. Registro no INPI sob o nome G3270.
+ *
+ * Copyright (C) <2008>
+ *
+ * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
+ * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
+ * Free Software Foundation.
+ *
+ * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
+ * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
+ * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
+ * obter mais detalhes.
+ *
+ * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
+ * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
+ * St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Este programa está nomeado como main.c e possui - linhas de código.
+ *
+ * Referências:
+ *
+ * https://github.com/joprietoe/gdbus/blob/master/gdbus-example-server.c
+ * https://github.com/bratsche/glib/blob/master/gio/tests/gdbus-example-export.c
+ *
+ * Contatos:
+ *
+ * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
+ * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
+ *
+ */
+
+#include
+#include
+#include
+#include
+
+gboolean service_set_property(GObject *object, const gchar *property_name, GVariant *value, GError **error) {
+
+ debug("%s",__FUNCTION__);
+
+ /*
+ g_set_error (error,
+ G_IO_ERROR,
+ G_IO_ERROR_NOT_FOUND,
+ "Can't find any property named %s", property_name
+ );
+ */
+
+ return FALSE;
+}
diff --git a/src/service/windows/resources.rc.in b/src/service/windows/resources.rc.in
new file mode 100644
index 0000000..2c53e1c
--- /dev/null
+++ b/src/service/windows/resources.rc.in
@@ -0,0 +1,29 @@
+#include
+
+VS_VERSION_INFO VERSIONINFO
+FILEVERSION @PACKAGE_MAJOR_VERSION@,@PACKAGE_MINOR_VERSION@,@PACKAGE_MAJOR_RELEASE@,0
+PRODUCTVERSION @PACKAGE_MAJOR_VERSION@,@PACKAGE_MINOR_VERSION@,@PACKAGE_MAJOR_RELEASE@,0
+
+BEGIN
+
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "080904E4"
+ BEGIN
+ VALUE "FileDescription", "@PACKAGE_NAME@ IPC Service\0"
+ VALUE "CompanyName", "Banco do Brasil S/A.\0"
+ VALUE "FileVersion", "@WIN32_VERSION@\0"
+ VALUE "LegalCopyright", "(C) 2017 Banco do Brasil S/A. All Rights Reserved\0"
+ VALUE "OriginalFilename", "ipc3270@DLLEXT@\0"
+ VALUE "ProductName", "@PACKAGE_NAME@\0"
+ VALUE "ProductVersion", "@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@.@PACKAGE_MAJOR_RELEASE@.0\0"
+ END
+ END
+
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x809, 0x04E4
+ END
+
+END
+
diff --git a/testscripts/introspect-plugin.sh b/testscripts/introspect-plugin.sh
new file mode 100755
index 0000000..f4860f1
--- /dev/null
+++ b/testscripts/introspect-plugin.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+gdbus \
+ introspect \
+ --session \
+ --dest=br.com.bb.pw3270.a \
+ --object-path=/br/com/bb/tn3270
+
diff --git a/testscripts/introspect-service.sh b/testscripts/introspect-service.sh
new file mode 100755
index 0000000..fe6136d
--- /dev/null
+++ b/testscripts/introspect-service.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+gdbus \
+ introspect \
+ --session \
+ --dest=br.com.bb.tn3270.service \
+ --object-path=/br/com/bb/tn3270/service
+
diff --git a/testscripts/introspect.sh b/testscripts/introspect.sh
deleted file mode 100755
index f4860f1..0000000
--- a/testscripts/introspect.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-gdbus \
- introspect \
- --session \
- --dest=br.com.bb.pw3270.a \
- --object-path=/br/com/bb/tn3270
-
--
libgit2 0.21.2