--- /dev/null
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# Relative path conversion top directories.
+SET(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/tripzero/src/automotive-message-broker")
+SET(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/tripzero/src/automotive-message-broker/build")
+
+# Force unix paths in dependencies.
+SET(CMAKE_FORCE_UNIX_PATHS 1)
+
+
+# The C and CXX include file regular expressions for this directory.
+SET(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
+SET(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
+SET(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
+SET(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})
--- /dev/null
+#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">])
+
+#IncludeRegexScan: ^.*$
+
+#IncludeRegexComplain: ^$
+
+#IncludeRegexTransform:
+
+../lib/abstractpropertytype.h
+string
+-
+sstream
+-
+stdexcept
+-
+vector
+-
+iostream
+-
+boost/any.hpp
+-
+boost/lexical_cast.hpp
+-
+boost/utility.hpp
+-
+type_traits
+-
+glib.h
+-
+list
+-
+timestamp.h
+../lib/timestamp.h
+debugout.h
+-
+boost/algorithm/string.hpp
+-
+
+../lib/abstractroutingengine.h
+sys/types.h
+-
+stdlib.h
+-
+boost/any.hpp
+-
+functional
+-
+string
+-
+time.h
+-
+vehicleproperty.h
+../lib/vehicleproperty.h
+abstractpropertytype.h
+../lib/abstractpropertytype.h
+propertyinfo.hpp
+../lib/propertyinfo.hpp
+
+../lib/abstractsink.h
+string
+-
+list
+-
+map
+-
+functional
+-
+boost/any.hpp
+-
+vehicleproperty.h
+../lib/vehicleproperty.h
+abstractpropertytype.h
+../lib/abstractpropertytype.h
+
+../lib/abstractsource.h
+string
+-
+list
+-
+boost/any.hpp
+-
+abstractsink.h
+../lib/abstractsink.h
+vehicleproperty.h
+../lib/vehicleproperty.h
+abstractroutingengine.h
+../lib/abstractroutingengine.h
+abstractpropertytype.h
+../lib/abstractpropertytype.h
+propertyinfo.hpp
+../lib/propertyinfo.hpp
+
+../lib/debugout.h
+string
+-
+iostream
+-
+fstream
+-
+sstream
+-
+stdexcept
+-
+timestamp.h
+../lib/timestamp.h
+
+../lib/listplusplus.h
+list
+-
+algorithm
+-
+
+../lib/mappropertytype.hpp
+abstractpropertytype.h
+../lib/abstractpropertytype.h
+map
+-
+debugout.h
+-
+json/json.h
+-
+
+../lib/nullptr.h
+
+../lib/propertyinfo.hpp
+abstractpropertytype.h
+../lib/abstractpropertytype.h
+list
+-
+
+../lib/timestamp.h
+
+../lib/uuidhelper.h
+uuid/uuid.h
+-
+string
+-
+
+../lib/vehicleproperty.h
+nullptr.h
+../lib/nullptr.h
+string
+-
+list
+-
+set
+-
+sstream
+-
+map
+-
+functional
+-
+abstractpropertytype.h
+../lib/abstractpropertytype.h
+mappropertytype.hpp
+../lib/mappropertytype.hpp
+boost/preprocessor/comma.hpp
+-
+
+/home/tripzero/src/automotive-message-broker/plugins/websocketsourceplugin/websocketsource.cpp
+websocketsource.h
+/home/tripzero/src/automotive-message-broker/plugins/websocketsourceplugin/websocketsource.h
+iostream
+-
+boost/assert.hpp
+-
+boost/lexical_cast.hpp
+-
+glib.h
+-
+sstream
+-
+listplusplus.h
+-
+timestamp.h
+-
+uuidhelper.h
+/home/tripzero/src/automotive-message-broker/plugins/websocketsourceplugin/uuidhelper.h
+debugout.h
+/home/tripzero/src/automotive-message-broker/plugins/websocketsourceplugin/debugout.h
+
+/home/tripzero/src/automotive-message-broker/plugins/websocketsourceplugin/websocketsource.h
+abstractsource.h
+-
+string
+-
+libwebsockets.h
+-
+
+/usr/include/glib-2.0/glib.h
+glib/galloca.h
+-
+glib/garray.h
+-
+glib/gasyncqueue.h
+-
+glib/gatomic.h
+-
+glib/gbacktrace.h
+-
+glib/gbase64.h
+-
+glib/gbitlock.h
+-
+glib/gbookmarkfile.h
+-
+glib/gbytes.h
+-
+glib/gcharset.h
+-
+glib/gchecksum.h
+-
+glib/gconvert.h
+-
+glib/gdataset.h
+-
+glib/gdate.h
+-
+glib/gdatetime.h
+-
+glib/gdir.h
+-
+glib/genviron.h
+-
+glib/gerror.h
+-
+glib/gfileutils.h
+-
+glib/ggettext.h
+-
+glib/ghash.h
+-
+glib/ghmac.h
+-
+glib/ghook.h
+-
+glib/ghostutils.h
+-
+glib/giochannel.h
+-
+glib/gkeyfile.h
+-
+glib/glist.h
+-
+glib/gmacros.h
+-
+glib/gmain.h
+-
+glib/gmappedfile.h
+-
+glib/gmarkup.h
+-
+glib/gmem.h
+-
+glib/gmessages.h
+-
+glib/gnode.h
+-
+glib/goption.h
+-
+glib/gpattern.h
+-
+glib/gpoll.h
+-
+glib/gprimes.h
+-
+glib/gqsort.h
+-
+glib/gquark.h
+-
+glib/gqueue.h
+-
+glib/grand.h
+-
+glib/gregex.h
+-
+glib/gscanner.h
+-
+glib/gsequence.h
+-
+glib/gshell.h
+-
+glib/gslice.h
+-
+glib/gslist.h
+-
+glib/gspawn.h
+-
+glib/gstrfuncs.h
+-
+glib/gstring.h
+-
+glib/gstringchunk.h
+-
+glib/gtestutils.h
+-
+glib/gthread.h
+-
+glib/gthreadpool.h
+-
+glib/gtimer.h
+-
+glib/gtimezone.h
+-
+glib/gtrashstack.h
+-
+glib/gtree.h
+-
+glib/gtypes.h
+-
+glib/gunicode.h
+-
+glib/gurifuncs.h
+-
+glib/gutils.h
+-
+glib/gvarianttype.h
+-
+glib/gvariant.h
+-
+glib/gversion.h
+-
+glib/gversionmacros.h
+-
+glib/gwin32.h
+-
+glib/deprecated/gallocator.h
+-
+glib/deprecated/gcache.h
+-
+glib/deprecated/gcompletion.h
+-
+glib/deprecated/gmain.h
+-
+glib/deprecated/grel.h
+-
+glib/deprecated/gthread.h
+-
+
+/usr/include/glib-2.0/glib/deprecated/gallocator.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/deprecated/gcache.h
+glib/glist.h
+-
+
+/usr/include/glib-2.0/glib/deprecated/gcompletion.h
+glib/glist.h
+-
+
+/usr/include/glib-2.0/glib/deprecated/gmain.h
+glib/gmain.h
+-
+
+/usr/include/glib-2.0/glib/deprecated/grel.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/deprecated/gthread.h
+glib/gthread.h
+-
+pthread.h
+-
+
+/usr/include/glib-2.0/glib/galloca.h
+glib/gtypes.h
+-
+alloca.h
+-
+alloca.h
+-
+malloc.h
+-
+
+/usr/include/glib-2.0/glib/garray.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gasyncqueue.h
+glib/gthread.h
+-
+
+/usr/include/glib-2.0/glib/gatomic.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gbacktrace.h
+glib/gtypes.h
+-
+signal.h
+-
+
+/usr/include/glib-2.0/glib/gbase64.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gbitlock.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gbookmarkfile.h
+glib/gerror.h
+-
+time.h
+-
+
+/usr/include/glib-2.0/glib/gbytes.h
+glib/gtypes.h
+-
+glib/garray.h
+-
+
+/usr/include/glib-2.0/glib/gcharset.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gchecksum.h
+glib/gtypes.h
+-
+glib/gbytes.h
+-
+
+/usr/include/glib-2.0/glib/gconvert.h
+glib/gerror.h
+-
+
+/usr/include/glib-2.0/glib/gdataset.h
+glib/gquark.h
+-
+
+/usr/include/glib-2.0/glib/gdate.h
+time.h
+-
+glib/gtypes.h
+-
+glib/gquark.h
+-
+
+/usr/include/glib-2.0/glib/gdatetime.h
+glib/gtimezone.h
+-
+
+/usr/include/glib-2.0/glib/gdir.h
+glib/gerror.h
+-
+dirent.h
+-
+
+/usr/include/glib-2.0/glib/genviron.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gerror.h
+stdarg.h
+-
+glib/gquark.h
+-
+
+/usr/include/glib-2.0/glib/gfileutils.h
+glib/gerror.h
+-
+
+/usr/include/glib-2.0/glib/ggettext.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/ghash.h
+glib/gtypes.h
+-
+glib/glist.h
+-
+
+/usr/include/glib-2.0/glib/ghmac.h
+glib/gtypes.h
+-
+gchecksum.h
+/usr/include/glib-2.0/glib/gchecksum.h
+
+/usr/include/glib-2.0/glib/ghook.h
+glib/gmem.h
+-
+
+/usr/include/glib-2.0/glib/ghostutils.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/giochannel.h
+glib/gconvert.h
+-
+glib/gmain.h
+-
+glib/gstring.h
+-
+
+/usr/include/glib-2.0/glib/gkeyfile.h
+glib/gerror.h
+-
+
+/usr/include/glib-2.0/glib/glist.h
+glib/gmem.h
+-
+glib/gnode.h
+-
+
+/usr/include/glib-2.0/glib/gmacros.h
+stddef.h
+-
+
+/usr/include/glib-2.0/glib/gmain.h
+glib/gpoll.h
+-
+glib/gslist.h
+-
+glib/gthread.h
+-
+
+/usr/include/glib-2.0/glib/gmappedfile.h
+glib/gbytes.h
+-
+glib/gerror.h
+-
+
+/usr/include/glib-2.0/glib/gmarkup.h
+stdarg.h
+-
+glib/gerror.h
+-
+glib/gslist.h
+-
+
+/usr/include/glib-2.0/glib/gmem.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gmessages.h
+stdarg.h
+-
+glib/gtypes.h
+-
+glib/gmacros.h
+-
+
+/usr/include/glib-2.0/glib/gnode.h
+glib/gmem.h
+-
+
+/usr/include/glib-2.0/glib/goption.h
+glib/gerror.h
+-
+glib/gquark.h
+-
+
+/usr/include/glib-2.0/glib/gpattern.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gpoll.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gprimes.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gqsort.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gquark.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gqueue.h
+glib/glist.h
+-
+
+/usr/include/glib-2.0/glib/grand.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gregex.h
+glib/gerror.h
+-
+glib/gstring.h
+-
+
+/usr/include/glib-2.0/glib/gscanner.h
+glib/gdataset.h
+-
+glib/ghash.h
+-
+
+/usr/include/glib-2.0/glib/gsequence.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gshell.h
+glib/gerror.h
+-
+
+/usr/include/glib-2.0/glib/gslice.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gslist.h
+glib/gmem.h
+-
+glib/gnode.h
+-
+
+/usr/include/glib-2.0/glib/gspawn.h
+glib/gerror.h
+-
+
+/usr/include/glib-2.0/glib/gstrfuncs.h
+stdarg.h
+-
+glib/gmacros.h
+-
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gstring.h
+glib/gtypes.h
+-
+glib/gunicode.h
+-
+glib/gbytes.h
+-
+glib/gutils.h
+-
+
+/usr/include/glib-2.0/glib/gstringchunk.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gtestutils.h
+glib/gmessages.h
+-
+glib/gstring.h
+-
+glib/gerror.h
+-
+glib/gslist.h
+-
+
+/usr/include/glib-2.0/glib/gthread.h
+glib/gatomic.h
+-
+glib/gerror.h
+-
+
+/usr/include/glib-2.0/glib/gthreadpool.h
+glib/gthread.h
+-
+
+/usr/include/glib-2.0/glib/gtimer.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gtimezone.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gtrashstack.h
+glib/gutils.h
+-
+
+/usr/include/glib-2.0/glib/gtree.h
+glib/gnode.h
+-
+
+/usr/include/glib-2.0/glib/gtypes.h
+glibconfig.h
+-
+glib/gmacros.h
+-
+glib/gversionmacros.h
+-
+time.h
+-
+
+/usr/include/glib-2.0/glib/gunicode.h
+glib/gerror.h
+-
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gurifuncs.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gutils.h
+glib/gtypes.h
+-
+stdarg.h
+-
+
+/usr/include/glib-2.0/glib/gvariant.h
+glib/gvarianttype.h
+-
+glib/gstring.h
+-
+glib/gbytes.h
+-
+
+/usr/include/glib-2.0/glib/gvarianttype.h
+glib/gmessages.h
+-
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gversion.h
+glib/gtypes.h
+-
+
+/usr/include/glib-2.0/glib/gversionmacros.h
+
+/usr/include/glib-2.0/glib/gwin32.h
+glib/gtypes.h
+-
+
+/usr/lib/i386-linux-gnu/glib-2.0/include/glibconfig.h
+glib/gmacros.h
+-
+limits.h
+-
+float.h
+-
+
--- /dev/null
+# The set of languages for which implicit dependencies are needed:
+SET(CMAKE_DEPENDS_LANGUAGES
+ "CXX"
+ )
+# The set of files for implicit dependencies of each language:
+SET(CMAKE_DEPENDS_CHECK_CXX
+ "/home/tripzero/src/automotive-message-broker/plugins/websocketsourceplugin/websocketsource.cpp" "/home/tripzero/src/automotive-message-broker/build/plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o"
+ )
+SET(CMAKE_CXX_COMPILER_ID "icecc")
+
+# Preprocessor definitions for this target.
+SET(CMAKE_TARGET_DEFINITIONS
+ "DBusServiceName=\"org.automotive.message.broker\""
+ "PROJECT_CODENAME=\"veyron\""
+ "PROJECT_NAME=\"automotive-message-broker\""
+ "PROJECT_QUALITY=\"alpha\""
+ "PROJECT_VERSION=\"0.11.800\""
+ )
+
+# Targets to which this target links.
+SET(CMAKE_TARGET_LINKED_INFO_FILES
+ "/home/tripzero/src/automotive-message-broker/build/lib/CMakeFiles/amb.dir/DependInfo.cmake"
+ )
+
+# The include file search paths:
+SET(CMAKE_C_TARGET_INCLUDE_PATH
+ "../lib"
+ "/usr/include/glib-2.0"
+ "/usr/lib/i386-linux-gnu/glib-2.0/include"
+ "/usr/include/json"
+ )
+SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
+SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
+SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
--- /dev/null
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The program to use to edit the cache.
+CMAKE_EDIT_COMMAND = /usr/bin/cmake-gui
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/tripzero/src/automotive-message-broker
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/tripzero/src/automotive-message-broker/build
+
+# Include any dependencies generated for this target.
+include plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/depend.make
+
+# Include the progress variables for this target.
+include plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/progress.make
+
+# Include the compile flags for this target's objects.
+include plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/flags.make
+
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/flags.make
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: ../plugins/websocketsourceplugin/websocketsource.cpp
+ $(CMAKE_COMMAND) -E cmake_progress_report /home/tripzero/src/automotive-message-broker/build/CMakeFiles $(CMAKE_PROGRESS_1)
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o"
+ cd /home/tripzero/src/automotive-message-broker/build/plugins/websocketsourceplugin && /usr/lib/icecc/bin/g++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o -c /home/tripzero/src/automotive-message-broker/plugins/websocketsourceplugin/websocketsource.cpp
+
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.i"
+ cd /home/tripzero/src/automotive-message-broker/build/plugins/websocketsourceplugin && /usr/lib/icecc/bin/g++ $(CXX_DEFINES) $(CXX_FLAGS) -E /home/tripzero/src/automotive-message-broker/plugins/websocketsourceplugin/websocketsource.cpp > CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.i
+
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.s"
+ cd /home/tripzero/src/automotive-message-broker/build/plugins/websocketsourceplugin && /usr/lib/icecc/bin/g++ $(CXX_DEFINES) $(CXX_FLAGS) -S /home/tripzero/src/automotive-message-broker/plugins/websocketsourceplugin/websocketsource.cpp -o CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.s
+
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o.requires:
+.PHONY : plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o.requires
+
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o.provides: plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o.requires
+ $(MAKE) -f plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/build.make plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o.provides.build
+.PHONY : plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o.provides
+
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o.provides.build: plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o
+
+# Object files for target websocketsourceplugin
+websocketsourceplugin_OBJECTS = \
+"CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o"
+
+# External object files for target websocketsourceplugin
+websocketsourceplugin_EXTERNAL_OBJECTS =
+
+plugins/websocketsourceplugin/websocketsourceplugin.so: plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o
+plugins/websocketsourceplugin/websocketsourceplugin.so: plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/build.make
+plugins/websocketsourceplugin/websocketsourceplugin.so: lib/libamb.so.0.11.800
+plugins/websocketsourceplugin/websocketsourceplugin.so: /usr/lib/i386-linux-gnu/libltdl.so
+plugins/websocketsourceplugin/websocketsourceplugin.so: /usr/lib/i386-linux-gnu/libuuid.so
+plugins/websocketsourceplugin/websocketsourceplugin.so: plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/link.txt
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking CXX shared module websocketsourceplugin.so"
+ cd /home/tripzero/src/automotive-message-broker/build/plugins/websocketsourceplugin && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/websocketsourceplugin.dir/link.txt --verbose=$(VERBOSE)
+
+# Rule to build all files generated by this target.
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/build: plugins/websocketsourceplugin/websocketsourceplugin.so
+.PHONY : plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/build
+
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/requires: plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o.requires
+.PHONY : plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/requires
+
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/clean:
+ cd /home/tripzero/src/automotive-message-broker/build/plugins/websocketsourceplugin && $(CMAKE_COMMAND) -P CMakeFiles/websocketsourceplugin.dir/cmake_clean.cmake
+.PHONY : plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/clean
+
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/depend:
+ cd /home/tripzero/src/automotive-message-broker/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/tripzero/src/automotive-message-broker /home/tripzero/src/automotive-message-broker/plugins/websocketsourceplugin /home/tripzero/src/automotive-message-broker/build /home/tripzero/src/automotive-message-broker/build/plugins/websocketsourceplugin /home/tripzero/src/automotive-message-broker/build/plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/DependInfo.cmake --color=$(COLOR)
+.PHONY : plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/depend
+
--- /dev/null
+FILE(REMOVE_RECURSE
+ "CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o"
+ "websocketsourceplugin.pdb"
+ "websocketsourceplugin.so"
+)
+
+# Per-language clean rules from dependency scanning.
+FOREACH(lang CXX)
+ INCLUDE(CMakeFiles/websocketsourceplugin.dir/cmake_clean_${lang}.cmake OPTIONAL)
+ENDFOREACH(lang)
--- /dev/null
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o
+ ../lib/abstractpropertytype.h
+ ../lib/abstractroutingengine.h
+ ../lib/abstractsink.h
+ ../lib/abstractsource.h
+ ../lib/debugout.h
+ ../lib/listplusplus.h
+ ../lib/mappropertytype.hpp
+ ../lib/nullptr.h
+ ../lib/propertyinfo.hpp
+ ../lib/timestamp.h
+ ../lib/uuidhelper.h
+ ../lib/vehicleproperty.h
+ /home/tripzero/src/automotive-message-broker/plugins/websocketsourceplugin/websocketsource.cpp
+ /home/tripzero/src/automotive-message-broker/plugins/websocketsourceplugin/websocketsource.h
+ /usr/include/glib-2.0/glib.h
+ /usr/include/glib-2.0/glib/deprecated/gallocator.h
+ /usr/include/glib-2.0/glib/deprecated/gcache.h
+ /usr/include/glib-2.0/glib/deprecated/gcompletion.h
+ /usr/include/glib-2.0/glib/deprecated/gmain.h
+ /usr/include/glib-2.0/glib/deprecated/grel.h
+ /usr/include/glib-2.0/glib/deprecated/gthread.h
+ /usr/include/glib-2.0/glib/galloca.h
+ /usr/include/glib-2.0/glib/garray.h
+ /usr/include/glib-2.0/glib/gasyncqueue.h
+ /usr/include/glib-2.0/glib/gatomic.h
+ /usr/include/glib-2.0/glib/gbacktrace.h
+ /usr/include/glib-2.0/glib/gbase64.h
+ /usr/include/glib-2.0/glib/gbitlock.h
+ /usr/include/glib-2.0/glib/gbookmarkfile.h
+ /usr/include/glib-2.0/glib/gbytes.h
+ /usr/include/glib-2.0/glib/gcharset.h
+ /usr/include/glib-2.0/glib/gchecksum.h
+ /usr/include/glib-2.0/glib/gconvert.h
+ /usr/include/glib-2.0/glib/gdataset.h
+ /usr/include/glib-2.0/glib/gdate.h
+ /usr/include/glib-2.0/glib/gdatetime.h
+ /usr/include/glib-2.0/glib/gdir.h
+ /usr/include/glib-2.0/glib/genviron.h
+ /usr/include/glib-2.0/glib/gerror.h
+ /usr/include/glib-2.0/glib/gfileutils.h
+ /usr/include/glib-2.0/glib/ggettext.h
+ /usr/include/glib-2.0/glib/ghash.h
+ /usr/include/glib-2.0/glib/ghmac.h
+ /usr/include/glib-2.0/glib/ghook.h
+ /usr/include/glib-2.0/glib/ghostutils.h
+ /usr/include/glib-2.0/glib/giochannel.h
+ /usr/include/glib-2.0/glib/gkeyfile.h
+ /usr/include/glib-2.0/glib/glist.h
+ /usr/include/glib-2.0/glib/gmacros.h
+ /usr/include/glib-2.0/glib/gmain.h
+ /usr/include/glib-2.0/glib/gmappedfile.h
+ /usr/include/glib-2.0/glib/gmarkup.h
+ /usr/include/glib-2.0/glib/gmem.h
+ /usr/include/glib-2.0/glib/gmessages.h
+ /usr/include/glib-2.0/glib/gnode.h
+ /usr/include/glib-2.0/glib/goption.h
+ /usr/include/glib-2.0/glib/gpattern.h
+ /usr/include/glib-2.0/glib/gpoll.h
+ /usr/include/glib-2.0/glib/gprimes.h
+ /usr/include/glib-2.0/glib/gqsort.h
+ /usr/include/glib-2.0/glib/gquark.h
+ /usr/include/glib-2.0/glib/gqueue.h
+ /usr/include/glib-2.0/glib/grand.h
+ /usr/include/glib-2.0/glib/gregex.h
+ /usr/include/glib-2.0/glib/gscanner.h
+ /usr/include/glib-2.0/glib/gsequence.h
+ /usr/include/glib-2.0/glib/gshell.h
+ /usr/include/glib-2.0/glib/gslice.h
+ /usr/include/glib-2.0/glib/gslist.h
+ /usr/include/glib-2.0/glib/gspawn.h
+ /usr/include/glib-2.0/glib/gstrfuncs.h
+ /usr/include/glib-2.0/glib/gstring.h
+ /usr/include/glib-2.0/glib/gstringchunk.h
+ /usr/include/glib-2.0/glib/gtestutils.h
+ /usr/include/glib-2.0/glib/gthread.h
+ /usr/include/glib-2.0/glib/gthreadpool.h
+ /usr/include/glib-2.0/glib/gtimer.h
+ /usr/include/glib-2.0/glib/gtimezone.h
+ /usr/include/glib-2.0/glib/gtrashstack.h
+ /usr/include/glib-2.0/glib/gtree.h
+ /usr/include/glib-2.0/glib/gtypes.h
+ /usr/include/glib-2.0/glib/gunicode.h
+ /usr/include/glib-2.0/glib/gurifuncs.h
+ /usr/include/glib-2.0/glib/gutils.h
+ /usr/include/glib-2.0/glib/gvariant.h
+ /usr/include/glib-2.0/glib/gvarianttype.h
+ /usr/include/glib-2.0/glib/gversion.h
+ /usr/include/glib-2.0/glib/gversionmacros.h
+ /usr/include/glib-2.0/glib/gwin32.h
+ /usr/lib/i386-linux-gnu/glib-2.0/include/glibconfig.h
--- /dev/null
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: ../lib/abstractpropertytype.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: ../lib/abstractroutingengine.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: ../lib/abstractsink.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: ../lib/abstractsource.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: ../lib/debugout.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: ../lib/listplusplus.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: ../lib/mappropertytype.hpp
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: ../lib/nullptr.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: ../lib/propertyinfo.hpp
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: ../lib/timestamp.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: ../lib/uuidhelper.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: ../lib/vehicleproperty.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: ../plugins/websocketsourceplugin/websocketsource.cpp
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: ../plugins/websocketsourceplugin/websocketsource.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/deprecated/gallocator.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/deprecated/gcache.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/deprecated/gcompletion.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/deprecated/gmain.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/deprecated/grel.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/deprecated/gthread.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/galloca.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/garray.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gasyncqueue.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gatomic.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gbacktrace.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gbase64.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gbitlock.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gbookmarkfile.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gbytes.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gcharset.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gchecksum.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gconvert.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gdataset.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gdate.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gdatetime.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gdir.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/genviron.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gerror.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gfileutils.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/ggettext.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/ghash.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/ghmac.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/ghook.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/ghostutils.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/giochannel.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gkeyfile.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/glist.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gmacros.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gmain.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gmappedfile.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gmarkup.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gmem.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gmessages.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gnode.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/goption.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gpattern.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gpoll.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gprimes.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gqsort.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gquark.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gqueue.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/grand.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gregex.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gscanner.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gsequence.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gshell.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gslice.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gslist.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gspawn.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gstrfuncs.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gstring.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gstringchunk.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gtestutils.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gthread.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gthreadpool.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gtimer.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gtimezone.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gtrashstack.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gtree.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gtypes.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gunicode.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gurifuncs.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gutils.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gvariant.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gvarianttype.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gversion.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gversionmacros.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/include/glib-2.0/glib/gwin32.h
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o: /usr/lib/i386-linux-gnu/glib-2.0/include/glibconfig.h
+
--- /dev/null
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# compile CXX with /usr/lib/icecc/bin/g++
+CXX_FLAGS = -g -fPIC -I/home/tripzero/src/automotive-message-broker/lib -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/json -std=c++11
+
+CXX_DEFINES = -DDBusServiceName=\"org.automotive.message.broker\" -DPROJECT_CODENAME=\"veyron\" -DPROJECT_NAME=\"automotive-message-broker\" -DPROJECT_QUALITY=\"alpha\" -DPROJECT_VERSION=\"0.11.800\" -Dwebsocketsourceplugin_EXPORTS
+
--- /dev/null
+/usr/lib/icecc/bin/g++ -fPIC -g -shared -Wl,-soname,websocketsourceplugin.so -o websocketsourceplugin.so CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o ../../lib/libamb.so.0.11.800 -lwebsockets -L/home/tripzero/src/automotive-message-broker/build/plugins/websocketsourceplugin/lib -lamb -lltdl -lgobject-2.0 -lglib-2.0 -ljson -L/home/tripzero/src/automotive-message-broker/build/lib -lgio-2.0 -luuid -lgobject-2.0 -lglib-2.0 -ljson -Wl,-rpath,/home/tripzero/src/automotive-message-broker/build/lib:
--- /dev/null
+CMAKE_PROGRESS_1 = 55
+
--- /dev/null
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# Default target executed when no arguments are given to make.
+default_target: all
+.PHONY : default_target
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The program to use to edit the cache.
+CMAKE_EDIT_COMMAND = /usr/bin/cmake-gui
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/tripzero/src/automotive-message-broker
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/tripzero/src/automotive-message-broker/build
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target edit_cache
+edit_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..."
+ /usr/bin/cmake-gui -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+.PHONY : edit_cache/fast
+
+# Special rule for the target install
+install: preinstall
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
+ /usr/bin/cmake -P cmake_install.cmake
+.PHONY : install
+
+# Special rule for the target install
+install/fast: preinstall/fast
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
+ /usr/bin/cmake -P cmake_install.cmake
+.PHONY : install/fast
+
+# Special rule for the target install/local
+install/local: preinstall
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
+ /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
+.PHONY : install/local
+
+# Special rule for the target install/local
+install/local/fast: install/local
+.PHONY : install/local/fast
+
+# Special rule for the target install/strip
+install/strip: preinstall
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
+ /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
+.PHONY : install/strip
+
+# Special rule for the target install/strip
+install/strip/fast: install/strip
+.PHONY : install/strip/fast
+
+# Special rule for the target list_install_components
+list_install_components:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Devel\" \"Docs\" \"Unspecified\""
+.PHONY : list_install_components
+
+# Special rule for the target list_install_components
+list_install_components/fast: list_install_components
+.PHONY : list_install_components/fast
+
+# Special rule for the target package
+package: preinstall
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Run CPack packaging tool..."
+ cd /home/tripzero/src/automotive-message-broker/build && /usr/bin/cpack --config ./CPackConfig.cmake
+.PHONY : package
+
+# Special rule for the target package
+package/fast: package
+.PHONY : package/fast
+
+# Special rule for the target package_source
+package_source:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Run CPack packaging tool for source..."
+ cd /home/tripzero/src/automotive-message-broker/build && /usr/bin/cpack --config ./CPackSourceConfig.cmake /home/tripzero/src/automotive-message-broker/build/CPackSourceConfig.cmake
+.PHONY : package_source
+
+# Special rule for the target package_source
+package_source/fast: package_source
+.PHONY : package_source/fast
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
+ /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+.PHONY : rebuild_cache/fast
+
+# The main all target
+all: cmake_check_build_system
+ cd /home/tripzero/src/automotive-message-broker/build && $(CMAKE_COMMAND) -E cmake_progress_start /home/tripzero/src/automotive-message-broker/build/CMakeFiles /home/tripzero/src/automotive-message-broker/build/plugins/websocketsourceplugin/CMakeFiles/progress.marks
+ cd /home/tripzero/src/automotive-message-broker/build && $(MAKE) -f CMakeFiles/Makefile2 plugins/websocketsourceplugin/all
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/tripzero/src/automotive-message-broker/build/CMakeFiles 0
+.PHONY : all
+
+# The main clean target
+clean:
+ cd /home/tripzero/src/automotive-message-broker/build && $(MAKE) -f CMakeFiles/Makefile2 plugins/websocketsourceplugin/clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+ cd /home/tripzero/src/automotive-message-broker/build && $(MAKE) -f CMakeFiles/Makefile2 plugins/websocketsourceplugin/preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+ cd /home/tripzero/src/automotive-message-broker/build && $(MAKE) -f CMakeFiles/Makefile2 plugins/websocketsourceplugin/preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+ cd /home/tripzero/src/automotive-message-broker/build && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+.PHONY : depend
+
+# Convenience name for target.
+plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/rule:
+ cd /home/tripzero/src/automotive-message-broker/build && $(MAKE) -f CMakeFiles/Makefile2 plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/rule
+.PHONY : plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/rule
+
+# Convenience name for target.
+websocketsourceplugin: plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/rule
+.PHONY : websocketsourceplugin
+
+# fast build rule for target.
+websocketsourceplugin/fast:
+ cd /home/tripzero/src/automotive-message-broker/build && $(MAKE) -f plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/build.make plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/build
+.PHONY : websocketsourceplugin/fast
+
+websocketsource.o: websocketsource.cpp.o
+.PHONY : websocketsource.o
+
+# target to build an object file
+websocketsource.cpp.o:
+ cd /home/tripzero/src/automotive-message-broker/build && $(MAKE) -f plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/build.make plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.o
+.PHONY : websocketsource.cpp.o
+
+websocketsource.i: websocketsource.cpp.i
+.PHONY : websocketsource.i
+
+# target to preprocess a source file
+websocketsource.cpp.i:
+ cd /home/tripzero/src/automotive-message-broker/build && $(MAKE) -f plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/build.make plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.i
+.PHONY : websocketsource.cpp.i
+
+websocketsource.s: websocketsource.cpp.s
+.PHONY : websocketsource.s
+
+# target to generate assembly for a file
+websocketsource.cpp.s:
+ cd /home/tripzero/src/automotive-message-broker/build && $(MAKE) -f plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/build.make plugins/websocketsourceplugin/CMakeFiles/websocketsourceplugin.dir/websocketsource.cpp.s
+.PHONY : websocketsource.cpp.s
+
+# Help Target
+help:
+ @echo "The following are some of the valid targets for this Makefile:"
+ @echo "... all (the default if no target is provided)"
+ @echo "... clean"
+ @echo "... depend"
+ @echo "... edit_cache"
+ @echo "... install"
+ @echo "... install/local"
+ @echo "... install/strip"
+ @echo "... list_install_components"
+ @echo "... package"
+ @echo "... package_source"
+ @echo "... rebuild_cache"
+ @echo "... websocketsourceplugin"
+ @echo "... websocketsource.o"
+ @echo "... websocketsource.i"
+ @echo "... websocketsource.s"
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+ cd /home/tripzero/src/automotive-message-broker/build && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
--- /dev/null
+# Install script for directory: /home/tripzero/src/automotive-message-broker/plugins/websocketsourceplugin
+
+# Set the install prefix
+IF(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ SET(CMAKE_INSTALL_PREFIX "/usr")
+ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX)
+STRING(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+IF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ IF(BUILD_TYPE)
+ STRING(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ ELSE(BUILD_TYPE)
+ SET(CMAKE_INSTALL_CONFIG_NAME "Debug")
+ ENDIF(BUILD_TYPE)
+ MESSAGE(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+ENDIF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+
+# Set the component getting installed.
+IF(NOT CMAKE_INSTALL_COMPONENT)
+ IF(COMPONENT)
+ MESSAGE(STATUS "Install component: \"${COMPONENT}\"")
+ SET(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ ELSE(COMPONENT)
+ SET(CMAKE_INSTALL_COMPONENT)
+ ENDIF(COMPONENT)
+ENDIF(NOT CMAKE_INSTALL_COMPONENT)
+
+# Install shared libraries without execute permission?
+IF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ SET(CMAKE_INSTALL_SO_NO_EXE "1")
+ENDIF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+
+IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified")
+ IF(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/automotive-message-broker/websocketsourceplugin.so" AND
+ NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/automotive-message-broker/websocketsourceplugin.so")
+ FILE(RPATH_CHECK
+ FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/automotive-message-broker/websocketsourceplugin.so"
+ RPATH "")
+ ENDIF()
+ FILE(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/automotive-message-broker" TYPE MODULE FILES "/home/tripzero/src/automotive-message-broker/build/plugins/websocketsourceplugin/websocketsourceplugin.so")
+ IF(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/automotive-message-broker/websocketsourceplugin.so" AND
+ NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/automotive-message-broker/websocketsourceplugin.so")
+ FILE(RPATH_REMOVE
+ FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/automotive-message-broker/websocketsourceplugin.so")
+ IF(CMAKE_INSTALL_DO_STRIP)
+ EXECUTE_PROCESS(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/automotive-message-broker/websocketsourceplugin.so")
+ ENDIF(CMAKE_INSTALL_DO_STRIP)
+ ENDIF()
+ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified")
+
"path" : "/usr/lib/automotive-message-broker/websocketsinkplugin.so",
"interface" : "lo",
"ssl" : "false",
- "port" : "23000",
- "binaryProtocol" : "true"
+ "port" : "23000"
}
]
}
"path" : "/usr/lib/automotive-message-broker/websocketsourceplugin.so",
"port" : "23000",
"ssl" : "false",
- "ip" : "127.0.0.1",
- "binaryProtocol" : "true"
+ "ip" : "127.0.0.1"
}
],
"sinks": [
--- /dev/null
+{
+ "sources" : [
+ {
+ "name" : "ExampleSouce",
+ "path" : "/usr/lib/automotive-message-broker/examplesourceplugin.so",
+ "delay" : "6"
+ }
+ ],
+ "sinks": [
+ {
+ "name" : "WebSocketSink",
+ "path" : "/usr/lib/automotive-message-broker/websocketsinkplugin.so",
+ "interface" : "lo",
+ "ssl" : "false",
+ "port" : "23000",
+ "binaryProtocol" : "true"
+ }
+ ]
+}
+
--- /dev/null
+{
+ "sources" : [
+ {
+ "name" : "WebsocketSource",
+ "path" : "/usr/lib/automotive-message-broker/websocketsourceplugin.so",
+ "port" : "23000",
+ "ssl" : "false",
+ "ip" : "127.0.0.1",
+ "binaryProtocol" : "true"
+ }
+ ],
+ "sinks": [
+ {
+ "name" : "ExampleSink",
+ "path" : "/usr/lib/automotive-message-broker/examplesinkplugin.so"
+ }
+ ]
+}
+
add_subdirectory(dbus)
add_subdirectory(websocket)
add_subdirectory(websocketsink)
+add_subdirectory(websocketsourceplugin)
add_subdirectory(obd2plugin)
add_subdirectory(demosink)
add_subdirectory(tpms)
--- /dev/null
+/*
+ Copyright (C) 2012 Intel Corporation
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+
+#include "websocketsource.h"
+#include <iostream>
+#include <boost/assert.hpp>
+#include <boost/lexical_cast.hpp>
+#include <glib.h>
+#include <sstream>
+#include <json-glib/json-glib.h>
+#include <listplusplus.h>
+#include <timestamp.h>
+#include "uuidhelper.h"
+
+#include "debugout.h"
+#define __SMALLFILE__ std::string(__FILE__).substr(std::string(__FILE__).rfind("/")+1)
+libwebsocket_context *context;
+WebSocketSource *source;
+AbstractRoutingEngine *m_re;
+
+static int callback_http_only(libwebsocket_context *context,struct libwebsocket *wsi,enum libwebsocket_callback_reasons reason,void *user, void *in, size_t len);
+static struct libwebsocket_protocols protocols[] = {
+ {
+ "http-only",
+ callback_http_only,
+ 0,
+ },
+ { /* end of list */
+ NULL,
+ NULL,
+ 0
+ }
+};
+
+//Called when a client connects, subscribes, or unsubscribes.
+void WebSocketSource::checkSubscriptions()
+{
+ PropertyList notSupportedList;
+ while (queuedRequests.size() > 0)
+ {
+ VehicleProperty::Property prop = queuedRequests.front();
+ queuedRequests.pop_front();
+ if (ListPlusPlus<VehicleProperty::Property>(&activeRequests).contains(prop))
+ {
+ return;
+ }
+ activeRequests.push_back(prop);
+ stringstream s;
+ ///TODO: fix transid here:
+ s << "{\"type\":\"method\",\"name\":\"subscribe\",\"data\":[\"" << prop << "\"],\"transactionid\":\"" << "d293f670-f0b3-11e1-aff1-0800200c9a66" << "\"}";
+
+ string replystr = s.str();
+ DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Reply:" << replystr << "\n";
+ //printf("Reply: %s\n",replystr.c_str());
+
+ char *new_response = new char[LWS_SEND_BUFFER_PRE_PADDING + strlen(replystr.c_str()) + LWS_SEND_BUFFER_POST_PADDING];
+ new_response+=LWS_SEND_BUFFER_PRE_PADDING;
+ strcpy(new_response,replystr.c_str());
+ libwebsocket_write(clientsocket, (unsigned char*)new_response, strlen(new_response), LWS_WRITE_TEXT);
+ delete (char*)(new_response-LWS_SEND_BUFFER_PRE_PADDING);
+ }
+}
+void WebSocketSource::setConfiguration(map<string, string> config)
+{
+ //printf("WebSocketSource::setConfiguration has been called\n");
+ std::string ip;
+ int port;
+ configuration = config;
+ for (map<string,string>::iterator i=configuration.begin();i!=configuration.end();i++)
+ {
+ DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Incoming setting for WebSocketSource:" << (*i).first << ":" << (*i).second << "\n";
+ //printf("Incoming setting: %s:%s\n",(*i).first.c_str(),(*i).second.c_str());
+ if ((*i).first == "ip")
+ {
+ ip = (*i).second;
+ }
+ if ((*i).first == "port")
+ {
+ port = boost::lexical_cast<int>((*i).second);
+ }
+ }
+ //printf("Connecting to websocket server at %s port %i\n",ip.c_str(),port);
+ DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Connecting to websocket server at" << ip << ":" << port << "\n";
+ clientsocket = libwebsocket_client_connect(context, ip.c_str(), port, 0,"/", "localhost", "websocket",protocols[0].name, -1);
+
+}
+bool gioPollingFunc(GIOChannel *source,GIOCondition condition,gpointer data)
+{
+ //This is the polling function. If it return false, glib will stop polling this FD.
+ //printf("Polling...%i\n",condition);
+ lws_tokens token;
+ struct pollfd pollstruct;
+ int newfd = g_io_channel_unix_get_fd(source);
+ pollstruct.fd = newfd;
+ pollstruct.events = condition;
+ pollstruct.revents = condition;
+ libwebsocket_service_fd(context,&pollstruct);
+ if (condition == G_IO_HUP)
+ {
+ //Hang up. Returning false closes out the GIOChannel.
+ //printf("Callback on G_IO_HUP\n");
+ return false;
+ }
+ if (condition == G_IO_IN)
+ {
+ }
+
+ return true;
+}
+
+static int checkTimeouts(gpointer data)
+{
+ WebSocketSource *src = (WebSocketSource*)data;
+ for (auto i=src->uuidTimeoutMap.begin();i!= src->uuidTimeoutMap.end();i++)
+ {
+ if (src->uuidRangedReplyMap.find((*i).first) != src->uuidRangedReplyMap.end())
+ {
+ //A source exists!
+ if (amb::currentTime() > (*i).second)
+ {
+ //We've reached timeout
+ DebugOut() << "Timeout reached for request ID:" << (*i).first << "\n";
+ src->uuidRangedReplyMap[(*i).first]->success = false;
+ src->uuidRangedReplyMap[(*i).first]->completed(src->uuidRangedReplyMap[(*i).first]);
+ src->uuidRangedReplyMap.erase((*i).first);
+ src->uuidTimeoutMap.erase((*i).first);
+ i--;
+<<<<<<< HEAD
+=======
+ if (src->uuidTimeoutMap.size() == 0)
+ {
+ return 0;
+ }
+>>>>>>> 5ccd6906c4dbc222df07456232eec58058dd1e1b
+ }
+ else
+ {
+ //No timeout yet, keep waiting.
+ }
+ }
+ else
+ {
+ //Reply has already come back, ignore and erase from list.
+ src->uuidTimeoutMap.erase((*i).first);
+ i--;
+<<<<<<< HEAD
+ }
+
+ }
+=======
+ if (src->uuidTimeoutMap.size() == 0)
+ {
+ return 0;
+ }
+ }
+
+ }
+ return 0;
+>>>>>>> 5ccd6906c4dbc222df07456232eec58058dd1e1b
+}
+
+static int callback_http_only(libwebsocket_context *context,struct libwebsocket *wsi,enum libwebsocket_callback_reasons reason,void *user, void *in, size_t len)
+{
+ unsigned char buf[LWS_SEND_BUFFER_PRE_PADDING + 4096 + LWS_SEND_BUFFER_POST_PADDING];
+ int l;
+ switch (reason)
+ {
+ case LWS_CALLBACK_CLOSED:
+ //fprintf(stderr, "mirror: LWS_CALLBACK_CLOSED\n");
+ //wsi_mirror = NULL;
+ //printf("Connection closed!\n");
+ break;
+
+ case LWS_CALLBACK_CLIENT_ESTABLISHED:
+ {
+ //This happens when a client initally connects. We need to request the support event types.
+ source->clientConnected = true;
+ source->checkSubscriptions();
+ //printf("Incoming connection!\n");
+ DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Incoming connection" << "\n";
+ stringstream s;
+ s << "{\"type\":\"method\",\"name\":\"getSupportedEventTypes\",\"data\":[],\"transactionid\":\"" << "d293f670-f0b3-11e1-aff1-0800200c9a66" << "\"}";
+
+ string replystr = s.str();
+ DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Reply:" << replystr << "\n";
+ char *new_response = new char[LWS_SEND_BUFFER_PRE_PADDING + strlen(replystr.c_str()) + LWS_SEND_BUFFER_POST_PADDING];
+ new_response+=LWS_SEND_BUFFER_PRE_PADDING;
+ strcpy(new_response,replystr.c_str());
+ libwebsocket_write(wsi, (unsigned char*)(new_response), strlen(new_response), LWS_WRITE_TEXT);
+ delete (char*)(new_response-LWS_SEND_BUFFER_PRE_PADDING);
+
+ break;
+ }
+ case LWS_CALLBACK_CLIENT_RECEIVE:
+ {
+ //Incoming JSON reqest.
+ GError* error = nullptr;
+ JsonParser* parser = json_parser_new();
+ if (!json_parser_load_from_data(parser,(char*)in,len,&error))
+ {
+ DebugOut(0) << __SMALLFILE__ <<":"<< __LINE__ << "Error loading JSON"<<endl;
+ DebugOut(0) << (char*)in <<endl;
+ DebugOut(0) <<error->message<<endl;
+ return 0;
+ }
+
+ JsonNode* node = json_parser_get_root(parser);
+ if(node == nullptr)
+ {
+ DebugOut(0) << __SMALLFILE__ <<":"<< __LINE__ << "Error getting root node of json"<<endl;
+ //throw std::runtime_error("Unable to get JSON root object");
+ return 0;
+ }
+
+ JsonReader* reader = json_reader_new(node);
+ if(reader == nullptr)
+ {
+ DebugOut(0) << __SMALLFILE__ <<":"<< __LINE__ << "json_reader is null!"<<endl;
+ //throw std::runtime_error("Unable to create JSON reader");
+ return 0;
+ }
+
+
+ DebugOut(5)<<"source received: "<<string((char*)in)<<endl;
+
+
+ string type;
+ json_reader_read_member(reader,"type");
+ type = json_reader_get_string_value(reader);
+ json_reader_end_member(reader);
+
+ string name;
+ json_reader_read_member(reader,"name");
+ name = json_reader_get_string_value(reader);
+ json_reader_end_member(reader);
+
+
+ string id;
+ json_reader_read_member(reader,"transactionid");
+ if (strcmp("gchararray",g_type_name(json_node_get_value_type(json_reader_get_value(reader)))) == 0)
+ {
+ //Type is a string
+ id = json_reader_get_string_value(reader);
+ }
+ else
+ {
+ //Type is an integer
+ stringstream strstr;
+ strstr << json_reader_get_int_value(reader);
+ id = strstr.str();
+ }
+ json_reader_end_member(reader);
+
+ list<pair<string,string> > pairdata;
+ if (type == "valuechanged")
+ {
+ json_reader_read_member(reader,"data");
+ if (json_reader_is_object(reader))
+ {
+ //Proper object.
+ json_reader_read_member(reader,"value");
+ std::string value = json_reader_get_string_value(reader);
+ json_reader_end_member(reader);
+
+ json_reader_read_member(reader,"timestamp");
+ std::string timestamp = json_reader_get_string_value(reader);
+ json_reader_end_member(reader);
+
+ json_reader_read_member(reader,"sequence");
+ std::string sequence= json_reader_get_string_value(reader);
+ json_reader_end_member(reader);
+ //printf("Value changed: %s, %s\n",name.c_str(),data.front().c_str());
+ DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Value changed:" << name << value << "\n";
+ //Name should be a valid property
+ // routingEngine->updateProperty(VehicleProperty::VehicleSpeed, velocity);
+ //data.front()
+ try
+ {
+ AbstractPropertyType* type = VehicleProperty::getPropertyTypeForPropertyNameValue(name,value);
+ type->timestamp = boost::lexical_cast<double,std::string>(timestamp);
+ type->sequence = boost::lexical_cast<double,std::string>(sequence);
+ m_re->updateProperty(name, type, source->uuid());
+
+ double currenttime = amb::currentTime();
+
+ DebugOut(2)<<"websocket source latency: "<<(currenttime - type->timestamp)*1000<<"ms"<<endl;
+
+ delete type;
+ }
+ catch (exception ex)
+ {
+ //printf("Exception %s\n",ex.what());
+ DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Exception:" << ex.what() << "\n";
+ }
+ //printf("Done\n");
+ /*if (name == "get")
+ {
+ if (data.size() > 0)
+ {
+ }
+ }*/
+ }
+ }
+ else if (type == "methodReply")
+ {
+ if (name == "getSupportedEventTypes")
+ {
+ json_reader_read_member(reader,"data");
+ //printf("Got supported events!\n");
+ DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Got getSupportedEventTypes request"<<endl;
+ PropertyList props;
+ if (json_reader_is_array(reader))
+ {
+ for(int i=0; i < json_reader_count_elements(reader); i++)
+ {
+ json_reader_read_element(reader,i);
+ string path = json_reader_get_string_value(reader);
+ props.push_back(path);
+ json_reader_end_element(reader);
+ }
+ }
+ else
+ {
+ string path = json_reader_get_string_value(reader);
+ if (path != "")
+ {
+ props.push_back(path);;
+ }
+ }
+ json_reader_end_member(reader);
+ source->setSupported(props);
+ //m_re->updateSupported(m_supportedProperties,PropertyList());
+ }
+ else if (name == "getRanged")
+ {
+ json_reader_read_member(reader,"data");
+ if (json_reader_is_array(reader))
+ {
+ std::list<AbstractPropertyType*> propertylist;
+ for(int i=0; i < json_reader_count_elements(reader); i++)
+ {
+ json_reader_read_member(reader,"value");
+ std::string value = json_reader_get_string_value(reader);
+ json_reader_end_member(reader);
+
+ json_reader_read_member(reader,"timestamp");
+ std::string timestamp = json_reader_get_string_value(reader);
+ json_reader_end_member(reader);
+
+ json_reader_read_member(reader,"sequence");
+ std::string sequence = json_reader_get_string_value(reader);
+ json_reader_end_member(reader);
+
+ AbstractPropertyType* type = VehicleProperty::getPropertyTypeForPropertyNameValue(source->uuidRangedReplyMap[id]->property,value);
+ propertylist.push_back(type);
+
+ }
+ if (source->uuidRangedReplyMap.find(id) != source->uuidRangedReplyMap.end())
+ {
+ source->uuidRangedReplyMap[id]->values = propertylist;
+ source->uuidRangedReplyMap[id]->success = true;
+ source->uuidRangedReplyMap[id]->completed(source->uuidRangedReplyMap[id]);
+ source->uuidRangedReplyMap.erase(id);
+ }
+ else
+ {
+ DebugOut() << "getRanged methodReply has been recieved, without a request being in!. This is likely due to a request coming in after the timeout has elapsed.\n";
+ }
+ while (propertylist.size() > 0)
+ {
+
+ AbstractPropertyType *type = propertylist.front();
+ delete type;
+ propertylist.pop_front();
+ }
+ }
+ json_reader_end_member(reader);
+ }
+ else if (name == "get")
+ {
+ json_reader_read_member(reader,"data");
+ if (json_reader_is_object(reader))
+ {
+ DebugOut() << __SMALLFILE__ << ":" << __LINE__ << "Got \"GET\" event:" << pairdata.size()<<endl;
+ if (source->uuidReplyMap.find(id) != source->uuidReplyMap.end())
+ {
+ json_reader_read_member(reader,"property");
+ std::string property = json_reader_get_string_value(reader);
+ json_reader_end_member(reader);
+
+ json_reader_read_member(reader,"value");
+ std::string value = json_reader_get_string_value(reader);
+ json_reader_end_member(reader);
+
+ json_reader_read_member(reader,"timestamp");
+ std::string timestamp = json_reader_get_string_value(reader);
+ json_reader_end_member(reader);
+
+
+ json_reader_read_member(reader,"sequence");
+ std::string sequence = json_reader_get_string_value(reader);
+ json_reader_end_member(reader);
+
+ AbstractPropertyType* v = VehicleProperty::getPropertyTypeForPropertyNameValue(property,value);
+ v->timestamp = boost::lexical_cast<double,std::string>(timestamp);
+ v->sequence = boost::lexical_cast<double,std::string>(sequence);
+ if (source->uuidReplyMap.find(id) != source->uuidReplyMap.end())
+ {
+ source->uuidReplyMap[id]->value = v;
+ source->uuidReplyMap[id]->success = true;
+ source->uuidReplyMap[id]->completed(source->uuidReplyMap[id]);
+ source->uuidReplyMap.erase(id);
+ delete v;
+ }
+ else
+ {
+ DebugOut() << "get methodReply has been recieved, without a request being in!. This is likely due to a request coming in after the timeout has elapsed.\n";
+ }
+ }
+ }
+ else
+ {
+ DebugOut() << __SMALLFILE__ << ":" << __LINE__ << "GET Method Reply INVALID! Multiple properties detected, only single are supported!!!" << "\n";
+ }
+ json_reader_end_member(reader);
+ //data will contain a property/value map.
+ }
+ }
+
+ ///TODO: this will probably explode:
+ //mlc: I agree with Kevron here, it does explode.
+ //if(error) g_error_free(error);
+
+ g_object_unref(reader);
+ g_object_unref(parser);
+
+ break;
+ }
+ case LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED:
+ {
+ //printf("Requested extension: %s\n",(char*)in);
+ return 0;
+ break;
+ }
+ case LWS_CALLBACK_ADD_POLL_FD:
+ {
+ //Add a FD to the poll list.
+ GIOChannel *chan = g_io_channel_unix_new((int)(long)user);
+ g_io_add_watch(chan,G_IO_IN,(GIOFunc)gioPollingFunc,0);
+ g_io_add_watch(chan,G_IO_PRI,(GIOFunc)gioPollingFunc,0);
+ break;
+ }
+ return 0;
+ }
+}
+void WebSocketSource::setSupported(PropertyList list)
+{
+ m_supportedProperties = list;
+ m_re->updateSupported(list,PropertyList());
+}
+
+WebSocketSource::WebSocketSource(AbstractRoutingEngine *re, map<string, string> config) : AbstractSource(re, config)
+{
+ clientConnected = false;
+ source = this;
+ m_re = re;
+ context = libwebsocket_create_context(CONTEXT_PORT_NO_LISTEN, NULL,protocols, libwebsocket_internal_extensions,NULL, NULL, -1, -1, 0);
+
+ setConfiguration(config);
+ re->setSupported(supported(), this);
+
+ //printf("websocketsource loaded!!!\n");
+ g_timeout_add(1000,checkTimeouts,this); //Do this once per second, check for functions that have timed out and reply with success = false;
+
+}
+PropertyList WebSocketSource::supported()
+{
+ return m_supportedProperties;
+}
+
+int WebSocketSource::supportedOperations()
+{
+ /// TODO: need to do this correctly based on what the host supports.
+ return Get | Set;
+}
+
+string WebSocketSource::uuid()
+{
+ return "d293f670-f0b3-11e1-aff1-0800200c9a66";
+}
+
+void WebSocketSource::subscribeToPropertyChanges(VehicleProperty::Property property)
+{
+ //printf("Subscribed to property: %s\n",property.c_str());
+ queuedRequests.push_back(property);
+ if (clientConnected)
+ {
+ checkSubscriptions();
+ }
+}
+
+
+void WebSocketSource::unsubscribeToPropertyChanges(VehicleProperty::Property property)
+{
+ removeRequests.push_back(property);
+ if (clientConnected)
+ {
+ checkSubscriptions();
+ }
+}
+
+
+void WebSocketSource::getPropertyAsync(AsyncPropertyReply *reply)
+{
+ ///TODO: fill in
+ //s << "{\"type\":\"method\",\"name\":\"getSupportedEventTypes\",\"data\":[],\"transactionid\":\"" << "d293f670-f0b3-11e1-aff1-0800200c9a66" << "\"}";
+ //m_re->getPropertyAsync();
+ /*reply.value = 1;
+ reply->completed(reply);
+ reply->completed = [](AsyncPropertyReply* reply) {
+ DebugOut()<<"Velocity Async request completed: "<<reply->value->toString()<<endl;
+ delete reply;
+ };*/
+ //propertyReplyMap[reply->property] = reply;
+ std::string uuid = amb::createUuid();
+ uuidReplyMap[uuid] = reply;
+ uuidTimeoutMap[uuid] = amb::currentTime() + 10.0; ///TODO: 10 second timeout, make this configurable?
+ stringstream s;
+
+ s << "{\"type\":\"method\",\"name\":\"get\",\"data\":[\"" << reply->property << "\"],\"transactionid\":\"" << uuid << "\"}";
+ string replystr = s.str();
+ DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Reply:" << replystr <<endl;
+ //printf("Reply: %s\n",replystr.c_str());
+ char *new_response = new char[LWS_SEND_BUFFER_PRE_PADDING + strlen(replystr.c_str()) + LWS_SEND_BUFFER_POST_PADDING];
+ new_response+=LWS_SEND_BUFFER_PRE_PADDING;
+ strcpy(new_response,replystr.c_str());
+ libwebsocket_write(clientsocket, (unsigned char*)new_response, strlen(new_response), LWS_WRITE_TEXT);
+ delete (char*)(new_response-LWS_SEND_BUFFER_PRE_PADDING);
+}
+
+void WebSocketSource::getRangePropertyAsync(AsyncRangePropertyReply *reply)
+{
+ ///TODO: fill in
+ std::string uuid = amb::createUuid();
+ uuidRangedReplyMap[uuid] = reply;
+ uuidTimeoutMap[uuid] = amb::currentTime() + 60; ///TODO: 60 second timeout, make this configurable?
+ stringstream s;
+ s << "{\"type\":\"method\",\"name\":\"getRange\",\"data\": {";
+ s << "\"timeBegin\":\"" << reply->timeBegin << "\",";
+ s << "\"timeEnd\":\"" << reply->timeEnd << "\",";
+ s << "\"sequenceBegin\":\"" << reply->sequenceBegin<< "\",";
+ s << "\"sequenceEnd\":\"" << reply->sequenceEnd << "\"}";
+ s<< ",\"transactionid\":\"" << uuid << "\"}";
+ string replystr = s.str();
+ DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Reply:" << replystr <<endl;
+ //printf("Reply: %s\n",replystr.c_str());
+ char *new_response = new char[LWS_SEND_BUFFER_PRE_PADDING + strlen(replystr.c_str()) + LWS_SEND_BUFFER_POST_PADDING];
+ new_response+=LWS_SEND_BUFFER_PRE_PADDING;
+ strcpy(new_response,replystr.c_str());
+ libwebsocket_write(clientsocket, (unsigned char*)new_response, strlen(new_response), LWS_WRITE_TEXT);
+ delete (char*)(new_response-LWS_SEND_BUFFER_PRE_PADDING);
+}
+
+AsyncPropertyReply * WebSocketSource::setProperty( AsyncSetPropertyRequest request )
+{
+ ///TODO: fill in
+ AsyncPropertyReply* reply = new AsyncPropertyReply(request);
+ reply->success = true;
+ stringstream s;
+ s << "{\"type\":\"method\",\"name\":\"set\",\"data\":[\"property\" : \"" << request.property << "\",\"value\" : \"" << request.value << "\"],\"transactionid\":\"" << "d293f670-f0b3-11e1-aff1-0800200c9a66" << "\"}";
+ string replystr = s.str();
+ DebugOut() << __SMALLFILE__ <<":"<< __LINE__ << "Reply:" << replystr << "\n";
+ //printf("Reply: %s\n",replystr.c_str());
+ char *new_response = new char[LWS_SEND_BUFFER_PRE_PADDING + strlen(replystr.c_str()) + LWS_SEND_BUFFER_POST_PADDING];
+ new_response+=LWS_SEND_BUFFER_PRE_PADDING;
+ strcpy(new_response,replystr.c_str());
+ libwebsocket_write(clientsocket, (unsigned char*)new_response, strlen(new_response), LWS_WRITE_TEXT);
+ delete (char*)(new_response-LWS_SEND_BUFFER_PRE_PADDING);
+ reply->completed(reply);
+ return reply;
+}
+
+extern "C" AbstractSource * create(AbstractRoutingEngine* routingengine, map<string, string> config)
+{
+ return new WebSocketSource(routingengine, config);
+
+}