ソースを参照

inifile && sit_list write-copy

lixioayao 6 年 前
コミット
f9d366923c
32 ファイル変更813 行追加268 行削除
  1. 3 1
      .gitignore
  2. 72 30
      Makefile
  3. 8 3
      Makefile.am
  4. 72 30
      Makefile.in
  5. BIN
      a.out
  6. 1 0
      a.sh
  7. 35 33
      ant.cpp
  8. 11 10
      ant.h
  9. 46 0
      area.cpp
  10. 162 0
      area.h
  11. 19 19
      autom4te.cache/requests
  12. 76 26
      c2.cpp
  13. 19 12
      card.cpp
  14. 8 5
      card.h
  15. 79 18
      card_path.cpp
  16. 1 1
      card_path.h
  17. 0 2
      client.cpp
  18. 18 0
      config.log
  19. 0 1
      log.h
  20. 31 34
      main.cpp
  21. 1 1
      message.h
  22. 4 1
      net-service.cpp
  23. 1 1
      point.cpp
  24. 55 0
      site_area.cpp
  25. 23 0
      site_area.h
  26. BIN
      visit
  27. 13 11
      visit.cpp
  28. 3 7
      worker.cpp
  29. 20 0
      write-copy.h
  30. 1 1
      zloop.h
  31. 30 21
      znet.cpp
  32. 1 0
      znet.h

+ 3 - 1
.gitignore

@@ -1,7 +1,8 @@
 .*
 *.o
+*bak
 /.deps/
-autom4te.cache/
+/autom4te.cache/
 Makefile
 config.log
 config.status
@@ -9,3 +10,4 @@ test
 yals
 async
 client
+

+ 72 - 30
Makefile

@@ -49,7 +49,8 @@ NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
 bin_PROGRAMS = yals$(EXEEXT)
-noinst_PROGRAMS = client$(EXEEXT) async$(EXEEXT) test$(EXEEXT)
+noinst_PROGRAMS = client$(EXEEXT) async$(EXEEXT) test$(EXEEXT) \
+	visit$(EXEEXT)
 subdir = .
 DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in $(top_srcdir)/configure COPYING INSTALL \
@@ -81,21 +82,26 @@ test_OBJECTS = $(am_test_OBJECTS)
 test_LDADD = $(LDADD)
 test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(test_LDFLAGS) \
 	$(LDFLAGS) -o $@
+am_visit_OBJECTS = visit-visit.$(OBJEXT)
+visit_OBJECTS = $(am_visit_OBJECTS)
+visit_LDADD = $(LDADD)
+visit_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(visit_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am__objects_1 = yals-singleton_test_class1.$(OBJEXT) \
 	yals-wsClient.$(OBJEXT) yals-wsClientMgr.$(OBJEXT) \
 	yals-wsTimerThread.$(OBJEXT) yals-CDBConnect.$(OBJEXT) \
 	yals-CDBConnPool.$(OBJEXT) yals-CDBHelper.$(OBJEXT) \
 	yals-CDBResultSet.$(OBJEXT) yals-jsonBuilder.$(OBJEXT)
-am__objects_2 = $(am__objects_1) yals-IniFile.$(OBJEXT) \
-	yals-sio_client.$(OBJEXT) yals-sio_socket.$(OBJEXT) \
-	yals-sio_client_impl.$(OBJEXT) yals-sio_packet.$(OBJEXT) \
-	yals-select_tool.$(OBJEXT) yals-line_fit.$(OBJEXT) \
-	yals-card_path.$(OBJEXT) yals-loc_point.$(OBJEXT) \
-	yals-ant.$(OBJEXT) yals-card.$(OBJEXT) yals-crc.$(OBJEXT) \
-	yals-loc_tool.$(OBJEXT) yals-message.$(OBJEXT) \
-	yals-net-service.$(OBJEXT) yals-point.$(OBJEXT) \
-	yals-tdoa_sync.$(OBJEXT) yals-worker.$(OBJEXT) \
-	yals-znet.$(OBJEXT)
+am__objects_2 = $(am__objects_1) yals-sio_client.$(OBJEXT) \
+	yals-sio_socket.$(OBJEXT) yals-sio_client_impl.$(OBJEXT) \
+	yals-sio_packet.$(OBJEXT) yals-select_tool.$(OBJEXT) \
+	yals-line_fit.$(OBJEXT) yals-card_path.$(OBJEXT) \
+	yals-loc_point.$(OBJEXT) yals-ant.$(OBJEXT) \
+	yals-card.$(OBJEXT) yals-crc.$(OBJEXT) yals-loc_tool.$(OBJEXT) \
+	yals-message.$(OBJEXT) yals-net-service.$(OBJEXT) \
+	yals-point.$(OBJEXT) yals-tdoa_sync.$(OBJEXT) \
+	yals-worker.$(OBJEXT) yals-znet.$(OBJEXT) \
+	yals-site_area.$(OBJEXT) yals-area.$(OBJEXT)
 am_yals_OBJECTS = $(am__objects_2) yals-main.$(OBJEXT)
 yals_OBJECTS = $(am_yals_OBJECTS)
 yals_LDADD = $(LDADD)
@@ -115,9 +121,9 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 CCLD = $(CC)
 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 SOURCES = $(async_SOURCES) $(client_SOURCES) $(test_SOURCES) \
-	$(yals_SOURCES)
+	$(visit_SOURCES) $(yals_SOURCES)
 DIST_SOURCES = $(async_SOURCES) $(client_SOURCES) $(test_SOURCES) \
-	$(yals_SOURCES)
+	$(visit_SOURCES) $(yals_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -235,11 +241,11 @@ top_build_prefix =
 top_builddir = .
 top_srcdir = .
 SRC_IN = websocket/singleton_test_class1.cpp  websocket/wsClient.cpp websocket/wsClientMgr.cpp websocket/wsTimerThread.cpp db_api/CDBConnect.cpp db_api/CDBConnPool.cpp db_api/CDBHelper.cpp db_api/CDBResultSet.cpp websocket/jsonBuilder.cpp websocket/jsonBuilder.h websocket/thread_safe_map.h
-AM_SOURCES = $(SRC_IN) IniFile.cpp src/sio_client.cpp src/sio_socket.cpp src/internal/sio_client_impl.cpp src/internal/sio_packet.cpp src/sio_client.h src/sio_message.h src/sio_socket.h src/internal/sio_client_impl.h src/internal/sio_packet.h \
+AM_SOURCES = $(SRC_IN) src/sio_client.cpp src/sio_socket.cpp src/internal/sio_client_impl.cpp src/internal/sio_packet.cpp src/sio_client.h src/sio_message.h src/sio_socket.h src/internal/sio_client_impl.h src/internal/sio_packet.h \
 select_tool.h select_tool.cpp line_fit.h line_fit.cpp card_path.h card_path.cpp loc_point.h loc_point.cpp ant.cpp ant.h card.cpp card.h clock.h \
 crc.cpp crc.h io_buf.h line.h loc_tool.cpp loc_tool.h message.cpp \
 message_file.h message.h net-service.cpp net-service.h point.cpp point.h tdoa_sync.cpp tdoa_sync.h \
-worker.cpp worker.h zio.h zloop.h znet.cpp znet.h zstream.h
+worker.cpp worker.h zio.h zloop.h znet.cpp znet.h zstream.h site_area.cpp  site_area.h area.h area.cpp
 
 AM_CPPFLAGS = -Wall -pthread -m64 -std=c++11 -fPIC -I${prefix}/include -I./src -I$(prefix)/mysql/include -I../include/websocketpp -I../include
 AM_LDFLAGS = -Wall -pthread -m64 -std=c++11 -fPIC -L${prefix}/lib  -L$(prefix)/mysql/lib
@@ -255,6 +261,9 @@ client_LDFLAGS = ${AM_LDFLAGS}  -L. -lzlog
 test_SOURCES = test.cpp base64.cpp
 test_CPPFLAGS = ${AM_CPPFLAGS}
 test_LDFLAGS = ${AM_LDFLAGS}  -L. -lzlog -lrt
+visit_SOURCES = visit.cpp 
+visit_CPPFLAGS = ${AM_CPPFLAGS} -D_TEST_
+visit_LDFLAGS = ${AM_LDFLAGS}  
 EXTRA_DIST = message_file.h
 all: all-am
 
@@ -346,6 +355,9 @@ client$(EXEEXT): $(client_OBJECTS) $(client_DEPENDENCIES) $(EXTRA_client_DEPENDE
 test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) 
 	@rm -f test$(EXEEXT)
 	$(test_LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS)
+visit$(EXEEXT): $(visit_OBJECTS) $(visit_DEPENDENCIES) $(EXTRA_visit_DEPENDENCIES) 
+	@rm -f visit$(EXEEXT)
+	$(visit_LINK) $(visit_OBJECTS) $(visit_LDADD) $(LIBS)
 yals$(EXEEXT): $(yals_OBJECTS) $(yals_DEPENDENCIES) $(EXTRA_yals_DEPENDENCIES) 
 	@rm -f yals$(EXEEXT)
 	$(yals_LINK) $(yals_OBJECTS) $(yals_LDADD) $(LIBS)
@@ -361,12 +373,13 @@ include ./$(DEPDIR)/client-client.Po
 include ./$(DEPDIR)/client-message_file.Po
 include ./$(DEPDIR)/test-base64.Po
 include ./$(DEPDIR)/test-test.Po
+include ./$(DEPDIR)/visit-visit.Po
 include ./$(DEPDIR)/yals-CDBConnPool.Po
 include ./$(DEPDIR)/yals-CDBConnect.Po
 include ./$(DEPDIR)/yals-CDBHelper.Po
 include ./$(DEPDIR)/yals-CDBResultSet.Po
-include ./$(DEPDIR)/yals-IniFile.Po
 include ./$(DEPDIR)/yals-ant.Po
+include ./$(DEPDIR)/yals-area.Po
 include ./$(DEPDIR)/yals-card.Po
 include ./$(DEPDIR)/yals-card_path.Po
 include ./$(DEPDIR)/yals-crc.Po
@@ -384,6 +397,7 @@ include ./$(DEPDIR)/yals-sio_client.Po
 include ./$(DEPDIR)/yals-sio_client_impl.Po
 include ./$(DEPDIR)/yals-sio_packet.Po
 include ./$(DEPDIR)/yals-sio_socket.Po
+include ./$(DEPDIR)/yals-site_area.Po
 include ./$(DEPDIR)/yals-tdoa_sync.Po
 include ./$(DEPDIR)/yals-worker.Po
 include ./$(DEPDIR)/yals-wsClient.Po
@@ -475,6 +489,20 @@ test-base64.obj: base64.cpp
 #	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
 #	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test-base64.obj `if test -f 'base64.cpp'; then $(CYGPATH_W) 'base64.cpp'; else $(CYGPATH_W) '$(srcdir)/base64.cpp'; fi`
 
+visit-visit.o: visit.cpp
+	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(visit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT visit-visit.o -MD -MP -MF $(DEPDIR)/visit-visit.Tpo -c -o visit-visit.o `test -f 'visit.cpp' || echo '$(srcdir)/'`visit.cpp
+	$(am__mv) $(DEPDIR)/visit-visit.Tpo $(DEPDIR)/visit-visit.Po
+#	source='visit.cpp' object='visit-visit.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(visit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o visit-visit.o `test -f 'visit.cpp' || echo '$(srcdir)/'`visit.cpp
+
+visit-visit.obj: visit.cpp
+	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(visit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT visit-visit.obj -MD -MP -MF $(DEPDIR)/visit-visit.Tpo -c -o visit-visit.obj `if test -f 'visit.cpp'; then $(CYGPATH_W) 'visit.cpp'; else $(CYGPATH_W) '$(srcdir)/visit.cpp'; fi`
+	$(am__mv) $(DEPDIR)/visit-visit.Tpo $(DEPDIR)/visit-visit.Po
+#	source='visit.cpp' object='visit-visit.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(visit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o visit-visit.obj `if test -f 'visit.cpp'; then $(CYGPATH_W) 'visit.cpp'; else $(CYGPATH_W) '$(srcdir)/visit.cpp'; fi`
+
 yals-singleton_test_class1.o: websocket/singleton_test_class1.cpp
 	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-singleton_test_class1.o -MD -MP -MF $(DEPDIR)/yals-singleton_test_class1.Tpo -c -o yals-singleton_test_class1.o `test -f 'websocket/singleton_test_class1.cpp' || echo '$(srcdir)/'`websocket/singleton_test_class1.cpp
 	$(am__mv) $(DEPDIR)/yals-singleton_test_class1.Tpo $(DEPDIR)/yals-singleton_test_class1.Po
@@ -601,20 +629,6 @@ yals-jsonBuilder.obj: websocket/jsonBuilder.cpp
 #	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
 #	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o yals-jsonBuilder.obj `if test -f 'websocket/jsonBuilder.cpp'; then $(CYGPATH_W) 'websocket/jsonBuilder.cpp'; else $(CYGPATH_W) '$(srcdir)/websocket/jsonBuilder.cpp'; fi`
 
-yals-IniFile.o: IniFile.cpp
-	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-IniFile.o -MD -MP -MF $(DEPDIR)/yals-IniFile.Tpo -c -o yals-IniFile.o `test -f 'IniFile.cpp' || echo '$(srcdir)/'`IniFile.cpp
-	$(am__mv) $(DEPDIR)/yals-IniFile.Tpo $(DEPDIR)/yals-IniFile.Po
-#	source='IniFile.cpp' object='yals-IniFile.o' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-#	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o yals-IniFile.o `test -f 'IniFile.cpp' || echo '$(srcdir)/'`IniFile.cpp
-
-yals-IniFile.obj: IniFile.cpp
-	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-IniFile.obj -MD -MP -MF $(DEPDIR)/yals-IniFile.Tpo -c -o yals-IniFile.obj `if test -f 'IniFile.cpp'; then $(CYGPATH_W) 'IniFile.cpp'; else $(CYGPATH_W) '$(srcdir)/IniFile.cpp'; fi`
-	$(am__mv) $(DEPDIR)/yals-IniFile.Tpo $(DEPDIR)/yals-IniFile.Po
-#	source='IniFile.cpp' object='yals-IniFile.obj' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-#	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o yals-IniFile.obj `if test -f 'IniFile.cpp'; then $(CYGPATH_W) 'IniFile.cpp'; else $(CYGPATH_W) '$(srcdir)/IniFile.cpp'; fi`
-
 yals-sio_client.o: src/sio_client.cpp
 	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-sio_client.o -MD -MP -MF $(DEPDIR)/yals-sio_client.Tpo -c -o yals-sio_client.o `test -f 'src/sio_client.cpp' || echo '$(srcdir)/'`src/sio_client.cpp
 	$(am__mv) $(DEPDIR)/yals-sio_client.Tpo $(DEPDIR)/yals-sio_client.Po
@@ -867,6 +881,34 @@ yals-znet.obj: znet.cpp
 #	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
 #	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o yals-znet.obj `if test -f 'znet.cpp'; then $(CYGPATH_W) 'znet.cpp'; else $(CYGPATH_W) '$(srcdir)/znet.cpp'; fi`
 
+yals-site_area.o: site_area.cpp
+	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-site_area.o -MD -MP -MF $(DEPDIR)/yals-site_area.Tpo -c -o yals-site_area.o `test -f 'site_area.cpp' || echo '$(srcdir)/'`site_area.cpp
+	$(am__mv) $(DEPDIR)/yals-site_area.Tpo $(DEPDIR)/yals-site_area.Po
+#	source='site_area.cpp' object='yals-site_area.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o yals-site_area.o `test -f 'site_area.cpp' || echo '$(srcdir)/'`site_area.cpp
+
+yals-site_area.obj: site_area.cpp
+	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-site_area.obj -MD -MP -MF $(DEPDIR)/yals-site_area.Tpo -c -o yals-site_area.obj `if test -f 'site_area.cpp'; then $(CYGPATH_W) 'site_area.cpp'; else $(CYGPATH_W) '$(srcdir)/site_area.cpp'; fi`
+	$(am__mv) $(DEPDIR)/yals-site_area.Tpo $(DEPDIR)/yals-site_area.Po
+#	source='site_area.cpp' object='yals-site_area.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o yals-site_area.obj `if test -f 'site_area.cpp'; then $(CYGPATH_W) 'site_area.cpp'; else $(CYGPATH_W) '$(srcdir)/site_area.cpp'; fi`
+
+yals-area.o: area.cpp
+	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-area.o -MD -MP -MF $(DEPDIR)/yals-area.Tpo -c -o yals-area.o `test -f 'area.cpp' || echo '$(srcdir)/'`area.cpp
+	$(am__mv) $(DEPDIR)/yals-area.Tpo $(DEPDIR)/yals-area.Po
+#	source='area.cpp' object='yals-area.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o yals-area.o `test -f 'area.cpp' || echo '$(srcdir)/'`area.cpp
+
+yals-area.obj: area.cpp
+	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-area.obj -MD -MP -MF $(DEPDIR)/yals-area.Tpo -c -o yals-area.obj `if test -f 'area.cpp'; then $(CYGPATH_W) 'area.cpp'; else $(CYGPATH_W) '$(srcdir)/area.cpp'; fi`
+	$(am__mv) $(DEPDIR)/yals-area.Tpo $(DEPDIR)/yals-area.Po
+#	source='area.cpp' object='yals-area.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o yals-area.obj `if test -f 'area.cpp'; then $(CYGPATH_W) 'area.cpp'; else $(CYGPATH_W) '$(srcdir)/area.cpp'; fi`
+
 yals-main.o: main.cpp
 	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-main.o -MD -MP -MF $(DEPDIR)/yals-main.Tpo -c -o yals-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
 	$(am__mv) $(DEPDIR)/yals-main.Tpo $(DEPDIR)/yals-main.Po

+ 8 - 3
Makefile.am

@@ -1,12 +1,13 @@
 bin_PROGRAMS=yals 
-noinst_PROGRAMS=client async test
+noinst_PROGRAMS=client async test visit
+
 SRC_IN= websocket/singleton_test_class1.cpp  websocket/wsClient.cpp websocket/wsClientMgr.cpp websocket/wsTimerThread.cpp db_api/CDBConnect.cpp db_api/CDBConnPool.cpp db_api/CDBHelper.cpp db_api/CDBResultSet.cpp websocket/jsonBuilder.cpp websocket/jsonBuilder.h websocket/thread_safe_map.h
 
-AM_SOURCES= $(SRC_IN) IniFile.cpp src/sio_client.cpp src/sio_socket.cpp src/internal/sio_client_impl.cpp src/internal/sio_packet.cpp src/sio_client.h src/sio_message.h src/sio_socket.h src/internal/sio_client_impl.h src/internal/sio_packet.h \
+AM_SOURCES= $(SRC_IN) src/sio_client.cpp src/sio_socket.cpp src/internal/sio_client_impl.cpp src/internal/sio_packet.cpp src/sio_client.h src/sio_message.h src/sio_socket.h src/internal/sio_client_impl.h src/internal/sio_packet.h \
 select_tool.h select_tool.cpp line_fit.h line_fit.cpp card_path.h card_path.cpp loc_point.h loc_point.cpp ant.cpp ant.h card.cpp card.h clock.h \
 crc.cpp crc.h io_buf.h line.h loc_tool.cpp loc_tool.h message.cpp \
 message_file.h message.h net-service.cpp net-service.h point.cpp point.h tdoa_sync.cpp tdoa_sync.h \
-worker.cpp worker.h zio.h zloop.h znet.cpp znet.h zstream.h
+worker.cpp worker.h zio.h zloop.h znet.cpp znet.h zstream.h site_area.cpp  site_area.h area.h area.cpp
 
 AM_CPPFLAGS=-Wall -pthread -m64 -std=c++11 -fPIC -I${prefix}/include -I./src -I$(prefix)/mysql/include -I../include/websocketpp -I../include
 AM_LDFLAGS= -Wall -pthread -m64 -std=c++11 -fPIC -L${prefix}/lib  -L$(prefix)/mysql/lib
@@ -27,6 +28,10 @@ test_SOURCES=test.cpp base64.cpp
 test_CPPFLAGS=${AM_CPPFLAGS}
 test_LDFLAGS=${AM_LDFLAGS}  -L. -lzlog -lrt
 
+visit_SOURCES=visit.cpp 
+visit_CPPFLAGS=${AM_CPPFLAGS} -D_TEST_
+visit_LDFLAGS=${AM_LDFLAGS}  
+
 DEFS= 
 EXTRA_DIST=message_file.h
 

+ 72 - 30
Makefile.in

@@ -49,7 +49,8 @@ NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
 bin_PROGRAMS = yals$(EXEEXT)
-noinst_PROGRAMS = client$(EXEEXT) async$(EXEEXT) test$(EXEEXT)
+noinst_PROGRAMS = client$(EXEEXT) async$(EXEEXT) test$(EXEEXT) \
+	visit$(EXEEXT)
 subdir = .
 DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in $(top_srcdir)/configure COPYING INSTALL \
@@ -81,21 +82,26 @@ test_OBJECTS = $(am_test_OBJECTS)
 test_LDADD = $(LDADD)
 test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(test_LDFLAGS) \
 	$(LDFLAGS) -o $@
+am_visit_OBJECTS = visit-visit.$(OBJEXT)
+visit_OBJECTS = $(am_visit_OBJECTS)
+visit_LDADD = $(LDADD)
+visit_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(visit_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am__objects_1 = yals-singleton_test_class1.$(OBJEXT) \
 	yals-wsClient.$(OBJEXT) yals-wsClientMgr.$(OBJEXT) \
 	yals-wsTimerThread.$(OBJEXT) yals-CDBConnect.$(OBJEXT) \
 	yals-CDBConnPool.$(OBJEXT) yals-CDBHelper.$(OBJEXT) \
 	yals-CDBResultSet.$(OBJEXT) yals-jsonBuilder.$(OBJEXT)
-am__objects_2 = $(am__objects_1) yals-IniFile.$(OBJEXT) \
-	yals-sio_client.$(OBJEXT) yals-sio_socket.$(OBJEXT) \
-	yals-sio_client_impl.$(OBJEXT) yals-sio_packet.$(OBJEXT) \
-	yals-select_tool.$(OBJEXT) yals-line_fit.$(OBJEXT) \
-	yals-card_path.$(OBJEXT) yals-loc_point.$(OBJEXT) \
-	yals-ant.$(OBJEXT) yals-card.$(OBJEXT) yals-crc.$(OBJEXT) \
-	yals-loc_tool.$(OBJEXT) yals-message.$(OBJEXT) \
-	yals-net-service.$(OBJEXT) yals-point.$(OBJEXT) \
-	yals-tdoa_sync.$(OBJEXT) yals-worker.$(OBJEXT) \
-	yals-znet.$(OBJEXT)
+am__objects_2 = $(am__objects_1) yals-sio_client.$(OBJEXT) \
+	yals-sio_socket.$(OBJEXT) yals-sio_client_impl.$(OBJEXT) \
+	yals-sio_packet.$(OBJEXT) yals-select_tool.$(OBJEXT) \
+	yals-line_fit.$(OBJEXT) yals-card_path.$(OBJEXT) \
+	yals-loc_point.$(OBJEXT) yals-ant.$(OBJEXT) \
+	yals-card.$(OBJEXT) yals-crc.$(OBJEXT) yals-loc_tool.$(OBJEXT) \
+	yals-message.$(OBJEXT) yals-net-service.$(OBJEXT) \
+	yals-point.$(OBJEXT) yals-tdoa_sync.$(OBJEXT) \
+	yals-worker.$(OBJEXT) yals-znet.$(OBJEXT) \
+	yals-site_area.$(OBJEXT) yals-area.$(OBJEXT)
 am_yals_OBJECTS = $(am__objects_2) yals-main.$(OBJEXT)
 yals_OBJECTS = $(am_yals_OBJECTS)
 yals_LDADD = $(LDADD)
@@ -115,9 +121,9 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 CCLD = $(CC)
 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 SOURCES = $(async_SOURCES) $(client_SOURCES) $(test_SOURCES) \
-	$(yals_SOURCES)
+	$(visit_SOURCES) $(yals_SOURCES)
 DIST_SOURCES = $(async_SOURCES) $(client_SOURCES) $(test_SOURCES) \
-	$(yals_SOURCES)
+	$(visit_SOURCES) $(yals_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -235,11 +241,11 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 SRC_IN = websocket/singleton_test_class1.cpp  websocket/wsClient.cpp websocket/wsClientMgr.cpp websocket/wsTimerThread.cpp db_api/CDBConnect.cpp db_api/CDBConnPool.cpp db_api/CDBHelper.cpp db_api/CDBResultSet.cpp websocket/jsonBuilder.cpp websocket/jsonBuilder.h websocket/thread_safe_map.h
-AM_SOURCES = $(SRC_IN) IniFile.cpp src/sio_client.cpp src/sio_socket.cpp src/internal/sio_client_impl.cpp src/internal/sio_packet.cpp src/sio_client.h src/sio_message.h src/sio_socket.h src/internal/sio_client_impl.h src/internal/sio_packet.h \
+AM_SOURCES = $(SRC_IN) src/sio_client.cpp src/sio_socket.cpp src/internal/sio_client_impl.cpp src/internal/sio_packet.cpp src/sio_client.h src/sio_message.h src/sio_socket.h src/internal/sio_client_impl.h src/internal/sio_packet.h \
 select_tool.h select_tool.cpp line_fit.h line_fit.cpp card_path.h card_path.cpp loc_point.h loc_point.cpp ant.cpp ant.h card.cpp card.h clock.h \
 crc.cpp crc.h io_buf.h line.h loc_tool.cpp loc_tool.h message.cpp \
 message_file.h message.h net-service.cpp net-service.h point.cpp point.h tdoa_sync.cpp tdoa_sync.h \
-worker.cpp worker.h zio.h zloop.h znet.cpp znet.h zstream.h
+worker.cpp worker.h zio.h zloop.h znet.cpp znet.h zstream.h site_area.cpp  site_area.h area.h area.cpp
 
 AM_CPPFLAGS = -Wall -pthread -m64 -std=c++11 -fPIC -I${prefix}/include -I./src -I$(prefix)/mysql/include -I../include/websocketpp -I../include
 AM_LDFLAGS = -Wall -pthread -m64 -std=c++11 -fPIC -L${prefix}/lib  -L$(prefix)/mysql/lib
@@ -255,6 +261,9 @@ client_LDFLAGS = ${AM_LDFLAGS}  -L. -lzlog
 test_SOURCES = test.cpp base64.cpp
 test_CPPFLAGS = ${AM_CPPFLAGS}
 test_LDFLAGS = ${AM_LDFLAGS}  -L. -lzlog -lrt
+visit_SOURCES = visit.cpp 
+visit_CPPFLAGS = ${AM_CPPFLAGS} -D_TEST_
+visit_LDFLAGS = ${AM_LDFLAGS}  
 EXTRA_DIST = message_file.h
 all: all-am
 
@@ -346,6 +355,9 @@ client$(EXEEXT): $(client_OBJECTS) $(client_DEPENDENCIES) $(EXTRA_client_DEPENDE
 test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) 
 	@rm -f test$(EXEEXT)
 	$(test_LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS)
+visit$(EXEEXT): $(visit_OBJECTS) $(visit_DEPENDENCIES) $(EXTRA_visit_DEPENDENCIES) 
+	@rm -f visit$(EXEEXT)
+	$(visit_LINK) $(visit_OBJECTS) $(visit_LDADD) $(LIBS)
 yals$(EXEEXT): $(yals_OBJECTS) $(yals_DEPENDENCIES) $(EXTRA_yals_DEPENDENCIES) 
 	@rm -f yals$(EXEEXT)
 	$(yals_LINK) $(yals_OBJECTS) $(yals_LDADD) $(LIBS)
@@ -361,12 +373,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/client-message_file.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-base64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/visit-visit.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-CDBConnPool.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-CDBConnect.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-CDBHelper.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-CDBResultSet.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-IniFile.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-ant.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-area.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-card.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-card_path.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-crc.Po@am__quote@
@@ -384,6 +397,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-sio_client_impl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-sio_packet.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-sio_socket.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-site_area.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-tdoa_sync.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-worker.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yals-wsClient.Po@am__quote@
@@ -475,6 +489,20 @@ test-base64.obj: base64.cpp
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test-base64.obj `if test -f 'base64.cpp'; then $(CYGPATH_W) 'base64.cpp'; else $(CYGPATH_W) '$(srcdir)/base64.cpp'; fi`
 
+visit-visit.o: visit.cpp
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(visit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT visit-visit.o -MD -MP -MF $(DEPDIR)/visit-visit.Tpo -c -o visit-visit.o `test -f 'visit.cpp' || echo '$(srcdir)/'`visit.cpp
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/visit-visit.Tpo $(DEPDIR)/visit-visit.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='visit.cpp' object='visit-visit.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(visit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o visit-visit.o `test -f 'visit.cpp' || echo '$(srcdir)/'`visit.cpp
+
+visit-visit.obj: visit.cpp
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(visit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT visit-visit.obj -MD -MP -MF $(DEPDIR)/visit-visit.Tpo -c -o visit-visit.obj `if test -f 'visit.cpp'; then $(CYGPATH_W) 'visit.cpp'; else $(CYGPATH_W) '$(srcdir)/visit.cpp'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/visit-visit.Tpo $(DEPDIR)/visit-visit.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='visit.cpp' object='visit-visit.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(visit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o visit-visit.obj `if test -f 'visit.cpp'; then $(CYGPATH_W) 'visit.cpp'; else $(CYGPATH_W) '$(srcdir)/visit.cpp'; fi`
+
 yals-singleton_test_class1.o: websocket/singleton_test_class1.cpp
 @am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-singleton_test_class1.o -MD -MP -MF $(DEPDIR)/yals-singleton_test_class1.Tpo -c -o yals-singleton_test_class1.o `test -f 'websocket/singleton_test_class1.cpp' || echo '$(srcdir)/'`websocket/singleton_test_class1.cpp
 @am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/yals-singleton_test_class1.Tpo $(DEPDIR)/yals-singleton_test_class1.Po
@@ -601,20 +629,6 @@ yals-jsonBuilder.obj: websocket/jsonBuilder.cpp
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o yals-jsonBuilder.obj `if test -f 'websocket/jsonBuilder.cpp'; then $(CYGPATH_W) 'websocket/jsonBuilder.cpp'; else $(CYGPATH_W) '$(srcdir)/websocket/jsonBuilder.cpp'; fi`
 
-yals-IniFile.o: IniFile.cpp
-@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-IniFile.o -MD -MP -MF $(DEPDIR)/yals-IniFile.Tpo -c -o yals-IniFile.o `test -f 'IniFile.cpp' || echo '$(srcdir)/'`IniFile.cpp
-@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/yals-IniFile.Tpo $(DEPDIR)/yals-IniFile.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='IniFile.cpp' object='yals-IniFile.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o yals-IniFile.o `test -f 'IniFile.cpp' || echo '$(srcdir)/'`IniFile.cpp
-
-yals-IniFile.obj: IniFile.cpp
-@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-IniFile.obj -MD -MP -MF $(DEPDIR)/yals-IniFile.Tpo -c -o yals-IniFile.obj `if test -f 'IniFile.cpp'; then $(CYGPATH_W) 'IniFile.cpp'; else $(CYGPATH_W) '$(srcdir)/IniFile.cpp'; fi`
-@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/yals-IniFile.Tpo $(DEPDIR)/yals-IniFile.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='IniFile.cpp' object='yals-IniFile.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o yals-IniFile.obj `if test -f 'IniFile.cpp'; then $(CYGPATH_W) 'IniFile.cpp'; else $(CYGPATH_W) '$(srcdir)/IniFile.cpp'; fi`
-
 yals-sio_client.o: src/sio_client.cpp
 @am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-sio_client.o -MD -MP -MF $(DEPDIR)/yals-sio_client.Tpo -c -o yals-sio_client.o `test -f 'src/sio_client.cpp' || echo '$(srcdir)/'`src/sio_client.cpp
 @am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/yals-sio_client.Tpo $(DEPDIR)/yals-sio_client.Po
@@ -867,6 +881,34 @@ yals-znet.obj: znet.cpp
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o yals-znet.obj `if test -f 'znet.cpp'; then $(CYGPATH_W) 'znet.cpp'; else $(CYGPATH_W) '$(srcdir)/znet.cpp'; fi`
 
+yals-site_area.o: site_area.cpp
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-site_area.o -MD -MP -MF $(DEPDIR)/yals-site_area.Tpo -c -o yals-site_area.o `test -f 'site_area.cpp' || echo '$(srcdir)/'`site_area.cpp
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/yals-site_area.Tpo $(DEPDIR)/yals-site_area.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='site_area.cpp' object='yals-site_area.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o yals-site_area.o `test -f 'site_area.cpp' || echo '$(srcdir)/'`site_area.cpp
+
+yals-site_area.obj: site_area.cpp
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-site_area.obj -MD -MP -MF $(DEPDIR)/yals-site_area.Tpo -c -o yals-site_area.obj `if test -f 'site_area.cpp'; then $(CYGPATH_W) 'site_area.cpp'; else $(CYGPATH_W) '$(srcdir)/site_area.cpp'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/yals-site_area.Tpo $(DEPDIR)/yals-site_area.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='site_area.cpp' object='yals-site_area.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o yals-site_area.obj `if test -f 'site_area.cpp'; then $(CYGPATH_W) 'site_area.cpp'; else $(CYGPATH_W) '$(srcdir)/site_area.cpp'; fi`
+
+yals-area.o: area.cpp
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-area.o -MD -MP -MF $(DEPDIR)/yals-area.Tpo -c -o yals-area.o `test -f 'area.cpp' || echo '$(srcdir)/'`area.cpp
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/yals-area.Tpo $(DEPDIR)/yals-area.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='area.cpp' object='yals-area.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o yals-area.o `test -f 'area.cpp' || echo '$(srcdir)/'`area.cpp
+
+yals-area.obj: area.cpp
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-area.obj -MD -MP -MF $(DEPDIR)/yals-area.Tpo -c -o yals-area.obj `if test -f 'area.cpp'; then $(CYGPATH_W) 'area.cpp'; else $(CYGPATH_W) '$(srcdir)/area.cpp'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/yals-area.Tpo $(DEPDIR)/yals-area.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='area.cpp' object='yals-area.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o yals-area.obj `if test -f 'area.cpp'; then $(CYGPATH_W) 'area.cpp'; else $(CYGPATH_W) '$(srcdir)/area.cpp'; fi`
+
 yals-main.o: main.cpp
 @am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(yals_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT yals-main.o -MD -MP -MF $(DEPDIR)/yals-main.Tpo -c -o yals-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
 @am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/yals-main.Tpo $(DEPDIR)/yals-main.Po


+ 1 - 0
a.sh

@@ -0,0 +1 @@
+g++ ant.cpp point.cpp -std=c++11 -I../include -lzlog -D_TEST

+ 35 - 33
ant.cpp

@@ -4,17 +4,13 @@
 #include <math.h>
 #include "ant.h"
 
+template<> std::shared_ptr<sit_list> 
+single_base<sit_list, int, std::shared_ptr<site>>::m_instance=std::make_shared<sit_list>();
 int site::index()const
 {
 	return m_algo+(m_num_dims<<1);
 }
 
-sit_list*sit_list::instance()
-{
-	static sit_list _impl;
-	//_impl.load_from_db();
-	return &_impl;
-}
 site::site(int id)
 	:m_algo(0)
 	,m_num_dims(0)
@@ -28,10 +24,7 @@ const algo_config&site::config()const
 	return g_config[index()];
 }
 
-const site& sit_list::operator[](int id) const
-{
-    return m_list[id];
-} 
+ 
 static int str_split(char*s,char**rc)
 {
 	char**o=rc;
@@ -59,19 +52,26 @@ void sit_list::read_sit_list(const char*fname)
 			continue;
 
 		id=atoi(s[1]);
-		if(id>(int)m_list.size())
-			continue;
 
 		int antid=atoi(s[2])-1;
 		if(antid>=2)
 			continue;
-
-		m_list[id].m_id=id;
-		m_list[id].m_ant[antid].set(atof(s[4]),-atof(s[5]));
+		auto tmp = m_instance->get(id);
+		if(tmp==nullptr)
+		{
+			tmp = std::make_shared<site>();
+			tmp->m_id=id;
+		}
+		tmp->m_ant[antid].set(atof(s[4]),-atof(s[5]));
+		instance()->add(id,tmp);
+		std_info("211111 id=%dsize = %d",id,instance()->m_map.size());
+		//m_list[id].m_id=id;
+		//m_list[id].m_ant[antid].set(atof(s[4]),-atof(s[5]));
 	}
-
-	for(auto&sit:m_list)
+	
+	for(auto&sit_:m_instance->m_map)
 	{
+		auto & sit = *(sit_.second);
 		if(sit.m_id==-1)
 			continue;
 
@@ -98,34 +98,34 @@ void sit_list::read_ant_path(const char*fname)
 			continue;
 
 		id=atoi(s[0]);
-		if(id>(int)m_list.size())
+		auto s_ = m_instance->get(id);
+		if(s_==nullptr)
 			continue;
 
 		pid=atoi(s[1]);
 		if(pid>2)
           continue;
-
         point p1(atof(s[2]),-atof(s[3]));
         point p2(atof(s[5]),-atof(s[6]));
-        
+		auto &sit_ = *s_; 
         if(pid == 0)
         {
             line_v l(p1,p2);
             {
-                point px = l.line::projection(m_list[id]);
-                m_list[id].set(px);
+                point px = l.line::projection(sit_);
+                sit_.set(px);
                 for(int i=0;i<2;i++)
                 {
                     path p;
                     p.m_slope[0] = atof(s[8]);
                     p.m_line[0] = line_v(px,l[i]);
-                    m_list[id].m_ant[i].m_path.push_back(p);
+                    sit_.m_ant[i].m_path.push_back(p);
                 }
             }
         }
         else 
         {
-            ant &a = pid<0?m_list[id].m_ant[0]:m_list[id].m_ant[1];
+            ant &a = pid<0?sit_.m_ant[0]:sit_.m_ant[1];
             if(a.m_path.size()!=0)
             {
                 path &p = a.m_path[0];
@@ -140,13 +140,14 @@ void sit_list::read_ant_path(const char*fname)
                 a.m_path.push_back(p);
             }
             if(abs(pid)==1)
-				 m_list[id].set(p1);
+				 sit_.set(p1);
         }
 	}
 	fclose(fp);
 
-	for(auto&s:m_list)
+	for(auto&_s:m_instance->m_map)
 	{
+		auto & s = *(_s.second);
 		if(s.m_id==-1)
 			continue;
         s.swap();
@@ -188,16 +189,17 @@ algo_config site::g_config[]=
 	{ "tof-3",  3, 4, 0.1, 1 },
 	{ "tdoa-3", 4, 4, 0.1, 1 }
 };
+
 #ifdef _TEST
 int main()
 {
 	log_init("./log.ini");
-    sit_list *sl = sit_list::instance();
-	sl->load("data_reader_antenna.txt","path_tof.txt");
-    (*sl)[219].solving(0,100);
-    (*sl)[219].solving(1,100.5);
-    std_info("---%d",(*sl)[209].m_ant[0].m_path.size());
-    std_info("---%d",(*sl)[209][0].size());
-    std_info("---%s",(*sl)[209][0][0][0].to_string().c_str());
+    //sit_list *sl = sit_list::instance();
+	sit_list::instance()->load("data_reader_antenna.txt","path_tof.txt");
+	sit_list::instance()->get(219)->solving(0,100);
+	sit_list::instance()->get(219)->solving(1,100.5);
+    //std_info("---%d",(*sl)[209].m_ant[0].m_path.size());
+    //std_info("---%d",(*sl)[209][0].size());
+    //std_info("---%s",(*sl)[209][0][0][0].to_string().c_str());
 }
 #endif

+ 11 - 10
ant.h

@@ -11,6 +11,7 @@
 #include "log.h"
 #include "line.h"
 #include "point.h"
+#include "write-copy.h"
 
 struct path
 {
@@ -99,6 +100,7 @@ struct ant :point
     }
 
 };
+
 struct site:point
 {
 	static algo_config g_config[];
@@ -234,32 +236,28 @@ struct site:point
 };
 
 
-struct sit_list
+struct sit_list:single_base<sit_list,int,std::shared_ptr<site>>
 {
-	std::array<site,1000> m_list;
-
-	const site& operator[](int id) const;
 	void load(const char*ant_file,const char*path_file)
 	{
 		read_sit_list(ant_file);
 		read_ant_path(path_file);
 	}
 
-	void load_from_db()
+	static void load_from_db()
 	{
-		load("data_reader_antenna.txt","path_tof.txt");
+	//	load("data_reader_antenna.txt","path_tof.txt");
 	}
+
 	void read_sit_list(const char*fname);
 	void read_ant_path(const char*fname);
-
-	static sit_list*instance();
 };
 
 struct loc_message
 {
 	site     m_sit;
 	uint64_t m_num_ticks; //tof时间片m_tof或tdoa相对root时间
-	uint64_t  m_loc_time;
+	uint64_t m_loc_time;
 	uint32_t m_card_id;
 	int32_t	 m_card_ct;
 	int8_t   m_card_type;
@@ -271,7 +269,9 @@ struct loc_message
 
 
 	loc_message();
-	loc_message(site s,uint64_t num_ticks,uint64_t timestamp,uint32_t cardid,int32_t ct,int8_t type,int8_t antid,int16_t rav,int16_t acc,uint16_t sync_ct,uint16_t rssi)
+	loc_message(site s,uint64_t num_ticks,uint64_t timestamp,
+			uint32_t cardid,int32_t ct,int8_t type,int8_t antid,	
+			int16_t rav,int16_t acc,uint16_t sync_ct,uint16_t rssi)
 		:m_sit(s)
 		 ,m_num_ticks(num_ticks)
          ,m_loc_time(timestamp)
@@ -286,5 +286,6 @@ struct loc_message
 	{}
 	int tool_index()const;
 };
+
 #endif
 

+ 46 - 0
area.cpp

@@ -0,0 +1,46 @@
+#include <memory>
+#include <write-copy.h>
+
+#include <area.h>
+
+template<> std::shared_ptr<area_list> 
+single_base<area_list, int, std::shared_ptr<area>>::m_instance=std::make_shared<area_list>();
+
+struct area_impl
+{
+	area_impl()
+	{
+	}
+
+
+    void on_hover(int64_t card_id,std::shared_ptr<area_hover>&c,double speed)
+	{
+
+	}
+
+    void on_enter(int64_t card_id,std::shared_ptr<area_hover>&c,double speed)
+	{
+	
+	}
+
+    void on_leave(int64_t card_id,std::shared_ptr<area_hover>&c,double speed)
+	{
+	
+	
+	}
+};
+
+area_list::area_list()
+{
+}
+
+std::vector<std::shared_ptr<area>> area_list::get_area(const point&pt)
+{
+	std::vector<std::shared_ptr<area>> ret;
+	//需要添加根据点查找区域的算法
+
+
+
+	return std::move(ret);
+}
+

+ 162 - 0
area.h

@@ -0,0 +1,162 @@
+#ifndef _AREA_HPP_
+#define _AREA_HPP_
+
+#include <atomic>
+#include <algorithm>
+#include <iterator>
+#include <point.h>
+
+#include <write-copy.h>
+
+struct area_hover;
+struct point;
+struct area
+{
+	area()
+	{
+	}
+
+    virtual void on_hover(int64_t card_id,std::shared_ptr<area_hover>&c,double speed)=0;
+    virtual void on_enter(int64_t card_id,std::shared_ptr<area_hover>&c,double speed)=0;
+    virtual void on_leave(int64_t card_id,std::shared_ptr<area_hover>&c,double speed)=0;
+
+	int id()const
+	{
+		return m_id;
+	}
+
+	std::atomic<int> m_card_count;
+
+	int    m_id;
+	double m_limit_speed;
+
+//	std::string m_name;
+//	int m_limit_time_second;
+//	int m_limit_person_count;
+//	int m_area_type;
+
+	std::vector<point> m_bound;
+};
+
+struct area_list:single_base<area_list,int,std::shared_ptr<area>>
+{
+	area_list();
+
+	std::vector<std::shared_ptr<area>> get_area(const point&pt);
+	static void init_from_db()
+	{
+	}
+};
+
+struct area_hover
+{
+	std::shared_ptr<area>  m_area;
+	time_t m_enter_time,m_last_time;
+	point  m_enter_point,m_last_point;
+	int    m_num_speeding;
+
+	area_hover(std::shared_ptr<area>&area,const point&pt,double speed)
+		:m_area(area)
+	{
+		m_enter_time=m_last_time=time(0);
+		m_enter_point=m_last_point=pt;
+		m_num_speeding=0;
+		if(speed>m_area->m_limit_speed)
+			m_num_speeding++;
+	}
+
+	int id()const
+	{
+		return m_area->id();
+	}
+
+	bool operator == (const area_hover&o)const
+	{
+		return m_area->id()==o.m_area->id();
+	}
+
+	bool operator < (const area_hover&o)const
+	{
+		return m_area->id()<o.m_area->id();
+	}
+};
+
+//每张卡包含一个对象
+//在解析出数据点时,调用on_point
+struct area_tool
+{
+	std::vector<std::shared_ptr<area_hover>> m_clist;
+	void on_point(int card_id,const point&pt,double speed)
+	{
+		std::vector<std::shared_ptr<area>> areas=area_list::instance()->get_area(pt);//找出所有的区域
+        std::sort(areas.begin(),areas.end(),[](std::shared_ptr<area>l,std::shared_ptr<area>r){
+			return l->id()<r->id();
+		});
+
+		auto c1=m_clist.begin(),ce=m_clist.end();
+		auto a1=areas.begin() ,ae=areas.end();
+
+		std::vector<std::shared_ptr<area_hover>> nlist;
+
+		while (c1!=ce && a1!=ae)
+		{
+			if ((*c1)->id()<(*a1)->id()) 
+			{ 
+				do_leave_biz(card_id,*c1,speed);
+				++c1;
+			}
+			else if ((*a1)->id()<(*c1)->id()) 
+			{
+				nlist.push_back(std::make_shared<area_hover>(*a1,pt,speed));
+				do_enter_biz(card_id,nlist.back(),speed);
+				++a1;
+			}
+			else 
+			{ 
+				nlist.push_back(*c1);
+				do_hover_biz(card_id,nlist.back(),speed);
+				++c1,++a1;
+			}
+		}
+
+		while(c1!=ce)
+		{
+			do_leave_biz(card_id,*c1,speed);
+			++c1;
+		}
+
+		while(a1!=ae)
+		{
+			nlist.push_back(std::make_shared<area_hover>(*a1,pt,speed));
+			do_enter_biz(card_id,nlist.back(),speed);
+			++a1;
+		}
+
+		m_clist=std::move(nlist);
+	}
+
+
+	//检测是否超时
+    void on_timer(int64_t card_id)
+	{
+	
+	}
+
+    void do_hover_biz(int64_t card_id,std::shared_ptr<area_hover>&a,double speed)
+	{
+		a->m_area->on_hover(card_id,a,speed);
+	}
+
+    void do_enter_biz(int64_t card_id,std::shared_ptr<area_hover> a,double speed)
+	{
+		a->m_area->on_enter(card_id,a,speed);
+	}
+
+    void do_leave_biz(int64_t card_id,std::shared_ptr<area_hover> a,double speed)
+	{
+		a->m_area->on_leave(card_id,a,speed);
+	}
+};
+
+#endif
+

+ 19 - 19
autom4te.cache/requests

@@ -81,58 +81,58 @@
                         'configure.ac'
                       ],
                       {
-                        '_LT_AC_TAGCONFIG' => 1,
                         'AM_PROG_F77_C_O' => 1,
-                        'AC_INIT' => 1,
+                        '_LT_AC_TAGCONFIG' => 1,
                         'm4_pattern_forbid' => 1,
-                        'AC_CANONICAL_TARGET' => 1,
+                        'AC_INIT' => 1,
                         '_AM_COND_IF' => 1,
-                        'AC_CONFIG_LIBOBJ_DIR' => 1,
+                        'AC_CANONICAL_TARGET' => 1,
                         'AC_SUBST' => 1,
-                        'AC_CANONICAL_HOST' => 1,
+                        'AC_CONFIG_LIBOBJ_DIR' => 1,
                         'AC_FC_SRCEXT' => 1,
+                        'AC_CANONICAL_HOST' => 1,
                         'AC_PROG_LIBTOOL' => 1,
                         'AM_PROG_MKDIR_P' => 1,
                         'AM_INIT_AUTOMAKE' => 1,
-                        'AC_CONFIG_SUBDIRS' => 1,
                         'AM_PATH_GUILE' => 1,
+                        'AC_CONFIG_SUBDIRS' => 1,
                         'AM_AUTOMAKE_VERSION' => 1,
                         'LT_CONFIG_LTDL_DIR' => 1,
-                        'AC_REQUIRE_AUX_FILE' => 1,
                         'AC_CONFIG_LINKS' => 1,
-                        'LT_SUPPORTED_TAG' => 1,
+                        'AC_REQUIRE_AUX_FILE' => 1,
                         'm4_sinclude' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
                         'AM_MAINTAINER_MODE' => 1,
                         'AM_NLS' => 1,
                         'AC_FC_PP_DEFINE' => 1,
                         'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
-                        '_m4_warn' => 1,
                         'AM_MAKEFILE_INCLUDE' => 1,
+                        '_m4_warn' => 1,
                         'AM_PROG_CXX_C_O' => 1,
-                        '_AM_COND_ENDIF' => 1,
                         '_AM_MAKEFILE_INCLUDE' => 1,
+                        '_AM_COND_ENDIF' => 1,
                         'AM_ENABLE_MULTILIB' => 1,
                         'AM_PROG_MOC' => 1,
                         'AM_SILENT_RULES' => 1,
                         'AC_CONFIG_FILES' => 1,
-                        'include' => 1,
                         'LT_INIT' => 1,
-                        'AM_PROG_AR' => 1,
+                        'include' => 1,
                         'AM_GNU_GETTEXT' => 1,
+                        'AM_PROG_AR' => 1,
                         'AC_LIBSOURCE' => 1,
-                        'AC_CANONICAL_BUILD' => 1,
                         'AM_PROG_FC_C_O' => 1,
+                        'AC_CANONICAL_BUILD' => 1,
                         'AC_FC_FREEFORM' => 1,
-                        'AC_FC_PP_SRCEXT' => 1,
                         'AH_OUTPUT' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
+                        'AC_FC_PP_SRCEXT' => 1,
                         'AC_CONFIG_AUX_DIR' => 1,
-                        'AM_PROG_CC_C_O' => 1,
-                        'sinclude' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
                         'm4_pattern_allow' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        'AC_CANONICAL_SYSTEM' => 1,
+                        'sinclude' => 1,
+                        'AM_PROG_CC_C_O' => 1,
                         'AM_XGETTEXT_OPTION' => 1,
+                        'AC_CANONICAL_SYSTEM' => 1,
+                        'AM_CONDITIONAL' => 1,
                         'AC_CONFIG_HEADERS' => 1,
                         'AC_DEFINE_TRACE_LITERAL' => 1,
                         'AM_POT_TOOLS' => 1,

+ 76 - 26
c2.cpp

@@ -1,10 +1,5 @@
 
-struct rect
-{
-
-};
-
-struct area_interface
+struct area
 {
 	uint32_t    m_id;
 	std::string m_name;
@@ -23,52 +18,109 @@ struct area_interface
 
 	void inc_card_count(int deta)
 	{
-	
 	}
 
-	virtual ~area_interface(){}
+	virtual void on_hover(int card_id,const point&pt)=0;
+	virtual void on_enter(int card_id,std::shared_ptr<area> prev,const point&pt)=0;
+	virtual void on_leave(int card_id,std::shared_ptr<area> next,const point&pt)=0;
+
+	virtual ~area(){}
 };
 
-struct normal_area:area_interface
+struct normal_area:area
 {
-	rect        m_bound;
+	std::vector<point> m_bound;
 };
 
-struct site_area:area_interface
+struct site_area:area
 {
-	uint32_t   m_site_id;
+	int32_t   m_site_id;
 };
 
 struct area_main
 {
-	std::vector<area_interface*> m_normal_list,m_site_list;
+	std::vector<std::shared_ptr<area>> m_normal_list,m_site_list;
 
-	area_interface*get_normal_area(int id);
+	std::shared_ptr<area> get_site_area(int site_id);
 
-	area_interface*get_normal_area(const point&pt);
-	area_interface*get_site_area(int site_id);
+	std::shared_ptr<area> get_normal_area(int id);
+	std::vector<std::shared_ptr<area>> get_normal_area(const point&pt);
+
+	static std::shared_ptr<area_main> instance();
 };
 
 struct area_hover
 {
-	area*  m_area;
-	time_t m_enter_time,m_last_time,m_leave_time;
+	std::shared_ptr<area>  m_area;
+	time_t m_enter_time,m_last_time;
+
+	void reset()
+	{
+		m_last_time=time(0);
+	}
+
+	void reset(std::shared_ptr<area> a, time_t enter_time=0)
+	{
+		m_area=a;
+		if(enter_time) 
+		{
+			m_enter_time=m_last_time=enter_time;
+		}
+		else
+		{
+			m_last_time=time(0);
+		}
+	}
+
+	bool operator == (const area_hover&o)const
+	{
+		return m_area->id()==o->m_area->id();
+	}
+	bool operator < (const area_hover&o)const
+	{
+		return m_area->id()<o->m_area->id();
+	}
 };
 
 struct card_area_tool
 {
-	area_hover m_prev,m_last;
-	area_hover m_prev_site,m_last_site;
+	area_hover m_site;
+	std::vector<area_hover> m_normal;
+	point  m_last_point;
 
-	void on_point(const char* card_id,int site_id,const point&pt,double speed)
+	void on_point(int card_id,int site_id,const point&pt,double speed)
 	{
+		//处理分站类型的区域
+		std::shared_ptr<area> a=area_main::instance()->get_site_area(site_id);
+		if(pt.empty())//解算前
 		{
-			area_interface *a=area_main_inst->get_site_area(site_id);
-			on_site_area_point(a,card_id);
+			if(m_site==nullptr)
+			{
+				a->on_enter(card_id,nullptr);
+			}
+			else
+			{
+				if(*m_site==*a) { }
+				else//离开分站范围,进入新的分站范围
+				{
+					m_site->on_leave(card_id,a);
+					a->on_enter(card_id,m_site);
+					m_site=a;
+				}
+			}
+			return;
 		}
 
+
+		std::vector<std::shared_ptr<area>> areas=get_normal_area(pt);//找出所有的区域
+		for(a:m_site-areas)//离开的区域
 		{
-			area_interface *a=area_main_inst->get_normal_area(pt);
+			a.on_leave();
+			
+
+
+
+			area *a=area_main_inst->get_normal_area(pt);
 			on_site_area_point(a,card_id);
 		}
 	}
@@ -124,5 +176,3 @@ struct person_card:card
 	}
 };
 
-
-

+ 19 - 12
card.cpp

@@ -1,11 +1,16 @@
 #include <memory>
 #include <ant.h>
 #include <log.h>
-#include <card.h>
 #include <zloop.h>
 #include <ev++.h>
 #include "select_tool.h"
 #include "loc_tool.h"
+
+#include <area.h>
+#include <site_area.h>
+
+#include <card.h>
+
 enum STA_TYPE
 {
     STATUS_HELP=0,
@@ -102,7 +107,7 @@ struct one_ct_message_handle
 			m_msg_list.clear();
 		}
 
-		site s=(*sit_list::instance())[loc.m_site_id];
+		const site &s=*(sit_list::instance()->get(loc.m_site_id));
 		if(m_msg_list.empty())
 		{
 			m_ct=loc.m_card_ct;
@@ -175,7 +180,13 @@ struct card_message_handle
 	}
 };
 
-struct person:card_location_base
+struct card_area
+{
+	std::shared_ptr<site_area_hover> m_site_area;
+	std::shared_ptr<area_tool> m_area_tool;
+};
+
+struct person:card_location_base,card_area
 {
 	person(std::string type)
         :card_location_base(type)
@@ -187,9 +198,8 @@ struct person:card_location_base
 	{
 		m_message_handle->on_message(loop,loc,is_history);
 	}
-
 };
-struct car:card_location_base
+struct car:card_location_base,card_area
 {
     car(std::string type)
         :card_location_base(type)
@@ -203,9 +213,11 @@ struct car:card_location_base
 };
 
 loc_tool_main one_ct_message_handle::m_loc_tool;
+
 struct card_list_impl:card_list
 {
 	std::vector<card_location_base*> m_list;
+
 	card_list_impl()
 	{
 		m_list.reserve(1<<16);
@@ -247,11 +259,6 @@ struct card_list_impl:card_list
 	}
 };
 
-//card_list *card_list::instance(zloop<task*>&loop)
-card_list *card_list::instance()
-{
-	static card_list_impl _impl;
-	return &_impl;
-}
-
+template<> std::shared_ptr<card_list> 
+single_base<card_list, int64_t, std::shared_ptr<card_location_base>>::m_instance=std::make_shared<card_list_impl>();
 

+ 8 - 5
card.h

@@ -1,18 +1,21 @@
 #ifndef _CARD_HPP_
 #define _CARD_HPP_
 #include <message.h>
-#include <ev++.h>
+//#include <ev++.h>
+
+
+#include "write-copy.h"
+
+struct card_location_base;
+
 struct task;
 template<typename T> struct zloop;
 
-struct card_list
+struct card_list:single_base<card_list,int64_t,std::shared_ptr<card_location_base>>
 {
 	virtual void on_message(zloop<task*> *loop,const message_locinfo&loc,bool is_history)=0;
 	virtual void init_card_from_db()=0;
 	virtual ~card_list(){}
-
-	//static card_list *instance(zloop<task*>&loop);
-	static card_list *instance();
 };
 
 #endif

+ 79 - 18
card_path.cpp

@@ -10,6 +10,7 @@
 #include "ant.h"
 
 #include "card_path.h"
+#include "visit.h"
 
 namespace{
 
@@ -198,21 +199,26 @@ void log_path(const std::vector<base_path>&path,const vertex_list&v_list)
 		printf("base_path %.6lf, %03d,(%d,%s),(%d,%s)\n",c,i,path[i][0],v_list[path[i][0]].to_string().c_str(),path[i][1],v_list[path[i][1]].to_string().c_str());
 	}
 }
-
-static std::vector<base_path> init_path(const sit_list&sites,vertex_list&v)
+struct handle_path :visitor<std::shared_ptr<site>>
 {
 	std::vector<base_path> ret;
-	for(uint32_t i=0;i<sites.m_list.size();i++)
+	vertex_list v;
+	handle_path()
 	{
-		auto&s=sites[i];
+		v.add(point(0,0),0,-1);
+	}
+	bool visit(std::shared_ptr<site> sit)
+	{
+		//auto&s=sites[i];
+		const auto &s = *sit;
 
 		if(!s.have_valid_path())
-			continue;
+			return false;
 
 		if(s.path(0).empty()||s.path(1).empty())
-			continue;
+			return false;
         if(s[0].size()<2)
-            continue;
+			return false;
         line_v l000 = s[0][0][0];
         line_v l010 = s[0][1][0];
         if(l000.is_same(l010))
@@ -245,10 +251,60 @@ static std::vector<base_path> init_path(const sit_list&sites,vertex_list&v)
 
 		        ret.push_back(base_path(p0,p1));
 			    ret.back().sid=s.m_id;
-
             }
         }
-    }
+		return true;
+	}
+};
+static std::vector<base_path> init_path(std::vector<base_path> & ret,vertex_list&v)
+{
+//	for(uint32_t i=0;i<sites.m_list.size();i++)
+//	{
+//		auto&s=sites[i];
+//
+//		if(!s.have_valid_path())
+//			continue;
+//
+//		if(s.path(0).empty()||s.path(1).empty())
+//			continue;
+//        if(s[0].size()<2)
+//            continue;
+//        line_v l000 = s[0][0][0];
+//        line_v l010 = s[0][1][0];
+//        if(l000.is_same(l010))
+//        {
+//            printf("same....%d",s.m_id);
+//			int p0=v.add(point::min(s.path(0),s.path(1)),0,s.m_id);
+//			int p1=v.add(point::max(s.path(0),s.path(1)),0,s.m_id);
+//
+//		    ret.push_back(base_path(p0,p1));
+//			ret.back().sid=s.m_id;
+//        }
+//        else
+//        {
+//            point px = l000.line::crossing(l010);
+//            for(int i=0;i<2;i++)
+//            {
+//			    int p0=v.add(point::min(px,s.path(i)),0,s.m_id);
+//			    int p1=v.add(point::max(px,s.path(i)),0,s.m_id);
+//
+//		        ret.push_back(base_path(p0,p1));
+//			    ret.back().sid=s.m_id;
+//            }
+//        }
+//        for(int i=0;i<2;i++)
+//        {
+//            if(!s[0][i][1].empty())
+//            {
+//			    int p0=v.add(point::min(s[0][i][1][0],s[0][i][1][1]),0,s.m_id);
+//			    int p1=v.add(point::max(s[0][i][1][0],s[0][i][1][1]),0,s.m_id);
+//
+//		        ret.push_back(base_path(p0,p1));
+//			    ret.back().sid=s.m_id;
+//
+//            }
+//        }
+//    }
 
 /*
 
@@ -282,7 +338,7 @@ static std::vector<base_path> init_path(const sit_list&sites,vertex_list&v)
     printf("++++++++++++++++++++++++++++++++++++++++++++");
 	ret.erase(std::unique(ret.begin(),ret.end()),ret.end());
 	log_path(ret,v);
-    printf("++++++++++++++++++++++++++++++++++++++++++++");
+    printf("+++++++++++++++++nnnnn+++++++++++++++++++++++++++");
 
 	std::sort(ret.begin(),ret.end(),[&v](const base_path&p1,const base_path&p2){
 		double arg=p1.arg(v)-p2.arg(v);
@@ -383,6 +439,7 @@ static std::vector<base_path> init_path(const sit_list&sites,vertex_list&v)
 		point&p0=v[p[0]];
 		point&p1=v[p[1]];
 
+		//return p0.dist(p1)<0.1 || p0.empty() || p1.empty();
 		return p0.dist(p1)<0.1;
 	}),ret2.end());
 
@@ -429,6 +486,8 @@ static std::vector<base_path> init_path(const sit_list&sites,vertex_list&v)
 	return std::move(ret2);
 }
 
+
+
 #if 0
 struct ghash
 {
@@ -759,16 +818,18 @@ graph g_graph;
 
 }//namespace
 
-void card_path::init(const sit_list&sites)
+void card_path::init()
 {
     //Ensure only ont thread can init path.
 	int expect=0;
 	if(g_init_flag.compare_exchange_strong(expect,1))
 	{
-		vertex_list v_list;
-		v_list.add(point(0,0),0,-1);
-		std::vector<base_path> opath=init_path(sites,v_list);
-		g_graph.init(v_list,opath);
+		handle_path hp;
+		//std::vector<base_path> opath=init_path(sites,v_list);
+		sit_list::instance()->accept(hp);
+		std::vector<base_path> opath=init_path(hp.ret,hp.v);
+		
+		g_graph.init(hp.v,opath);
 
 		++g_init_flag;
 	}
@@ -831,12 +892,12 @@ void test_find_poss_path(const card_path&cp ,const point&from)
 
 int main()
 {
-	std::unique_ptr<sit_list> sites(new sit_list());
-	sites->load("data_reader_antenna.txt","path_tof.txt");
+//	std::unique_ptr<sit_list> sites(new sit_list());
+	sit_list::instance()->load("data_reader_antenna.txt","path_tof.txt");
 
 	card_path cp;
 
-	cp.init(*sites);
+	cp.init();
 #if 0
 	{
 		test_at_path(cp,point(4773.104654,-104.0887));

+ 1 - 1
card_path.h

@@ -12,7 +12,7 @@ struct card_path
     bool is_at_path(const point&pt) const;
 
     static card_path&inst();
-    static void init(const sit_list&sites);
+    static void init();
 };
 
 #endif

+ 0 - 2
client.cpp

@@ -31,8 +31,6 @@ int main()
 	buf[0]=0x04;
 	buf[1]=0x00;
 
-
-
 	char recv_buf[8192];
 	for(;;)
 	{

+ 18 - 0
config.log

@@ -1161,3 +1161,21 @@ on lfs-7.2
 
 config.status:780: creating Makefile
 config.status:952: executing depfiles commands
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by yals config.status 1.0, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = 
+  CONFIG_HEADERS  = 
+  CONFIG_LINKS    = 
+  CONFIG_COMMANDS = 
+  $ ./config.status Makefile depfiles
+
+on lfs-7.2
+
+config.status:780: creating Makefile
+config.status:952: executing depfiles commands

+ 0 - 1
log.h

@@ -1 +0,0 @@
-../dist/include/log.h

+ 31 - 34
main.cpp

@@ -1,41 +1,38 @@
 #include <log.h>
 #include <net-service.h>
-#include "IniFile.h"
 #include "db_api/CDBConnPool.h"
 #include "websocket/wsClientMgr.h"
 #include "websocket/wsTimerThread.h"
+
 #include "card.h"
 #include "ant.h"
 #include "card_path.h"
 
+#include <config_file.h>
+
+config_file config;
 struct Init_Setting
 {
 	void init()
 	{
-		YADB::_DB_POOL_SETTING_ DBSetting;
-		log_init("../dist/etc/log.ini");
-		IniFile ini;
-		ini.open("./config.ini");
-
-		std::string url=ini.readString("SERVER_SETTING","websocket_url","");
-		int32_t send_interval = ini.readInt("SERVER_SETTING","interval_send_json_postion",1);
-		//std::string url_bak=ini.readString("SERVER_SETTING","websocket_url_bak","");
-		DBSetting.Host = ini.readString("DB","host","");
-		DBSetting.User = ini.readString("DB","user","");
-		DBSetting.PWD = ini.readString("DB","password","");
-		DBSetting.DBName = ini.readString("DB","dbname","");
-		DBSetting.CharSet = ini.readString("DB","utf8","");
-		DBSetting.TimeOut = 5;
-		DBSetting.PoolSize = 10;
-
+		std::string url=config.get("service.websocket_url","");
+		int32_t send_interval =config.get("service.interval_send_json_postion",1000);
 		std::vector<std::string> url_list;
 		url_list.push_back(url);
-		//init websocket
-		wsClientMgr_init(std::move(url_list),send_interval);
-		#define sDBConnPool singleton_CDBConnPool::get_mutable_instance()
-		_mysql_init(DBSetting);
+		wsClientMgr_init(url_list,send_interval);//init websocket
+
+		YADB::_DB_POOL_SETTING_ DBSetting;
 
+		DBSetting.Host = config.get("db.host","");
+		DBSetting.User = config.get("db.user","");
+		DBSetting.PWD = config.get("db.passwd","");
+		DBSetting.DBName = config.get("db.dbname","yaxt");
+		DBSetting.CharSet = config.get("db.charset","utf-8");
+		DBSetting.TimeOut = config.get("db.conn_timeout",5);
+		DBSetting.PoolSize = config.get("db.conn_timeout",30);
+		_mysql_init(DBSetting);
 	}
+
 	void _mysql_init(YADB::_DB_POOL_SETTING_ &dps)
 	{
 		std::string Error;
@@ -43,11 +40,11 @@ struct Init_Setting
 		//创建连接池
 		if ( !sDBConnPool.Create( dps, Error ) )
 		{
-			printf("线程池创建失败,Err=%s\n", Error.c_str());
-			return;
+			log_error("线程池创建失败,Err=%s\n", Error.c_str());
 		}
 	}
-	void wsClientMgr_init(std::vector<std::string>&&uri_list,int32_t st)
+
+	void wsClientMgr_init(const std::vector<std::string>&uri_list,int32_t st)
 	{
 		std::map<std::string, YA::MSG_HANDLE_FUNC_TYPE> MsgFuncList;
 	
@@ -59,7 +56,7 @@ struct Init_Setting
 		//连接服务器
 		if ( swsClientMgr.connect() != 0 )
 		{
-			std_error("web socket init failed.");
+			log_error("web socket init failed.");
 			return;
 		}
 	
@@ -73,22 +70,22 @@ struct Init_Setting
 	}
 	
 };
+
 int main()
 {
-	Init_Setting is;
-	log_init("../dist/etc/log.ini");
-	//init log sql websockt.
-//	is.init();
-
+	log_init("../etc/log.ini");
+	if(config.open("../etc/config.ini"))
+		return -1;
+	
 	log_info("herer..init from db...");
 	sit_list::instance()->load_from_db();
 	card_list::instance()->init_card_from_db();
-	card_path cp;
-	cp.init(*sit_list::instance());
+	card_path::init();
 	net_service mh;
-	service_handle::instance(&mh)->run(4000);
+
+	int port=config.get("service.port",4000);
+	service_handle::instance(&mh)->run(port);
 
 	return 0;
 }
 
-

+ 1 - 1
message.h

@@ -16,7 +16,7 @@ struct message_locinfo
 	uint32_t m_card_id;
 	uint64_t m_tof;
 	uint16_t m_card_ct;
-	uint8_t m_batty_status;
+	uint8_t  m_batty_status;
 	uint8_t  m_callinfo;//0x80-呼救,0x01-一般呼叫,0x02-紧急呼叫
 	uint8_t  m_rav;
 	uint8_t  m_acc;

+ 4 - 1
net-service.cpp

@@ -17,13 +17,16 @@
 
 net_service::net_service()
 {
+	m_loc_worker=nullptr;
+	m_sync_worker=nullptr;
 	m_loc_worker=worker::instance();
 	m_sync_worker=tdoa_sync::instance();
 }
 
 net_service::~net_service()
 {
-	m_loc_worker->stop();
+	if(m_loc_worker)
+		m_loc_worker->stop();
 }
 
 void net_service::on_message(std::shared_ptr<client> clt,const char*data,size_t len)

+ 1 - 1
point.cpp

@@ -1,7 +1,7 @@
 #include "point.h"
 
 point::point() 
-	:x(0) ,y(0)
+	:x(0) ,y(0),z(0)
 {
 }
 

+ 55 - 0
site_area.cpp

@@ -0,0 +1,55 @@
+
+#include "site_area.h"
+
+#include "card.h"
+
+//每张卡包含这样一个对象,保存最后一个分站区域
+//1、记录卡进出分站的时间,地点
+//2、用于考勤
+site_area_hover::site_area_hover()
+	:m_site_id(-1)
+	,m_enter_time(0)
+	,m_last_time(0)
+{
+}
+
+void site_area_hover::on_point(int64_t card_id,int site_id,const point*pt)
+{
+	if(pt!=nullptr)
+	{
+		if(m_enter_point.empty())
+			m_enter_point=*pt;
+
+		m_last_point=*pt;
+	}
+	else
+	{
+		if(m_site_id==site_id) 
+			return;
+
+		//离开现有分站处理,记录现有分站的进出时间和地点
+        leave_site(card_id,m_site_id);
+
+		//进入分站覆盖区域处理,考勤
+		enter_site(card_id,site_id);
+
+		m_site_id=site_id;
+		m_enter_time=m_last_time=time(nullptr);
+		m_enter_point.set(0,0);
+		m_last_point.set(0,0);
+	}
+}
+
+void site_area_hover::enter_site(int64_t card_id,int enter_site)
+{
+
+
+}
+
+void site_area_hover::leave_site(int64_t card_id,int enter_site)
+{
+
+
+}
+
+

+ 23 - 0
site_area.h

@@ -0,0 +1,23 @@
+#ifndef __SITE_AREA_HOVER_HPP__
+#define __SITE_AREA_HOVER_HPP__
+#include <point.h>
+//每张卡包含这样一个对象,保存最后一个分站区域;只有tof一维有这个需求
+//1、记录卡进出分站的时间,地点
+//2、用于考勤
+struct site_area_hover
+{
+	site_area_hover();
+	//调用时机:
+	//1、tof一维收到第一个数据点时,以pt=0调用
+	//2、数据点解析完毕之后调用
+    void on_point(int64_t card_id,int site_id,const point*pt);
+private:
+    void enter_site(int64_t card_id,int enter_site);
+    void leave_site(int64_t card_id,int enter_site);
+
+	int    m_site_id;
+	time_t m_enter_time,m_last_time;
+	point  m_enter_point,m_last_point;
+};
+#endif
+


+ 13 - 11
visit.cpp

@@ -17,11 +17,7 @@ struct card_list:single_base<card_list,int,std::shared_ptr<card>>
 		for(std::pair<int,std::shared_ptr<card>> me:m_map)
 		{
 			v.visit(me.second);
-			while(true)
-			{
-				printf("%p--xxxxxx---\n",this);
-				std::this_thread::sleep_for(std::chrono::milliseconds(500));
-			}
+			printf("====\n");
 		}
 	}
 };
@@ -30,7 +26,7 @@ struct visit_log:visitor<std::shared_ptr<card>>
 {
 	bool visit(std::shared_ptr<card> c)
 	{
-		printf("%d\n",c->id);
+		printf("vist :::::::%d\n",c->id);
 		return true;
 	}
 };
@@ -51,12 +47,12 @@ void run()
 int main()
 {
 	std::vector<std::shared_ptr<card_list>> v;
-	std::thread th(run);
+	//std::thread th(run);
 	for(int i=0;i<100;i++)
 	{
 		card_list::instance()->add(i,std::make_shared<card>(i));//每次生成一个对象
 		printf("%d  %p\n",i,card_list::instance().get());
-	//	v.push_back(card_list::instance());
+		v.push_back(card_list::instance());
 	}
 
 	for(int i=0;i<100;i++)
@@ -64,9 +60,15 @@ int main()
 	//	printf("%d  %p\n",i,v[i].get());
 	}
 
-	th.join();
-	//card_list::instance()->accept(vl);
-
+	//th.join();
+	visit_log vl;
+	card_list::instance()->accept(vl);
+//	printf("%p",card_list::instance()->get(5));
+	auto x = card_list::instance()->get(100);
+	if(x!=nullptr)
+	  printf("...........id:%d\n",x->id);
+	else
+	  printf("nullptr...\n");
 	return 0;
 }
 

+ 3 - 7
worker.cpp

@@ -17,12 +17,9 @@ struct worker_thread: zloop<task*>
 {
 	std::unique_ptr<std::thread> m_thread;
 
-	card_list*m_card_list;
-
 	worker_thread ()
 	{
 		m_thread.reset(new std::thread(std::bind(&worker_thread::run,this)));
-		m_card_list=card_list::instance();//*********
 	}
 
 	void run()
@@ -47,13 +44,14 @@ struct worker_thread: zloop<task*>
 			case 0x843b://tof
 			case 0x863b://tdoa
 				log_info("card loc message%04X",t.m_cmd_code);
-				m_card_list->on_message(this,t.body<message_locinfo>(),false);
+
+				card_list::instance()-> on_message(this,t.body<message_locinfo>(),false);
 				//card_message::on_loc_message(this,t.m_param1);
 			break;
 			case 0x853b://tof his
 			case 0x873b://tdoa his
 				log_info("site history message%04X",t.m_cmd_code);
-				m_card_list->on_message(this,t.body<message_locinfo>(),true);
+				card_list::instance()-> on_message(this,t.body<message_locinfo>(),true);
 				//site_message::on_sync(this,t.m_param1);
 			break;
 
@@ -123,5 +121,3 @@ worker*worker::instance()
 }
 
 
-
-

+ 20 - 0
write-copy.h

@@ -11,12 +11,32 @@
 template<typename T,typename K,typename V> 
 struct write_copy_base:acceptor<V>
 {
+	void accept(visitor<V> &v)
+	{
+		for(std::pair<K,V> me:m_map)
+		{
+			v.visit(me.second);
+		}
+	}
 	std::unordered_map<K,V> m_map;
 	write_copy_base()
 	{
 	
 	}
 
+	V	get(K k)const
+	{
+		return m_map[k];
+	}
+	V	get(K k)
+	{
+		auto serch = m_map.find(k);
+		if(serch != m_map.end())
+		  return serch->second;
+		else
+		  return nullptr;
+	}
+
 	std::shared_ptr<T> clone()const
 	{
 		std::shared_ptr<T> ret=std::make_shared<T>();

+ 1 - 1
zloop.h

@@ -36,7 +36,7 @@ struct zloop_base:ev::dynamic_loop
 		m_async.start();
 	}
 
-	~zloop_base()
+	virtual ~zloop_base()
 	{
 		m_async.stop();
 	}

+ 30 - 21
znet.cpp

@@ -1,6 +1,4 @@
 #include <log.h>
-//#define EV_MULTIPLICITY 1
-//#define EV_SIGNAL_ENABLE 1
 #include <unistd.h>
 #include <signal.h>
 #include <stdio.h>
@@ -13,13 +11,13 @@
 #include <algorithm>
 #include <fstream>
 
-#include <ev++.h>
-
 #include <zio.h>
 #include <znet.h>
 #include <zloop.h>
 #include <clock.h>
 
+#include "config_file.h"
+extern config_file config;
 struct client_ex:client
 {
 	virtual void on_notify()=0;
@@ -143,30 +141,33 @@ struct sock_client:fd_io,client_ex
 	char  *m_b{0};
 	int   m_size{1<<16};
 	int   m_clen{0};
+	int   m_max_package_size{4096};
 
-	ev::timer  m_recv_timer,m_send_timer;
-
+	ev::timer  m_recv_timer;
+//	ev::timer  m_send_timer;
+	
 	std::mutex m_mutex;
 	std::list<std::vector<char>> m_olist;
 	std::vector<char> m_obuf;
 	size_t m_opos=0;
-
 	bool   m_can_write{false};
 
-	sock_client(io_context&ic,const char*name,int fd)
+	sock_client(io_context&ic,const char*name,int fd,int recv_time_out,int max_package_size)
 		:fd_io(ic,fd,EV_READ|EV_WRITE)
 		,m_ic(ic)
 		,m_name(name)
 	{ 
+		m_max_package_size=max_package_size;
+
 		m_recv_timer.set(ic);
-		m_recv_timer.set(5,0);
+		m_recv_timer.set(recv_time_out,0);
 		m_recv_timer.set<sock_client,&sock_client::on_recv_timeout>(this);
 		m_recv_timer.start();
 
-		m_send_timer.set(ic);
-		m_send_timer.set(5,0);
-		m_send_timer.set<sock_client,&sock_client::on_send_timeout>(this);
-		m_send_timer.start();
+//		m_send_timer.set(ic);
+//		m_send_timer.set(5,0);
+//		m_send_timer.set<sock_client,&sock_client::on_send_timeout>(this);
+//		m_send_timer.start();
 
 		m_b=(char*)malloc(m_size);
 	}
@@ -262,7 +263,7 @@ struct sock_client:fd_io,client_ex
 	void close_impl()
 	{
 		m_recv_timer.stop();
-		m_send_timer.stop();
+//		m_send_timer.stop();
 		fd_io::stop();
 		m_ic.on_close(shared_from_this());
 	}
@@ -282,6 +283,9 @@ struct sock_client:fd_io,client_ex
 		{
 			msg_len=calc_length((uint8_t*)m_b)+2;
 
+			if(msg_len>m_max_package_size)
+				return -1;
+
 			if(m_clen<msg_len)
 				break;
 
@@ -302,8 +306,8 @@ struct sock_client:fd_io,client_ex
 		if(! m_can_write)
 		{
 			set(EV_READ|EV_WRITE);
-			m_send_timer.set(5);
-			m_send_timer.start();
+//			m_send_timer.set(5);
+//			m_send_timer.start();
 			return 0;
 		}
 
@@ -333,8 +337,8 @@ struct sock_client:fd_io,client_ex
 			{
 				m_can_write=false;
 				set(EV_READ|EV_WRITE);
-				m_send_timer.set(5);
-				m_send_timer.start();
+//				m_send_timer.set(5);
+//				m_send_timer.start();
 				break;
 			}
 			else
@@ -347,7 +351,7 @@ struct sock_client:fd_io,client_ex
 		if(m_olist.empty() && m_can_write)
 		{
 			set(EV_READ);
-			m_send_timer.stop();
+//			m_send_timer.stop();
 		}
 
 		return 0;
@@ -359,7 +363,7 @@ struct sock_client:fd_io,client_ex
 		{
 			log_debug("socket %d(%s) can write,flag=%d." ,m_fd,m_name.c_str(),flag);
 			m_can_write=true;
-			m_send_timer.stop();
+//			m_send_timer.stop();
 			if(io_write()<0)
 			{
 				close_impl();
@@ -409,6 +413,9 @@ struct sock_listen: fd_io
 {
 	sock_listen(io_context&ic,int fd):fd_io(ic,fd){}
 
+	int recv_time_out=config.get("service.recv_timeout",30);
+	int max_package_size=config.get("service.max_package",2048);
+
 	void operator()(ev::io &w, int)
 	{
 		char name[32];
@@ -417,7 +424,7 @@ struct sock_listen: fd_io
 			return;
 
 		zio::setiobuf(fd,32<<10,32<<10);
-		m_ic.on_connect(std::make_shared<sock_client>(m_ic,name,fd));
+		m_ic.on_connect(std::make_shared<sock_client>(m_ic,name,fd,recv_time_out,max_package_size));
 	}
 };
 
@@ -447,11 +454,13 @@ struct main_loop:io_context
 		:io_context(sc)
 	{
 	}
+
 	virtual int run(int port)
 	{
 		int fd=zio::listen_on(port);
 		if(fd<0)
 		{
+			log_errno("try listen_on %d",port);
 			return -1;
 		}
 

+ 1 - 0
znet.h

@@ -23,6 +23,7 @@ struct service_handle
 	virtual int run(int port)=0;
 	virtual void stop()=0;
 	virtual void boardcast(const std::vector<char>&msg)=0;
+	virtual ~service_handle(){}
 
 	static service_handle*instance(service_callback*sc);
 };