From 3dbb6d06549db743bfcc76ec3e64841e1cdb0038 Mon Sep 17 00:00:00 2001 From: "Michael J. Chudobiak" Date: Thu, 19 Jul 2012 08:52:13 -0400 Subject: initial commit --- build/CMakeCache.txt | 391 +++++++++++++++++++++++++++++++++++++++++++++++++++ instr-client.c.orig | 143 +++++++++++++++++++ instr-daemon.c.orig | 273 +++++++++++++++++++++++++++++++++++ response.c.orig | 109 ++++++++++++++ response.h.orig | 18 +++ signalobject.c.orig | 38 +++++ signalobject.h.orig | 44 ++++++ 7 files changed, 1016 insertions(+) create mode 100644 build/CMakeCache.txt create mode 100644 instr-client.c.orig create mode 100644 instr-daemon.c.orig create mode 100644 response.c.orig create mode 100644 response.h.orig create mode 100644 signalobject.c.orig create mode 100644 signalobject.h.orig diff --git a/build/CMakeCache.txt b/build/CMakeCache.txt new file mode 100644 index 0000000..4b84043 --- /dev/null +++ b/build/CMakeCache.txt @@ -0,0 +1,391 @@ +# This is the CMakeCache file. +# For build in directory: /fileserver2/home/mjc/git/Instrument/build +# It was generated by CMake: /usr/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUI's for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or +// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel. +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//CXX compiler. +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//Flags used by the compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the compiler during release minsize builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds (/MD /Ob1 /Oi +// /Ot /Oy /Gs will produce slightly less optimized but smaller +// files). +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the compiler during Release with Debug Info builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g + +//C compiler. +CMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc + +//Flags used by the compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the compiler during release minsize builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds (/MD /Ob1 /Oi +// /Ot /Oy /Gs will produce slightly less optimized but smaller +// files). +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the compiler during Release with Debug Info builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g + +//Flags used by the linker. +CMAKE_EXE_LINKER_FLAGS:STRING=' ' + +//Flags used by the linker during debug builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/gmake + +//Flags used by the linker during the creation of modules. +CMAKE_MODULE_LINKER_FLAGS:STRING=' ' + +//Flags used by the linker during debug builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=glib-sock-serv + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Flags used by the linker during the creation of dll's. +CMAKE_SHARED_LINKER_FLAGS:STRING=' ' + +//Flags used by the linker during debug builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If true, cmake will use relative paths in makefiles and projects. +CMAKE_USE_RELATIVE_PATHS:BOOL=OFF + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Path to a library. +GIO_LIBRARY:FILEPATH=/usr/lib64/libgio-2.0.so + +//Path to a file. +GLIB_CONFIG_INCLUDE_DIR:PATH=/usr/lib64/glib-2.0/include + +//Path to a file. +GLIB_INCLUDE_DIR:PATH=/usr/include/glib-2.0 + +//Path to a library. +GLIB_LIBRARIES:FILEPATH=/usr/lib64/libglib-2.0.so + +//pkg-config executable +PKG_CONFIG_EXECUTABLE:FILEPATH=/usr/bin/pkg-config + +//Value Computed by CMake +glib-sock-serv_BINARY_DIR:STATIC=/fileserver2/home/mjc/git/Instrument/build + +//Value Computed by CMake +glib-sock-serv_SOURCE_DIR:STATIC=/fileserver2/home/mjc/git/Instrument + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_BUILD_TOOL +CMAKE_BUILD_TOOL-ADVANCED:INTERNAL=1 +//What is the target build tool cmake is generating for. +CMAKE_BUILD_TOOL:INTERNAL=/usr/bin/gmake +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/fileserver2/home/mjc/git/Instrument/build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=2 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=8 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=8 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +CMAKE_CXX_COMPILER_WORKS:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +CMAKE_C_COMPILER_WORKS:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//Result of TRY_COMPILE +CMAKE_DETERMINE_CXX_ABI_COMPILED:INTERNAL=TRUE +//Result of TRY_COMPILE +CMAKE_DETERMINE_C_ABI_COMPILED:INTERNAL=TRUE +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/usr/bin/ccmake +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Start directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/fileserver2/home/mjc/git/Instrument +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_LOCAL_GENERATORS:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_USE_RELATIVE_PATHS +CMAKE_USE_RELATIVE_PATHS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//Details about finding PkgConfig +FIND_PACKAGE_MESSAGE_DETAILS_PkgConfig:INTERNAL=[/usr/bin/pkg-config][v0.25()] +//ADVANCED property for variable: GIO_LIBRARY +GIO_LIBRARY-ADVANCED:INTERNAL=1 +GIO_PKGCONF_CFLAGS:INTERNAL=-pthread;-I/usr/include/glib-2.0;-I/usr/lib64/glib-2.0/include +GIO_PKGCONF_CFLAGS_I:INTERNAL= +GIO_PKGCONF_CFLAGS_OTHER:INTERNAL=-pthread +GIO_PKGCONF_FOUND:INTERNAL=1 +GIO_PKGCONF_INCLUDEDIR:INTERNAL=/usr/include +GIO_PKGCONF_INCLUDE_DIRS:INTERNAL=/usr/include/glib-2.0;/usr/lib64/glib-2.0/include +GIO_PKGCONF_LDFLAGS:INTERNAL=-lgio-2.0;-lgobject-2.0;-lglib-2.0 +GIO_PKGCONF_LDFLAGS_OTHER:INTERNAL= +GIO_PKGCONF_LIBDIR:INTERNAL=/usr/lib64 +GIO_PKGCONF_LIBRARIES:INTERNAL=gio-2.0;gobject-2.0;glib-2.0 +GIO_PKGCONF_LIBRARY_DIRS:INTERNAL= +GIO_PKGCONF_LIBS:INTERNAL= +GIO_PKGCONF_LIBS_L:INTERNAL= +GIO_PKGCONF_LIBS_OTHER:INTERNAL= +GIO_PKGCONF_LIBS_PATHS:INTERNAL= +GIO_PKGCONF_PREFIX:INTERNAL=/usr +GIO_PKGCONF_STATIC_CFLAGS:INTERNAL=-pthread;-I/usr/include/glib-2.0;-I/usr/lib64/glib-2.0/include +GIO_PKGCONF_STATIC_CFLAGS_I:INTERNAL= +GIO_PKGCONF_STATIC_CFLAGS_OTHER:INTERNAL=-pthread +GIO_PKGCONF_STATIC_INCLUDE_DIRS:INTERNAL=/usr/include/glib-2.0;/usr/lib64/glib-2.0/include +GIO_PKGCONF_STATIC_LDFLAGS:INTERNAL=-pthread;-lgio-2.0;-lz;-lresolv;-lgmodule-2.0;-ldl;-lgobject-2.0;-lffi;-lglib-2.0;-lrt +GIO_PKGCONF_STATIC_LDFLAGS_OTHER:INTERNAL= +GIO_PKGCONF_STATIC_LIBDIR:INTERNAL= +GIO_PKGCONF_STATIC_LIBRARIES:INTERNAL=gio-2.0;z;resolv;gmodule-2.0;dl;gobject-2.0;ffi;glib-2.0;rt +GIO_PKGCONF_STATIC_LIBRARY_DIRS:INTERNAL= +GIO_PKGCONF_STATIC_LIBS:INTERNAL= +GIO_PKGCONF_STATIC_LIBS_L:INTERNAL= +GIO_PKGCONF_STATIC_LIBS_OTHER:INTERNAL= +GIO_PKGCONF_STATIC_LIBS_PATHS:INTERNAL= +GIO_PKGCONF_VERSION:INTERNAL=2.32.3 +GIO_PKGCONF_gio-2.0_INCLUDEDIR:INTERNAL= +GIO_PKGCONF_gio-2.0_LIBDIR:INTERNAL= +GIO_PKGCONF_gio-2.0_PREFIX:INTERNAL= +GIO_PKGCONF_gio-2.0_VERSION:INTERNAL= +//ADVANCED property for variable: GLIB_CONFIG_INCLUDE_DIR +GLIB_CONFIG_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//glib-2.0 found +GLIB_FOUND:INTERNAL=TRUE +//ADVANCED property for variable: GLIB_INCLUDE_DIR +GLIB_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: GLIB_LIBRARIES +GLIB_LIBRARIES-ADVANCED:INTERNAL=1 +GLIB_PKG_CFLAGS:INTERNAL=-I/usr/include/glib-2.0;-I/usr/lib64/glib-2.0/include +GLIB_PKG_CFLAGS_I:INTERNAL= +GLIB_PKG_CFLAGS_OTHER:INTERNAL= +GLIB_PKG_FOUND:INTERNAL=1 +GLIB_PKG_INCLUDEDIR:INTERNAL=/usr/include +GLIB_PKG_INCLUDE_DIRS:INTERNAL=/usr/include/glib-2.0;/usr/lib64/glib-2.0/include +GLIB_PKG_LDFLAGS:INTERNAL=-lglib-2.0 +GLIB_PKG_LDFLAGS_OTHER:INTERNAL= +GLIB_PKG_LIBDIR:INTERNAL=/usr/lib64 +GLIB_PKG_LIBRARIES:INTERNAL=glib-2.0 +GLIB_PKG_LIBRARY_DIRS:INTERNAL= +GLIB_PKG_LIBS:INTERNAL= +GLIB_PKG_LIBS_L:INTERNAL= +GLIB_PKG_LIBS_OTHER:INTERNAL= +GLIB_PKG_LIBS_PATHS:INTERNAL= +GLIB_PKG_PREFIX:INTERNAL=/usr +GLIB_PKG_STATIC_CFLAGS:INTERNAL=-I/usr/include/glib-2.0;-I/usr/lib64/glib-2.0/include +GLIB_PKG_STATIC_CFLAGS_I:INTERNAL= +GLIB_PKG_STATIC_CFLAGS_OTHER:INTERNAL= +GLIB_PKG_STATIC_INCLUDE_DIRS:INTERNAL=/usr/include/glib-2.0;/usr/lib64/glib-2.0/include +GLIB_PKG_STATIC_LDFLAGS:INTERNAL=-pthread;-lglib-2.0;-lrt +GLIB_PKG_STATIC_LDFLAGS_OTHER:INTERNAL=-pthread +GLIB_PKG_STATIC_LIBDIR:INTERNAL= +GLIB_PKG_STATIC_LIBRARIES:INTERNAL=glib-2.0;rt +GLIB_PKG_STATIC_LIBRARY_DIRS:INTERNAL= +GLIB_PKG_STATIC_LIBS:INTERNAL= +GLIB_PKG_STATIC_LIBS_L:INTERNAL= +GLIB_PKG_STATIC_LIBS_OTHER:INTERNAL= +GLIB_PKG_STATIC_LIBS_PATHS:INTERNAL= +GLIB_PKG_VERSION:INTERNAL=2.32.3 +GLIB_PKG_glib-2.0_INCLUDEDIR:INTERNAL= +GLIB_PKG_glib-2.0_LIBDIR:INTERNAL= +GLIB_PKG_glib-2.0_PREFIX:INTERNAL= +GLIB_PKG_glib-2.0_VERSION:INTERNAL= +//ADVANCED property for variable: PKG_CONFIG_EXECUTABLE +PKG_CONFIG_EXECUTABLE-ADVANCED:INTERNAL=1 +__pkg_config_checked_GIO_PKGCONF:INTERNAL=1 +__pkg_config_checked_GLIB_PKG:INTERNAL=1 + diff --git a/instr-client.c.orig b/instr-client.c.orig new file mode 100644 index 0000000..d88f654 --- /dev/null +++ b/instr-client.c.orig @@ -0,0 +1,143 @@ +#include +#include +#include +#include "response.h" +#include +#include + +static int port = 3333; +#define BUFSIZE 1024 + +GMainContext *context=NULL; +GMainLoop *mainLoop=NULL; +GSocketConnection * connection = NULL; +GSocketClient * client = NULL; + +char exitTokens[5][7] = {"quit", "exit", "logout", "logoff", "local"}; + +//helper function to nicely terminate the client +static void terminate(char *message, int exitCode) +{ + g_object_unref(client); + g_object_unref(connection); + if (message) { + g_print("%s\n", message); + } + exit(exitCode); +} + +//a sort of strncmp but with \n or \r exception +static gboolean Matches(char *src, char* dst, gssize size) +{ + for(; *src != '\0', (size--)>0; src++) { + if(g_ascii_toupper(*src) != g_ascii_toupper(*dst)) { + return FALSE; + } + dst++; + } + for(; *dst != '\0'; dst++) + if (*dst != '\r' && *dst != '\n') { + return FALSE; + } + + return TRUE; +} + + +//GIOChannel callback +static gboolean +stdinAvailable (GIOChannel *source, GIOCondition condition, gpointer data) +{ + char tmp[BUFSIZE]; + memset(tmp,0,BUFSIZE); + int size = read(0, tmp, BUFSIZE); + if(size<=0) { + return TRUE; + } + + //test if we have an exit word + int idx=0; + for(idx=0; idx "); + return TRUE; +} + +int main(int argc, char** argv) +{ + /* create a new connection */ + g_type_init (); + + GOutputStream *out; + GInputStream *in; + GError* error = NULL; + GIOChannel* stdinChannel = NULL; + client = g_socket_client_new(); + GSource *source = NULL; + + /* connect to the host */ + connection = g_socket_client_connect_to_host (client, + (gchar*)"localhost", + port, + NULL, + &error); + + if (error != NULL) { + g_print("Could not connect to server on port %d\n", port); + g_object_unref(client); + return -1; + } + g_print("> "); + + + //register Pollable sources + out = g_io_stream_get_output_stream (G_IO_STREAM (connection)); + in = g_io_stream_get_input_stream (G_IO_STREAM (connection)); + GSource *outSource = NULL; + GSource *inSource = g_pollable_input_stream_create_source((struct GPollableInputStream*)in, NULL); + outSource = g_pollable_output_stream_create_source((struct GPollableOutputStream*)out, NULL); + + //register stdin channel + stdinChannel = g_io_channel_unix_new(0); + if(stdinChannel == NULL) { + terminate("Could not open STDIN channel", -2); + } + + //attach the sources + g_io_add_watch(stdinChannel, G_IO_IN, stdinAvailable, (struct GPollableOutputStream*)out); + g_source_set_callback(inSource, cbServerInput, (GPollableOutputStream*)in, NULL); + + g_source_attach(inSource, NULL); + g_main_loop_run (g_main_loop_new (NULL, FALSE)); + return 0; +} \ No newline at end of file diff --git a/instr-daemon.c.orig b/instr-daemon.c.orig new file mode 100644 index 0000000..0f07d16 --- /dev/null +++ b/instr-daemon.c.orig @@ -0,0 +1,273 @@ +#include "socket-common.h" +#include "response.h" +#include +#include + +#define STDIN_BUF_SIZE 1024 + +int port=3333; //port to listen +int connections=0; +int maxConn=16; //max connections - 16 + +guint signalMyCb; //signal to register which is used in cbClientInput(), step 10 from requirements +GAsyncQueue** stdinQueue=NULL; +GThread **peers; //actual connected peers + + +//GIOChannel callback for stdin +static gboolean +stdinAvailable (GIOChannel *source, GIOCondition condition, gpointer data) +{ + static char* buffer=NULL; + static gint64 allocated=0; + GAsyncQueue* queue=NULL; + + //temporary buffer to read from stdin + char tmp[STDIN_BUF_SIZE]; + memset(tmp,0,STDIN_BUF_SIZE); + + int size = read(0, tmp, STDIN_BUF_SIZE); + if(size<=0) return TRUE; + + //fix for \n or \r sending + if(size ==1) + if(tmp[0] == '\r' || tmp[0] == '\n') return TRUE; + + //the termination characters + if(!strncmp(tmp, "..", size-1)) + { + //final reallocation of the buffer to accomodate the whole string + buffer=realloc(buffer,allocated+1); + buffer[allocated] = '\0'; + int idx=0; + + g_print_debug("Got the buffer: \"%s\", tid: %p\n", buffer, g_thread_self()); + + if (tmp[0] == '.' && tmp[1] == '.') //fix for single dot sending + { + int count=0; + + //send the final buffer to the queue + for(count=0; count maxConn) + { + g_print_debug("Connection closed. Max reached\n"); + return TRUE; + } + connections++; + g_print_debug("Incoming connection\n"); + return FALSE; +} + + +//thread connection handler +static gboolean +handler (GThreadedSocketService *service, + GSocketConnection *connection, + GSocketListener *listener, + gpointer user_data) +{ + + + GOutputStream *out; + GInputStream *in; + gssize size; + + + out = g_io_stream_get_output_stream (G_IO_STREAM (connection)); + in = g_io_stream_get_input_stream (G_IO_STREAM (connection)); + + g_print_debug("Handling, connections: %d\n", connections); + + //register ourselves in the peers vector, use the index obtained in the stdinQueue + //should not get -1 + GThread* self = g_thread_self(); + int index=pushIndex(self); + + GSource *outSource = NULL; + GSource *inSource = g_pollable_input_stream_create_source((struct GPollableInputStream*)in, NULL); + + //get a reference to the async queue + GAsyncQueue *queue = g_async_queue_ref(stdinQueue[index]); + + //input from client + g_source_set_callback(inSource, cbClientInput, (GPollableOutputStream*)out, NULL); + g_source_attach(inSource, NULL); + + //keep thread alive, every 1000 microseconds + while(g_source_is_destroyed(inSource)==FALSE) + { + g_usleep(1000); + gint elems; + + //verify our queue length and activate/deactivate the "out" Source for this connection + //if we don't do this, the out Source will be scheduled frequently and will busy loop + if((elems=g_async_queue_length(queue))>0) + { + if(outSource == NULL) + { + + outSource = g_pollable_output_stream_create_source((struct GPollableOutputStream*)out, NULL); + g_source_set_callback(outSource, cbClientOutput, queue, NULL); + g_source_attach(outSource, NULL); + } + else + { + g_source_destroy(outSource); + g_source_unref(outSource); + outSource = NULL; + } + + } + else + { + if(outSource!= NULL && !g_source_is_destroyed(outSource)) + { + g_print_debug("Destroy source\n"); + g_source_destroy(outSource); + g_source_unref(outSource); + outSource = NULL; //added + } + } + //end of activate/deactivate + } + + //reached the end of the thread + if (g_output_stream_close(out, NULL, NULL) == FALSE) + g_print_debug("out not closed\n"); + if (g_input_stream_close(in, NULL, NULL) == FALSE) + g_print_debug("in not closed\n"); + + g_print_debug("Thread end\n"); + connections--; //keep track of connections + g_async_queue_unref(queue); //unreference the queue + pullIndex(g_thread_self()); //unregister from the peers vector + return TRUE; +} + +int main(int argc, char **argv) +{ + GSocketService *service = NULL; + GError *error = NULL; + GIOChannel* stdinChannel = NULL; + + g_type_init (); + + //register stdin channel + stdinChannel = g_io_channel_unix_new(0); + if(stdinChannel == NULL) { g_printerr("No io channel\n"); exit(-1); } + g_io_add_watch(stdinChannel, G_IO_IN, stdinAvailable, NULL); + int idx=0; + + //allocate a maxConn queue on the heap + stdinQueue = malloc(sizeof(struct GAsyncQueue*) * maxConn); + //allocate peers vector on the heap + peers = malloc(sizeof(GThread*) * maxConn); + for(idx=0;idxmessage); + free(stdinQueue); + free(peers); + return 1; + } + + //init the signal signalMyCb + initSignals(&signalMyCb); + + g_print_debug("Server listening on port %d\n", port); + g_signal_connect (service, "run", G_CALLBACK (handler), NULL); + g_signal_connect (service, "incoming", G_CALLBACK(incomingConnection), NULL); + + g_main_loop_run (g_main_loop_new (NULL, FALSE)); + free(stdinQueue); + free(peers); + + return 0; + +} diff --git a/response.c.orig b/response.c.orig new file mode 100644 index 0000000..93d38b3 --- /dev/null +++ b/response.c.orig @@ -0,0 +1,109 @@ +#include "response.h" +#include "socket-common.h" +#include + +//RESPONSE related functions from the server + +extern guint signalMyCb; //signal id +extern GAsyncQueue* stdinQueue; //our queue +SignalObject* signalObject; //the signal object which registered the signal id + +//write output to client +static gssize writeOutput(GPollableOutputStream* stream, gchar* data, gssize size); + +//callback for client output, this is where the queue messages are sent to the client +gboolean cbClientOutput(gpointer data, gpointer additional) +{ + GPollableOutputStream* outStream = (GPollableOutputStream*)data; + GAsyncQueue* queue = (GAsyncQueue*)additional; + if(g_async_queue_length(queue) <= 0) return FALSE; + + gpointer elem; + g_print_debug("Try pop\n"); + //try to pop an element from the queue + elem=g_async_queue_try_pop(queue); + g_print_debug("after pop\n"); + if(elem) + { + char* buf = (char*)elem; + g_print_debug("Extracted %s\n", buf); + gssize size = strlen(buf); + gssize written = 0; + + written=g_pollable_output_stream_write_nonblocking(outStream, buf, size+1, NULL, NULL); + if(written==-1) g_printerr("Could not write to client\n"); + + //free the alloc'ed memory + free(buf); + } + + return FALSE; +} + +//the client input callback +gboolean cbClientInput(gpointer data, gpointer additional) +{ + + char buffer[1024]; + gssize size=0; + memset(buffer,0,1024); + + GPollableInputStream* inStream = (GPollableInputStream*)data; + GPollableOutputStream* outStream = (GPollableOutputStream*)additional; + + size=g_pollable_input_stream_read_nonblocking(inStream, buffer, 1024, NULL, NULL); + if(size <=0 || size == G_IO_ERROR_WOULD_BLOCK) { g_print_debug("Got: %d\n", size); return FALSE; } + + //emit a signal which calls the echoCb function + SignalObjectClass myStruct; + myStruct.instance = NULL; + myStruct.cb = writeOutput; + myStruct.data = buffer; + myStruct.size = size; + myStruct.inStream = inStream; + myStruct.outStream = outStream; + g_signal_emit(signalObject, signalMyCb, 0, &myStruct, NULL); + + return TRUE; +} + +//write output to client +static gssize writeOutput(GPollableOutputStream* stream, gchar* data, gssize size) +{ + gssize what=0; + what=g_pollable_output_stream_write_nonblocking(stream, data, size, NULL, NULL); + if(what < 0 || what == G_IO_ERROR_WOULD_BLOCK) { return -1; } + return what; +} + +//initialize the signals +void initSignals(guint *signal) +{ + *signal = g_signal_new("runEchoService", SIGNAL_OBJECT_TYPE, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, + g_cclosure_marshal_VOID__POINTER , G_TYPE_NONE, 1, G_TYPE_POINTER); + + signalObject = g_object_new(SIGNAL_OBJECT_TYPE, NULL); + g_signal_connect (signalObject, "runEchoService", G_CALLBACK (echoCb), NULL); +} + +//echo 3 times and send to client one time +void echoCb(gpointer instance, GObject *arg1, gpointer user_data) +{ + static GStaticMutex mutex = G_STATIC_MUTEX_INIT; + g_static_mutex_lock (&mutex); + SignalObjectClass *data = (SignalObjectClass*)arg1; + GPollableOutputStream* stream = (GPollableOutputStream*)data->outStream; + gchar* str = data->data; + gssize len = data->size; + gssize written = 0; + + gchar* upper = g_ascii_strup(str, len); + int i; + for(i=0; i<3; i++) g_print("%s\n", upper); + //send response back to client + + written = data->cb(stream, upper, len); + + g_free(upper); + g_static_mutex_unlock (&mutex); +} diff --git a/response.h.orig b/response.h.orig new file mode 100644 index 0000000..7b6301a --- /dev/null +++ b/response.h.orig @@ -0,0 +1,18 @@ +#include +#include +#include +#include "signalobject.h" + + +typedef struct _streamStruct +{ + GPollableInputStream* in; + GPollableOutputStream* out; +} streamStruct; + +void echoCb(gpointer instance, GObject *arg1, gpointer user_data); + +gboolean cbClientInput(gpointer data, gpointer additional); +gboolean cbClientOutput(gpointer data, gpointer additional); +void initSignals(guint *signal); +void echoCb(gpointer instance, GObject *arg1, gpointer user_data); \ No newline at end of file diff --git a/signalobject.c.orig b/signalobject.c.orig new file mode 100644 index 0000000..68003fe --- /dev/null +++ b/signalobject.c.orig @@ -0,0 +1,38 @@ +#include "signalobject.h" + +G_DEFINE_TYPE (SignalObject, signal_object, G_TYPE_OBJECT); + +static GObject * +signal_object_constructor (GType gtype, + guint n_properties, + GObjectConstructParam *properties) +{ + GObject *obj; + + { + /* Always chain up to the parent constructor */ + obj = G_OBJECT_CLASS (signal_object_parent_class)->constructor (gtype, n_properties, properties); + } + + /* update the object state depending on constructor properties */ + + return obj; +} + + +static void +signal_object_class_init (SignalObjectClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->constructor = signal_object_constructor; +} + + +static void +signal_object_init (SignalObject *self) +{ + /* initialize the object */ +} + + diff --git a/signalobject.h.orig b/signalobject.h.orig new file mode 100644 index 0000000..8863086 --- /dev/null +++ b/signalobject.h.orig @@ -0,0 +1,44 @@ +#ifndef SIGNAL_OBJECT_H +#define SIGNAL_OBJECT_H + +#include +#include +#include + + +#define SIGNAL_OBJECT_TYPE (signal_object_get_type ()) +/* +#define MAMAN_BAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAMAN_TYPE_BAR, MamanBar)) +#define MAMAN_IS_BAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAMAN_TYPE_BAR)) +#define MAMAN_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MAMAN_TYPE_BAR, MamanBarClass)) +#define MAMAN_IS_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MAMAN_TYPE_BAR)) +#define MAMAN_BAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MAMAN_TYPE_BAR, MamanBarClass)) +*/ + +typedef struct _SignalObject SignalObject; +typedef struct _SignalObjectClass SignalObjectClass; + + +struct _SignalObject +{ + GObject parentInstance; + gpointer instance; + gssize (*cb)(GPollableOutputStream* stream, gchar* data, gssize size); + GPollableInputStream* inStream; + GPollableOutputStream* outStream; + gchar* data; + gssize size; +}; + +struct _SignalObjectClass +{ + GObjectClass parent_class; + gpointer instance; + gssize (*cb)(GPollableOutputStream* stream, gchar* data, gssize size); + GPollableInputStream* inStream; + GPollableOutputStream* outStream; + gchar* data; + gssize size; +}; + +#endif -- cgit