more socket cleanup to allow using wxSocket from both wxBase and wxCore (replaces patch 1756260)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50831 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
398
Makefile.in
398
Makefile.in
File diff suppressed because it is too large
Load Diff
@@ -54,6 +54,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||||||
<!-- UNIX -->
|
<!-- UNIX -->
|
||||||
<!-- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -->
|
<!-- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -->
|
||||||
<set var="BASE_UNIX_SRC" hints="files">
|
<set var="BASE_UNIX_SRC" hints="files">
|
||||||
|
src/common/gsocketiohandler.cpp
|
||||||
src/common/fdiodispatcher.cpp
|
src/common/fdiodispatcher.cpp
|
||||||
src/common/selectdispatcher.cpp
|
src/common/selectdispatcher.cpp
|
||||||
src/unix/appunix.cpp
|
src/unix/appunix.cpp
|
||||||
@@ -74,6 +75,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||||||
</set>
|
</set>
|
||||||
<set var="BASE_UNIX_HDR" hints="files">
|
<set var="BASE_UNIX_HDR" hints="files">
|
||||||
wx/private/fdiodispatcher.h
|
wx/private/fdiodispatcher.h
|
||||||
|
wx/private/gsocketiohandler.h
|
||||||
wx/private/selectdispatcher.h
|
wx/private/selectdispatcher.h
|
||||||
wx/unix/app.h
|
wx/unix/app.h
|
||||||
wx/unix/apptbase.h
|
wx/unix/apptbase.h
|
||||||
@@ -155,6 +157,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||||||
<!-- Used on Mac OS CarbonLib, Mac OS X wxMac base, and Mac OS X darwin base -->
|
<!-- Used on Mac OS CarbonLib, Mac OS X wxMac base, and Mac OS X darwin base -->
|
||||||
<set var="BASE_COREFOUNDATION_SRC" hints="files">
|
<set var="BASE_COREFOUNDATION_SRC" hints="files">
|
||||||
src/mac/corefoundation/cfstring.cpp
|
src/mac/corefoundation/cfstring.cpp
|
||||||
|
src/mac/corefoundation/gsockosx.cpp
|
||||||
src/mac/corefoundation/stdpaths_cf.cpp
|
src/mac/corefoundation/stdpaths_cf.cpp
|
||||||
src/mac/corefoundation/strconv_cf.cpp
|
src/mac/corefoundation/strconv_cf.cpp
|
||||||
src/mac/corefoundation/utilsexc_base.cpp
|
src/mac/corefoundation/utilsexc_base.cpp
|
||||||
@@ -549,6 +552,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||||||
|
|
||||||
<set var="NET_WIN32_SRC" hints="files">
|
<set var="NET_WIN32_SRC" hints="files">
|
||||||
src/msw/gsocket.cpp
|
src/msw/gsocket.cpp
|
||||||
|
src/msw/gsockmsw.cpp
|
||||||
src/msw/urlmsw.cpp
|
src/msw/urlmsw.cpp
|
||||||
</set>
|
</set>
|
||||||
<set var="NET_WIN32_HDR" hints="files">
|
<set var="NET_WIN32_HDR" hints="files">
|
||||||
@@ -1482,7 +1486,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||||||
|
|
||||||
<set var="X11_LOWLEVEL_SRC" hints="files">
|
<set var="X11_LOWLEVEL_SRC" hints="files">
|
||||||
$(XWIN_LOWLEVEL_SRC)
|
$(XWIN_LOWLEVEL_SRC)
|
||||||
src/common/gsocketiohandler.cpp
|
|
||||||
src/generic/icon.cpp
|
src/generic/icon.cpp
|
||||||
src/generic/timer.cpp
|
src/generic/timer.cpp
|
||||||
src/x11/app.cpp
|
src/x11/app.cpp
|
||||||
@@ -1577,7 +1580,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||||||
src/msw/gdiobj.cpp
|
src/msw/gdiobj.cpp
|
||||||
src/msw/gdiplus.cpp
|
src/msw/gdiplus.cpp
|
||||||
src/msw/graphics.cpp
|
src/msw/graphics.cpp
|
||||||
src/msw/gsockmsw.cpp
|
|
||||||
src/msw/icon.cpp
|
src/msw/icon.cpp
|
||||||
src/msw/imaglist.cpp
|
src/msw/imaglist.cpp
|
||||||
src/msw/minifram.cpp
|
src/msw/minifram.cpp
|
||||||
@@ -1906,7 +1908,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||||||
|
|
||||||
<set var="DFB_LOWLEVEL_SRC" hints="files">
|
<set var="DFB_LOWLEVEL_SRC" hints="files">
|
||||||
src/common/fontmgrcmn.cpp
|
src/common/fontmgrcmn.cpp
|
||||||
src/common/gsocketiohandler.cpp
|
|
||||||
src/generic/caret.cpp
|
src/generic/caret.cpp
|
||||||
src/generic/colour.cpp
|
src/generic/colour.cpp
|
||||||
src/generic/icon.cpp
|
src/generic/icon.cpp
|
||||||
@@ -2148,7 +2149,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||||||
|
|
||||||
<set var="MAC_OSX_LOWLEVEL_SRC" hints="files">
|
<set var="MAC_OSX_LOWLEVEL_SRC" hints="files">
|
||||||
<!-- Shared wxMac and wxCocoa files -->
|
<!-- Shared wxMac and wxCocoa files -->
|
||||||
src/mac/corefoundation/gsockosx.cpp
|
|
||||||
src/mac/corefoundation/hid.cpp
|
src/mac/corefoundation/hid.cpp
|
||||||
src/mac/corefoundation/utilsexc_cf.cpp
|
src/mac/corefoundation/utilsexc_cf.cpp
|
||||||
</set>
|
</set>
|
||||||
@@ -2460,7 +2460,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||||||
|
|
||||||
<set var="COCOA_LOWLEVEL_SRC" hints="files">
|
<set var="COCOA_LOWLEVEL_SRC" hints="files">
|
||||||
<!-- Shared wxMac and wxCocoa files -->
|
<!-- Shared wxMac and wxCocoa files -->
|
||||||
src/mac/corefoundation/gsockosx.cpp
|
|
||||||
src/mac/corefoundation/hid.cpp
|
src/mac/corefoundation/hid.cpp
|
||||||
src/mac/corefoundation/utilsexc_cf.cpp
|
src/mac/corefoundation/utilsexc_cf.cpp
|
||||||
</set>
|
</set>
|
||||||
|
@@ -417,6 +417,7 @@ MONODLL_OBJECTS = \
|
|||||||
$(OBJS)\monodll_socket.obj \
|
$(OBJS)\monodll_socket.obj \
|
||||||
$(OBJS)\monodll_url.obj \
|
$(OBJS)\monodll_url.obj \
|
||||||
$(OBJS)\monodll_gsocket.obj \
|
$(OBJS)\monodll_gsocket.obj \
|
||||||
|
$(OBJS)\monodll_gsockmsw.obj \
|
||||||
$(OBJS)\monodll_urlmsw.obj \
|
$(OBJS)\monodll_urlmsw.obj \
|
||||||
$(____MONOLIB_GUI_SRC_FILENAMES_OBJECTS) \
|
$(____MONOLIB_GUI_SRC_FILENAMES_OBJECTS) \
|
||||||
$(OBJS)\monodll_xml.obj \
|
$(OBJS)\monodll_xml.obj \
|
||||||
@@ -553,6 +554,7 @@ MONOLIB_OBJECTS = \
|
|||||||
$(OBJS)\monolib_socket.obj \
|
$(OBJS)\monolib_socket.obj \
|
||||||
$(OBJS)\monolib_url.obj \
|
$(OBJS)\monolib_url.obj \
|
||||||
$(OBJS)\monolib_gsocket.obj \
|
$(OBJS)\monolib_gsocket.obj \
|
||||||
|
$(OBJS)\monolib_gsockmsw.obj \
|
||||||
$(OBJS)\monolib_urlmsw.obj \
|
$(OBJS)\monolib_urlmsw.obj \
|
||||||
$(____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS) \
|
$(____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS) \
|
||||||
$(OBJS)\monolib_xml.obj \
|
$(OBJS)\monolib_xml.obj \
|
||||||
@@ -814,6 +816,7 @@ NETDLL_OBJECTS = \
|
|||||||
$(OBJS)\netdll_socket.obj \
|
$(OBJS)\netdll_socket.obj \
|
||||||
$(OBJS)\netdll_url.obj \
|
$(OBJS)\netdll_url.obj \
|
||||||
$(OBJS)\netdll_gsocket.obj \
|
$(OBJS)\netdll_gsocket.obj \
|
||||||
|
$(OBJS)\netdll_gsockmsw.obj \
|
||||||
$(OBJS)\netdll_urlmsw.obj
|
$(OBJS)\netdll_urlmsw.obj
|
||||||
NETLIB_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
NETLIB_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
||||||
$(__OPTIMIZEFLAG) $(__THREADSFLAG) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
$(__OPTIMIZEFLAG) $(__THREADSFLAG) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||||
@@ -836,6 +839,7 @@ NETLIB_OBJECTS = \
|
|||||||
$(OBJS)\netlib_socket.obj \
|
$(OBJS)\netlib_socket.obj \
|
||||||
$(OBJS)\netlib_url.obj \
|
$(OBJS)\netlib_url.obj \
|
||||||
$(OBJS)\netlib_gsocket.obj \
|
$(OBJS)\netlib_gsocket.obj \
|
||||||
|
$(OBJS)\netlib_gsockmsw.obj \
|
||||||
$(OBJS)\netlib_urlmsw.obj
|
$(OBJS)\netlib_urlmsw.obj
|
||||||
COREDLL_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
COREDLL_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
||||||
$(__OPTIMIZEFLAG) $(__THREADSFLAG) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
$(__OPTIMIZEFLAG) $(__THREADSFLAG) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||||
@@ -1490,7 +1494,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
|
|||||||
$(OBJS)\monodll_gdiobj.obj \
|
$(OBJS)\monodll_gdiobj.obj \
|
||||||
$(OBJS)\monodll_gdiplus.obj \
|
$(OBJS)\monodll_gdiplus.obj \
|
||||||
$(OBJS)\monodll_graphics.obj \
|
$(OBJS)\monodll_graphics.obj \
|
||||||
$(OBJS)\monodll_gsockmsw.obj \
|
|
||||||
$(OBJS)\monodll_icon.obj \
|
$(OBJS)\monodll_icon.obj \
|
||||||
$(OBJS)\monodll_imaglist.obj \
|
$(OBJS)\monodll_imaglist.obj \
|
||||||
$(OBJS)\monodll_minifram.obj \
|
$(OBJS)\monodll_minifram.obj \
|
||||||
@@ -1719,7 +1722,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
|
|||||||
$(OBJS)\monodll_gdiobj.obj \
|
$(OBJS)\monodll_gdiobj.obj \
|
||||||
$(OBJS)\monodll_gdiplus.obj \
|
$(OBJS)\monodll_gdiplus.obj \
|
||||||
$(OBJS)\monodll_graphics.obj \
|
$(OBJS)\monodll_graphics.obj \
|
||||||
$(OBJS)\monodll_gsockmsw.obj \
|
|
||||||
$(OBJS)\monodll_icon.obj \
|
$(OBJS)\monodll_icon.obj \
|
||||||
$(OBJS)\monodll_imaglist.obj \
|
$(OBJS)\monodll_imaglist.obj \
|
||||||
$(OBJS)\monodll_minifram.obj \
|
$(OBJS)\monodll_minifram.obj \
|
||||||
@@ -2133,7 +2135,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
|
|||||||
$(OBJS)\monolib_gdiobj.obj \
|
$(OBJS)\monolib_gdiobj.obj \
|
||||||
$(OBJS)\monolib_gdiplus.obj \
|
$(OBJS)\monolib_gdiplus.obj \
|
||||||
$(OBJS)\monolib_graphics.obj \
|
$(OBJS)\monolib_graphics.obj \
|
||||||
$(OBJS)\monolib_gsockmsw.obj \
|
|
||||||
$(OBJS)\monolib_icon.obj \
|
$(OBJS)\monolib_icon.obj \
|
||||||
$(OBJS)\monolib_imaglist.obj \
|
$(OBJS)\monolib_imaglist.obj \
|
||||||
$(OBJS)\monolib_minifram.obj \
|
$(OBJS)\monolib_minifram.obj \
|
||||||
@@ -2362,7 +2363,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
|
|||||||
$(OBJS)\monolib_gdiobj.obj \
|
$(OBJS)\monolib_gdiobj.obj \
|
||||||
$(OBJS)\monolib_gdiplus.obj \
|
$(OBJS)\monolib_gdiplus.obj \
|
||||||
$(OBJS)\monolib_graphics.obj \
|
$(OBJS)\monolib_graphics.obj \
|
||||||
$(OBJS)\monolib_gsockmsw.obj \
|
|
||||||
$(OBJS)\monolib_icon.obj \
|
$(OBJS)\monolib_icon.obj \
|
||||||
$(OBJS)\monolib_imaglist.obj \
|
$(OBJS)\monolib_imaglist.obj \
|
||||||
$(OBJS)\monolib_minifram.obj \
|
$(OBJS)\monolib_minifram.obj \
|
||||||
@@ -2691,7 +2691,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
|
|||||||
$(OBJS)\coredll_gdiobj.obj \
|
$(OBJS)\coredll_gdiobj.obj \
|
||||||
$(OBJS)\coredll_gdiplus.obj \
|
$(OBJS)\coredll_gdiplus.obj \
|
||||||
$(OBJS)\coredll_graphics.obj \
|
$(OBJS)\coredll_graphics.obj \
|
||||||
$(OBJS)\coredll_gsockmsw.obj \
|
|
||||||
$(OBJS)\coredll_icon.obj \
|
$(OBJS)\coredll_icon.obj \
|
||||||
$(OBJS)\coredll_imaglist.obj \
|
$(OBJS)\coredll_imaglist.obj \
|
||||||
$(OBJS)\coredll_minifram.obj \
|
$(OBJS)\coredll_minifram.obj \
|
||||||
@@ -2920,7 +2919,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
|
|||||||
$(OBJS)\coredll_gdiobj.obj \
|
$(OBJS)\coredll_gdiobj.obj \
|
||||||
$(OBJS)\coredll_gdiplus.obj \
|
$(OBJS)\coredll_gdiplus.obj \
|
||||||
$(OBJS)\coredll_graphics.obj \
|
$(OBJS)\coredll_graphics.obj \
|
||||||
$(OBJS)\coredll_gsockmsw.obj \
|
|
||||||
$(OBJS)\coredll_icon.obj \
|
$(OBJS)\coredll_icon.obj \
|
||||||
$(OBJS)\coredll_imaglist.obj \
|
$(OBJS)\coredll_imaglist.obj \
|
||||||
$(OBJS)\coredll_minifram.obj \
|
$(OBJS)\coredll_minifram.obj \
|
||||||
@@ -3155,7 +3153,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
|
|||||||
$(OBJS)\corelib_gdiobj.obj \
|
$(OBJS)\corelib_gdiobj.obj \
|
||||||
$(OBJS)\corelib_gdiplus.obj \
|
$(OBJS)\corelib_gdiplus.obj \
|
||||||
$(OBJS)\corelib_graphics.obj \
|
$(OBJS)\corelib_graphics.obj \
|
||||||
$(OBJS)\corelib_gsockmsw.obj \
|
|
||||||
$(OBJS)\corelib_icon.obj \
|
$(OBJS)\corelib_icon.obj \
|
||||||
$(OBJS)\corelib_imaglist.obj \
|
$(OBJS)\corelib_imaglist.obj \
|
||||||
$(OBJS)\corelib_minifram.obj \
|
$(OBJS)\corelib_minifram.obj \
|
||||||
@@ -3384,7 +3381,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
|
|||||||
$(OBJS)\corelib_gdiobj.obj \
|
$(OBJS)\corelib_gdiobj.obj \
|
||||||
$(OBJS)\corelib_gdiplus.obj \
|
$(OBJS)\corelib_gdiplus.obj \
|
||||||
$(OBJS)\corelib_graphics.obj \
|
$(OBJS)\corelib_graphics.obj \
|
||||||
$(OBJS)\corelib_gsockmsw.obj \
|
|
||||||
$(OBJS)\corelib_icon.obj \
|
$(OBJS)\corelib_icon.obj \
|
||||||
$(OBJS)\corelib_imaglist.obj \
|
$(OBJS)\corelib_imaglist.obj \
|
||||||
$(OBJS)\corelib_minifram.obj \
|
$(OBJS)\corelib_minifram.obj \
|
||||||
@@ -5503,6 +5499,9 @@ $(OBJS)\monodll_url.obj: ..\..\src\common\url.cpp
|
|||||||
$(OBJS)\monodll_gsocket.obj: ..\..\src\msw\gsocket.cpp
|
$(OBJS)\monodll_gsocket.obj: ..\..\src\msw\gsocket.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
|
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
|
||||||
|
|
||||||
|
$(OBJS)\monodll_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
|
||||||
|
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
|
||||||
|
|
||||||
$(OBJS)\monodll_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
|
$(OBJS)\monodll_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
|
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
|
||||||
|
|
||||||
@@ -6094,11 +6093,6 @@ $(OBJS)\monodll_graphics.obj: ..\..\src\msw\graphics.cpp
|
|||||||
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
|
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!if "$(USE_GUI)" == "1"
|
|
||||||
$(OBJS)\monodll_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
|
|
||||||
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
|
|
||||||
!endif
|
|
||||||
|
|
||||||
!if "$(USE_GUI)" == "1"
|
!if "$(USE_GUI)" == "1"
|
||||||
$(OBJS)\monodll_icon.obj: ..\..\src\msw\icon.cpp
|
$(OBJS)\monodll_icon.obj: ..\..\src\msw\icon.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
|
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
|
||||||
@@ -7603,6 +7597,9 @@ $(OBJS)\monolib_url.obj: ..\..\src\common\url.cpp
|
|||||||
$(OBJS)\monolib_gsocket.obj: ..\..\src\msw\gsocket.cpp
|
$(OBJS)\monolib_gsocket.obj: ..\..\src\msw\gsocket.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
|
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
|
||||||
|
|
||||||
|
$(OBJS)\monolib_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
|
||||||
|
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
|
||||||
|
|
||||||
$(OBJS)\monolib_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
|
$(OBJS)\monolib_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
|
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
|
||||||
|
|
||||||
@@ -8194,11 +8191,6 @@ $(OBJS)\monolib_graphics.obj: ..\..\src\msw\graphics.cpp
|
|||||||
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
|
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!if "$(USE_GUI)" == "1"
|
|
||||||
$(OBJS)\monolib_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
|
|
||||||
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
|
|
||||||
!endif
|
|
||||||
|
|
||||||
!if "$(USE_GUI)" == "1"
|
!if "$(USE_GUI)" == "1"
|
||||||
$(OBJS)\monolib_icon.obj: ..\..\src\msw\icon.cpp
|
$(OBJS)\monolib_icon.obj: ..\..\src\msw\icon.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
|
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
|
||||||
@@ -10012,6 +10004,9 @@ $(OBJS)\netdll_url.obj: ..\..\src\common\url.cpp
|
|||||||
$(OBJS)\netdll_gsocket.obj: ..\..\src\msw\gsocket.cpp
|
$(OBJS)\netdll_gsocket.obj: ..\..\src\msw\gsocket.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(NETDLL_CXXFLAGS) $**
|
$(CXX) -q -c -P -o$@ $(NETDLL_CXXFLAGS) $**
|
||||||
|
|
||||||
|
$(OBJS)\netdll_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
|
||||||
|
$(CXX) -q -c -P -o$@ $(NETDLL_CXXFLAGS) $**
|
||||||
|
|
||||||
$(OBJS)\netdll_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
|
$(OBJS)\netdll_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(NETDLL_CXXFLAGS) $**
|
$(CXX) -q -c -P -o$@ $(NETDLL_CXXFLAGS) $**
|
||||||
|
|
||||||
@@ -10051,6 +10046,9 @@ $(OBJS)\netlib_url.obj: ..\..\src\common\url.cpp
|
|||||||
$(OBJS)\netlib_gsocket.obj: ..\..\src\msw\gsocket.cpp
|
$(OBJS)\netlib_gsocket.obj: ..\..\src\msw\gsocket.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(NETLIB_CXXFLAGS) $**
|
$(CXX) -q -c -P -o$@ $(NETLIB_CXXFLAGS) $**
|
||||||
|
|
||||||
|
$(OBJS)\netlib_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
|
||||||
|
$(CXX) -q -c -P -o$@ $(NETLIB_CXXFLAGS) $**
|
||||||
|
|
||||||
$(OBJS)\netlib_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
|
$(OBJS)\netlib_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(NETLIB_CXXFLAGS) $**
|
$(CXX) -q -c -P -o$@ $(NETLIB_CXXFLAGS) $**
|
||||||
|
|
||||||
@@ -10348,11 +10346,6 @@ $(OBJS)\coredll_graphics.obj: ..\..\src\msw\graphics.cpp
|
|||||||
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
|
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!if "$(USE_GUI)" == "1"
|
|
||||||
$(OBJS)\coredll_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
|
|
||||||
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
|
|
||||||
!endif
|
|
||||||
|
|
||||||
!if "$(USE_GUI)" == "1"
|
!if "$(USE_GUI)" == "1"
|
||||||
$(OBJS)\coredll_icon.obj: ..\..\src\msw\icon.cpp
|
$(OBJS)\coredll_icon.obj: ..\..\src\msw\icon.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
|
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
|
||||||
@@ -11659,11 +11652,6 @@ $(OBJS)\corelib_graphics.obj: ..\..\src\msw\graphics.cpp
|
|||||||
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
|
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!if "$(USE_GUI)" == "1"
|
|
||||||
$(OBJS)\corelib_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
|
|
||||||
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
|
|
||||||
!endif
|
|
||||||
|
|
||||||
!if "$(USE_GUI)" == "1"
|
!if "$(USE_GUI)" == "1"
|
||||||
$(OBJS)\corelib_icon.obj: ..\..\src\msw\icon.cpp
|
$(OBJS)\corelib_icon.obj: ..\..\src\msw\icon.cpp
|
||||||
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
|
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
|
||||||
|
@@ -402,6 +402,7 @@ MONODLL_OBJECTS = \
|
|||||||
$(OBJS)\monodll_socket.o \
|
$(OBJS)\monodll_socket.o \
|
||||||
$(OBJS)\monodll_url.o \
|
$(OBJS)\monodll_url.o \
|
||||||
$(OBJS)\monodll_gsocket.o \
|
$(OBJS)\monodll_gsocket.o \
|
||||||
|
$(OBJS)\monodll_gsockmsw.o \
|
||||||
$(OBJS)\monodll_urlmsw.o \
|
$(OBJS)\monodll_urlmsw.o \
|
||||||
$(____MONOLIB_GUI_SRC_FILENAMES_OBJECTS) \
|
$(____MONOLIB_GUI_SRC_FILENAMES_OBJECTS) \
|
||||||
$(OBJS)\monodll_xml.o \
|
$(OBJS)\monodll_xml.o \
|
||||||
@@ -539,6 +540,7 @@ MONOLIB_OBJECTS = \
|
|||||||
$(OBJS)\monolib_socket.o \
|
$(OBJS)\monolib_socket.o \
|
||||||
$(OBJS)\monolib_url.o \
|
$(OBJS)\monolib_url.o \
|
||||||
$(OBJS)\monolib_gsocket.o \
|
$(OBJS)\monolib_gsocket.o \
|
||||||
|
$(OBJS)\monolib_gsockmsw.o \
|
||||||
$(OBJS)\monolib_urlmsw.o \
|
$(OBJS)\monolib_urlmsw.o \
|
||||||
$(____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS) \
|
$(____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS) \
|
||||||
$(OBJS)\monolib_xml.o \
|
$(OBJS)\monolib_xml.o \
|
||||||
@@ -804,6 +806,7 @@ NETDLL_OBJECTS = \
|
|||||||
$(OBJS)\netdll_socket.o \
|
$(OBJS)\netdll_socket.o \
|
||||||
$(OBJS)\netdll_url.o \
|
$(OBJS)\netdll_url.o \
|
||||||
$(OBJS)\netdll_gsocket.o \
|
$(OBJS)\netdll_gsocket.o \
|
||||||
|
$(OBJS)\netdll_gsockmsw.o \
|
||||||
$(OBJS)\netdll_urlmsw.o
|
$(OBJS)\netdll_urlmsw.o
|
||||||
NETLIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) $(GCCFLAGS) \
|
NETLIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) $(GCCFLAGS) \
|
||||||
-DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \
|
-DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \
|
||||||
@@ -826,6 +829,7 @@ NETLIB_OBJECTS = \
|
|||||||
$(OBJS)\netlib_socket.o \
|
$(OBJS)\netlib_socket.o \
|
||||||
$(OBJS)\netlib_url.o \
|
$(OBJS)\netlib_url.o \
|
||||||
$(OBJS)\netlib_gsocket.o \
|
$(OBJS)\netlib_gsocket.o \
|
||||||
|
$(OBJS)\netlib_gsockmsw.o \
|
||||||
$(OBJS)\netlib_urlmsw.o
|
$(OBJS)\netlib_urlmsw.o
|
||||||
COREDLL_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
|
COREDLL_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
|
||||||
$(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
$(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||||
@@ -1505,7 +1509,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
|
|||||||
$(OBJS)\monodll_gdiobj.o \
|
$(OBJS)\monodll_gdiobj.o \
|
||||||
$(OBJS)\monodll_gdiplus.o \
|
$(OBJS)\monodll_gdiplus.o \
|
||||||
$(OBJS)\monodll_graphics.o \
|
$(OBJS)\monodll_graphics.o \
|
||||||
$(OBJS)\monodll_gsockmsw.o \
|
|
||||||
$(OBJS)\monodll_icon.o \
|
$(OBJS)\monodll_icon.o \
|
||||||
$(OBJS)\monodll_imaglist.o \
|
$(OBJS)\monodll_imaglist.o \
|
||||||
$(OBJS)\monodll_minifram.o \
|
$(OBJS)\monodll_minifram.o \
|
||||||
@@ -1736,7 +1739,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
|
|||||||
$(OBJS)\monodll_gdiobj.o \
|
$(OBJS)\monodll_gdiobj.o \
|
||||||
$(OBJS)\monodll_gdiplus.o \
|
$(OBJS)\monodll_gdiplus.o \
|
||||||
$(OBJS)\monodll_graphics.o \
|
$(OBJS)\monodll_graphics.o \
|
||||||
$(OBJS)\monodll_gsockmsw.o \
|
|
||||||
$(OBJS)\monodll_icon.o \
|
$(OBJS)\monodll_icon.o \
|
||||||
$(OBJS)\monodll_imaglist.o \
|
$(OBJS)\monodll_imaglist.o \
|
||||||
$(OBJS)\monodll_minifram.o \
|
$(OBJS)\monodll_minifram.o \
|
||||||
@@ -2154,7 +2156,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
|
|||||||
$(OBJS)\monolib_gdiobj.o \
|
$(OBJS)\monolib_gdiobj.o \
|
||||||
$(OBJS)\monolib_gdiplus.o \
|
$(OBJS)\monolib_gdiplus.o \
|
||||||
$(OBJS)\monolib_graphics.o \
|
$(OBJS)\monolib_graphics.o \
|
||||||
$(OBJS)\monolib_gsockmsw.o \
|
|
||||||
$(OBJS)\monolib_icon.o \
|
$(OBJS)\monolib_icon.o \
|
||||||
$(OBJS)\monolib_imaglist.o \
|
$(OBJS)\monolib_imaglist.o \
|
||||||
$(OBJS)\monolib_minifram.o \
|
$(OBJS)\monolib_minifram.o \
|
||||||
@@ -2385,7 +2386,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
|
|||||||
$(OBJS)\monolib_gdiobj.o \
|
$(OBJS)\monolib_gdiobj.o \
|
||||||
$(OBJS)\monolib_gdiplus.o \
|
$(OBJS)\monolib_gdiplus.o \
|
||||||
$(OBJS)\monolib_graphics.o \
|
$(OBJS)\monolib_graphics.o \
|
||||||
$(OBJS)\monolib_gsockmsw.o \
|
|
||||||
$(OBJS)\monolib_icon.o \
|
$(OBJS)\monolib_icon.o \
|
||||||
$(OBJS)\monolib_imaglist.o \
|
$(OBJS)\monolib_imaglist.o \
|
||||||
$(OBJS)\monolib_minifram.o \
|
$(OBJS)\monolib_minifram.o \
|
||||||
@@ -2728,7 +2728,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
|
|||||||
$(OBJS)\coredll_gdiobj.o \
|
$(OBJS)\coredll_gdiobj.o \
|
||||||
$(OBJS)\coredll_gdiplus.o \
|
$(OBJS)\coredll_gdiplus.o \
|
||||||
$(OBJS)\coredll_graphics.o \
|
$(OBJS)\coredll_graphics.o \
|
||||||
$(OBJS)\coredll_gsockmsw.o \
|
|
||||||
$(OBJS)\coredll_icon.o \
|
$(OBJS)\coredll_icon.o \
|
||||||
$(OBJS)\coredll_imaglist.o \
|
$(OBJS)\coredll_imaglist.o \
|
||||||
$(OBJS)\coredll_minifram.o \
|
$(OBJS)\coredll_minifram.o \
|
||||||
@@ -2959,7 +2958,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
|
|||||||
$(OBJS)\coredll_gdiobj.o \
|
$(OBJS)\coredll_gdiobj.o \
|
||||||
$(OBJS)\coredll_gdiplus.o \
|
$(OBJS)\coredll_gdiplus.o \
|
||||||
$(OBJS)\coredll_graphics.o \
|
$(OBJS)\coredll_graphics.o \
|
||||||
$(OBJS)\coredll_gsockmsw.o \
|
|
||||||
$(OBJS)\coredll_icon.o \
|
$(OBJS)\coredll_icon.o \
|
||||||
$(OBJS)\coredll_imaglist.o \
|
$(OBJS)\coredll_imaglist.o \
|
||||||
$(OBJS)\coredll_minifram.o \
|
$(OBJS)\coredll_minifram.o \
|
||||||
@@ -3200,7 +3198,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
|
|||||||
$(OBJS)\corelib_gdiobj.o \
|
$(OBJS)\corelib_gdiobj.o \
|
||||||
$(OBJS)\corelib_gdiplus.o \
|
$(OBJS)\corelib_gdiplus.o \
|
||||||
$(OBJS)\corelib_graphics.o \
|
$(OBJS)\corelib_graphics.o \
|
||||||
$(OBJS)\corelib_gsockmsw.o \
|
|
||||||
$(OBJS)\corelib_icon.o \
|
$(OBJS)\corelib_icon.o \
|
||||||
$(OBJS)\corelib_imaglist.o \
|
$(OBJS)\corelib_imaglist.o \
|
||||||
$(OBJS)\corelib_minifram.o \
|
$(OBJS)\corelib_minifram.o \
|
||||||
@@ -3431,7 +3428,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
|
|||||||
$(OBJS)\corelib_gdiobj.o \
|
$(OBJS)\corelib_gdiobj.o \
|
||||||
$(OBJS)\corelib_gdiplus.o \
|
$(OBJS)\corelib_gdiplus.o \
|
||||||
$(OBJS)\corelib_graphics.o \
|
$(OBJS)\corelib_graphics.o \
|
||||||
$(OBJS)\corelib_gsockmsw.o \
|
|
||||||
$(OBJS)\corelib_icon.o \
|
$(OBJS)\corelib_icon.o \
|
||||||
$(OBJS)\corelib_imaglist.o \
|
$(OBJS)\corelib_imaglist.o \
|
||||||
$(OBJS)\corelib_minifram.o \
|
$(OBJS)\corelib_minifram.o \
|
||||||
@@ -5643,6 +5639,9 @@ $(OBJS)\monodll_url.o: ../../src/common/url.cpp
|
|||||||
$(OBJS)\monodll_gsocket.o: ../../src/msw/gsocket.cpp
|
$(OBJS)\monodll_gsocket.o: ../../src/msw/gsocket.cpp
|
||||||
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
$(OBJS)\monodll_gsockmsw.o: ../../src/msw/gsockmsw.cpp
|
||||||
|
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
$(OBJS)\monodll_urlmsw.o: ../../src/msw/urlmsw.cpp
|
$(OBJS)\monodll_urlmsw.o: ../../src/msw/urlmsw.cpp
|
||||||
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
@@ -6234,11 +6233,6 @@ $(OBJS)\monodll_graphics.o: ../../src/msw/graphics.cpp
|
|||||||
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(USE_GUI),1)
|
|
||||||
$(OBJS)\monodll_gsockmsw.o: ../../src/msw/gsockmsw.cpp
|
|
||||||
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(USE_GUI),1)
|
ifeq ($(USE_GUI),1)
|
||||||
$(OBJS)\monodll_icon.o: ../../src/msw/icon.cpp
|
$(OBJS)\monodll_icon.o: ../../src/msw/icon.cpp
|
||||||
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
@@ -7845,6 +7839,9 @@ $(OBJS)\monolib_url.o: ../../src/common/url.cpp
|
|||||||
$(OBJS)\monolib_gsocket.o: ../../src/msw/gsocket.cpp
|
$(OBJS)\monolib_gsocket.o: ../../src/msw/gsocket.cpp
|
||||||
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
$(OBJS)\monolib_gsockmsw.o: ../../src/msw/gsockmsw.cpp
|
||||||
|
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
$(OBJS)\monolib_urlmsw.o: ../../src/msw/urlmsw.cpp
|
$(OBJS)\monolib_urlmsw.o: ../../src/msw/urlmsw.cpp
|
||||||
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
@@ -8436,11 +8433,6 @@ $(OBJS)\monolib_graphics.o: ../../src/msw/graphics.cpp
|
|||||||
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(USE_GUI),1)
|
|
||||||
$(OBJS)\monolib_gsockmsw.o: ../../src/msw/gsockmsw.cpp
|
|
||||||
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(USE_GUI),1)
|
ifeq ($(USE_GUI),1)
|
||||||
$(OBJS)\monolib_icon.o: ../../src/msw/icon.cpp
|
$(OBJS)\monolib_icon.o: ../../src/msw/icon.cpp
|
||||||
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
@@ -10356,6 +10348,9 @@ $(OBJS)\netdll_url.o: ../../src/common/url.cpp
|
|||||||
$(OBJS)\netdll_gsocket.o: ../../src/msw/gsocket.cpp
|
$(OBJS)\netdll_gsocket.o: ../../src/msw/gsocket.cpp
|
||||||
$(CXX) -c -o $@ $(NETDLL_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(NETDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
$(OBJS)\netdll_gsockmsw.o: ../../src/msw/gsockmsw.cpp
|
||||||
|
$(CXX) -c -o $@ $(NETDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
$(OBJS)\netdll_urlmsw.o: ../../src/msw/urlmsw.cpp
|
$(OBJS)\netdll_urlmsw.o: ../../src/msw/urlmsw.cpp
|
||||||
$(CXX) -c -o $@ $(NETDLL_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(NETDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
@@ -10395,6 +10390,9 @@ $(OBJS)\netlib_url.o: ../../src/common/url.cpp
|
|||||||
$(OBJS)\netlib_gsocket.o: ../../src/msw/gsocket.cpp
|
$(OBJS)\netlib_gsocket.o: ../../src/msw/gsocket.cpp
|
||||||
$(CXX) -c -o $@ $(NETLIB_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(NETLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
$(OBJS)\netlib_gsockmsw.o: ../../src/msw/gsockmsw.cpp
|
||||||
|
$(CXX) -c -o $@ $(NETLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
$(OBJS)\netlib_urlmsw.o: ../../src/msw/urlmsw.cpp
|
$(OBJS)\netlib_urlmsw.o: ../../src/msw/urlmsw.cpp
|
||||||
$(CXX) -c -o $@ $(NETLIB_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(NETLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
@@ -10692,11 +10690,6 @@ $(OBJS)\coredll_graphics.o: ../../src/msw/graphics.cpp
|
|||||||
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(USE_GUI),1)
|
|
||||||
$(OBJS)\coredll_gsockmsw.o: ../../src/msw/gsockmsw.cpp
|
|
||||||
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(USE_GUI),1)
|
ifeq ($(USE_GUI),1)
|
||||||
$(OBJS)\coredll_icon.o: ../../src/msw/icon.cpp
|
$(OBJS)\coredll_icon.o: ../../src/msw/icon.cpp
|
||||||
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||||
@@ -12103,11 +12096,6 @@ $(OBJS)\corelib_graphics.o: ../../src/msw/graphics.cpp
|
|||||||
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(USE_GUI),1)
|
|
||||||
$(OBJS)\corelib_gsockmsw.o: ../../src/msw/gsockmsw.cpp
|
|
||||||
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(USE_GUI),1)
|
ifeq ($(USE_GUI),1)
|
||||||
$(OBJS)\corelib_icon.o: ../../src/msw/icon.cpp
|
$(OBJS)\corelib_icon.o: ../../src/msw/icon.cpp
|
||||||
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
@@ -419,6 +419,7 @@ MONODLL_OBJECTS = \
|
|||||||
$(OBJS)\monodll_socket.obj \
|
$(OBJS)\monodll_socket.obj \
|
||||||
$(OBJS)\monodll_url.obj \
|
$(OBJS)\monodll_url.obj \
|
||||||
$(OBJS)\monodll_gsocket.obj \
|
$(OBJS)\monodll_gsocket.obj \
|
||||||
|
$(OBJS)\monodll_gsockmsw.obj \
|
||||||
$(OBJS)\monodll_urlmsw.obj \
|
$(OBJS)\monodll_urlmsw.obj \
|
||||||
$(____MONOLIB_GUI_SRC_FILENAMES_OBJECTS) \
|
$(____MONOLIB_GUI_SRC_FILENAMES_OBJECTS) \
|
||||||
$(OBJS)\monodll_xml.obj \
|
$(OBJS)\monodll_xml.obj \
|
||||||
@@ -560,6 +561,7 @@ MONOLIB_OBJECTS = \
|
|||||||
$(OBJS)\monolib_socket.obj \
|
$(OBJS)\monolib_socket.obj \
|
||||||
$(OBJS)\monolib_url.obj \
|
$(OBJS)\monolib_url.obj \
|
||||||
$(OBJS)\monolib_gsocket.obj \
|
$(OBJS)\monolib_gsocket.obj \
|
||||||
|
$(OBJS)\monolib_gsockmsw.obj \
|
||||||
$(OBJS)\monolib_urlmsw.obj \
|
$(OBJS)\monolib_urlmsw.obj \
|
||||||
$(____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS) \
|
$(____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS) \
|
||||||
$(OBJS)\monolib_xml.obj \
|
$(OBJS)\monolib_xml.obj \
|
||||||
@@ -836,6 +838,7 @@ NETDLL_OBJECTS = \
|
|||||||
$(OBJS)\netdll_socket.obj \
|
$(OBJS)\netdll_socket.obj \
|
||||||
$(OBJS)\netdll_url.obj \
|
$(OBJS)\netdll_url.obj \
|
||||||
$(OBJS)\netdll_gsocket.obj \
|
$(OBJS)\netdll_gsocket.obj \
|
||||||
|
$(OBJS)\netdll_gsockmsw.obj \
|
||||||
$(OBJS)\netdll_urlmsw.obj
|
$(OBJS)\netdll_urlmsw.obj
|
||||||
NETLIB_CXXFLAGS = /M$(__RUNTIME_LIBS_167)$(__DEBUGRUNTIME) /DWIN32 \
|
NETLIB_CXXFLAGS = /M$(__RUNTIME_LIBS_167)$(__DEBUGRUNTIME) /DWIN32 \
|
||||||
$(__DEBUGINFO) \
|
$(__DEBUGINFO) \
|
||||||
@@ -861,6 +864,7 @@ NETLIB_OBJECTS = \
|
|||||||
$(OBJS)\netlib_socket.obj \
|
$(OBJS)\netlib_socket.obj \
|
||||||
$(OBJS)\netlib_url.obj \
|
$(OBJS)\netlib_url.obj \
|
||||||
$(OBJS)\netlib_gsocket.obj \
|
$(OBJS)\netlib_gsocket.obj \
|
||||||
|
$(OBJS)\netlib_gsockmsw.obj \
|
||||||
$(OBJS)\netlib_urlmsw.obj
|
$(OBJS)\netlib_urlmsw.obj
|
||||||
COREDLL_CXXFLAGS = /M$(__RUNTIME_LIBS_181)$(__DEBUGRUNTIME) /DWIN32 \
|
COREDLL_CXXFLAGS = /M$(__RUNTIME_LIBS_181)$(__DEBUGRUNTIME) /DWIN32 \
|
||||||
$(__DEBUGINFO) \
|
$(__DEBUGINFO) \
|
||||||
@@ -1664,7 +1668,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
|
|||||||
$(OBJS)\monodll_gdiobj.obj \
|
$(OBJS)\monodll_gdiobj.obj \
|
||||||
$(OBJS)\monodll_gdiplus.obj \
|
$(OBJS)\monodll_gdiplus.obj \
|
||||||
$(OBJS)\monodll_graphics.obj \
|
$(OBJS)\monodll_graphics.obj \
|
||||||
$(OBJS)\monodll_gsockmsw.obj \
|
|
||||||
$(OBJS)\monodll_icon.obj \
|
$(OBJS)\monodll_icon.obj \
|
||||||
$(OBJS)\monodll_imaglist.obj \
|
$(OBJS)\monodll_imaglist.obj \
|
||||||
$(OBJS)\monodll_minifram.obj \
|
$(OBJS)\monodll_minifram.obj \
|
||||||
@@ -1893,7 +1896,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
|
|||||||
$(OBJS)\monodll_gdiobj.obj \
|
$(OBJS)\monodll_gdiobj.obj \
|
||||||
$(OBJS)\monodll_gdiplus.obj \
|
$(OBJS)\monodll_gdiplus.obj \
|
||||||
$(OBJS)\monodll_graphics.obj \
|
$(OBJS)\monodll_graphics.obj \
|
||||||
$(OBJS)\monodll_gsockmsw.obj \
|
|
||||||
$(OBJS)\monodll_icon.obj \
|
$(OBJS)\monodll_icon.obj \
|
||||||
$(OBJS)\monodll_imaglist.obj \
|
$(OBJS)\monodll_imaglist.obj \
|
||||||
$(OBJS)\monodll_minifram.obj \
|
$(OBJS)\monodll_minifram.obj \
|
||||||
@@ -2313,7 +2315,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
|
|||||||
$(OBJS)\monolib_gdiobj.obj \
|
$(OBJS)\monolib_gdiobj.obj \
|
||||||
$(OBJS)\monolib_gdiplus.obj \
|
$(OBJS)\monolib_gdiplus.obj \
|
||||||
$(OBJS)\monolib_graphics.obj \
|
$(OBJS)\monolib_graphics.obj \
|
||||||
$(OBJS)\monolib_gsockmsw.obj \
|
|
||||||
$(OBJS)\monolib_icon.obj \
|
$(OBJS)\monolib_icon.obj \
|
||||||
$(OBJS)\monolib_imaglist.obj \
|
$(OBJS)\monolib_imaglist.obj \
|
||||||
$(OBJS)\monolib_minifram.obj \
|
$(OBJS)\monolib_minifram.obj \
|
||||||
@@ -2542,7 +2543,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
|
|||||||
$(OBJS)\monolib_gdiobj.obj \
|
$(OBJS)\monolib_gdiobj.obj \
|
||||||
$(OBJS)\monolib_gdiplus.obj \
|
$(OBJS)\monolib_gdiplus.obj \
|
||||||
$(OBJS)\monolib_graphics.obj \
|
$(OBJS)\monolib_graphics.obj \
|
||||||
$(OBJS)\monolib_gsockmsw.obj \
|
|
||||||
$(OBJS)\monolib_icon.obj \
|
$(OBJS)\monolib_icon.obj \
|
||||||
$(OBJS)\monolib_imaglist.obj \
|
$(OBJS)\monolib_imaglist.obj \
|
||||||
$(OBJS)\monolib_minifram.obj \
|
$(OBJS)\monolib_minifram.obj \
|
||||||
@@ -2901,7 +2901,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
|
|||||||
$(OBJS)\coredll_gdiobj.obj \
|
$(OBJS)\coredll_gdiobj.obj \
|
||||||
$(OBJS)\coredll_gdiplus.obj \
|
$(OBJS)\coredll_gdiplus.obj \
|
||||||
$(OBJS)\coredll_graphics.obj \
|
$(OBJS)\coredll_graphics.obj \
|
||||||
$(OBJS)\coredll_gsockmsw.obj \
|
|
||||||
$(OBJS)\coredll_icon.obj \
|
$(OBJS)\coredll_icon.obj \
|
||||||
$(OBJS)\coredll_imaglist.obj \
|
$(OBJS)\coredll_imaglist.obj \
|
||||||
$(OBJS)\coredll_minifram.obj \
|
$(OBJS)\coredll_minifram.obj \
|
||||||
@@ -3130,7 +3129,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
|
|||||||
$(OBJS)\coredll_gdiobj.obj \
|
$(OBJS)\coredll_gdiobj.obj \
|
||||||
$(OBJS)\coredll_gdiplus.obj \
|
$(OBJS)\coredll_gdiplus.obj \
|
||||||
$(OBJS)\coredll_graphics.obj \
|
$(OBJS)\coredll_graphics.obj \
|
||||||
$(OBJS)\coredll_gsockmsw.obj \
|
|
||||||
$(OBJS)\coredll_icon.obj \
|
$(OBJS)\coredll_icon.obj \
|
||||||
$(OBJS)\coredll_imaglist.obj \
|
$(OBJS)\coredll_imaglist.obj \
|
||||||
$(OBJS)\coredll_minifram.obj \
|
$(OBJS)\coredll_minifram.obj \
|
||||||
@@ -3371,7 +3369,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
|
|||||||
$(OBJS)\corelib_gdiobj.obj \
|
$(OBJS)\corelib_gdiobj.obj \
|
||||||
$(OBJS)\corelib_gdiplus.obj \
|
$(OBJS)\corelib_gdiplus.obj \
|
||||||
$(OBJS)\corelib_graphics.obj \
|
$(OBJS)\corelib_graphics.obj \
|
||||||
$(OBJS)\corelib_gsockmsw.obj \
|
|
||||||
$(OBJS)\corelib_icon.obj \
|
$(OBJS)\corelib_icon.obj \
|
||||||
$(OBJS)\corelib_imaglist.obj \
|
$(OBJS)\corelib_imaglist.obj \
|
||||||
$(OBJS)\corelib_minifram.obj \
|
$(OBJS)\corelib_minifram.obj \
|
||||||
@@ -3600,7 +3597,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
|
|||||||
$(OBJS)\corelib_gdiobj.obj \
|
$(OBJS)\corelib_gdiobj.obj \
|
||||||
$(OBJS)\corelib_gdiplus.obj \
|
$(OBJS)\corelib_gdiplus.obj \
|
||||||
$(OBJS)\corelib_graphics.obj \
|
$(OBJS)\corelib_graphics.obj \
|
||||||
$(OBJS)\corelib_gsockmsw.obj \
|
|
||||||
$(OBJS)\corelib_icon.obj \
|
$(OBJS)\corelib_icon.obj \
|
||||||
$(OBJS)\corelib_imaglist.obj \
|
$(OBJS)\corelib_imaglist.obj \
|
||||||
$(OBJS)\corelib_minifram.obj \
|
$(OBJS)\corelib_minifram.obj \
|
||||||
@@ -5835,6 +5831,9 @@ $(OBJS)\monodll_url.obj: ..\..\src\common\url.cpp
|
|||||||
$(OBJS)\monodll_gsocket.obj: ..\..\src\msw\gsocket.cpp
|
$(OBJS)\monodll_gsocket.obj: ..\..\src\msw\gsocket.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
|
||||||
|
|
||||||
|
$(OBJS)\monodll_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
|
||||||
|
|
||||||
$(OBJS)\monodll_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
|
$(OBJS)\monodll_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
|
||||||
|
|
||||||
@@ -6426,11 +6425,6 @@ $(OBJS)\monodll_graphics.obj: ..\..\src\msw\graphics.cpp
|
|||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!if "$(USE_GUI)" == "1"
|
|
||||||
$(OBJS)\monodll_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
|
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
|
|
||||||
!endif
|
|
||||||
|
|
||||||
!if "$(USE_GUI)" == "1"
|
!if "$(USE_GUI)" == "1"
|
||||||
$(OBJS)\monodll_icon.obj: ..\..\src\msw\icon.cpp
|
$(OBJS)\monodll_icon.obj: ..\..\src\msw\icon.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
|
||||||
@@ -7935,6 +7929,9 @@ $(OBJS)\monolib_url.obj: ..\..\src\common\url.cpp
|
|||||||
$(OBJS)\monolib_gsocket.obj: ..\..\src\msw\gsocket.cpp
|
$(OBJS)\monolib_gsocket.obj: ..\..\src\msw\gsocket.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
|
||||||
|
|
||||||
|
$(OBJS)\monolib_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
|
||||||
|
|
||||||
$(OBJS)\monolib_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
|
$(OBJS)\monolib_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
|
||||||
|
|
||||||
@@ -8526,11 +8523,6 @@ $(OBJS)\monolib_graphics.obj: ..\..\src\msw\graphics.cpp
|
|||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!if "$(USE_GUI)" == "1"
|
|
||||||
$(OBJS)\monolib_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
|
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
|
|
||||||
!endif
|
|
||||||
|
|
||||||
!if "$(USE_GUI)" == "1"
|
!if "$(USE_GUI)" == "1"
|
||||||
$(OBJS)\monolib_icon.obj: ..\..\src\msw\icon.cpp
|
$(OBJS)\monolib_icon.obj: ..\..\src\msw\icon.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
|
||||||
@@ -10344,6 +10336,9 @@ $(OBJS)\netdll_url.obj: ..\..\src\common\url.cpp
|
|||||||
$(OBJS)\netdll_gsocket.obj: ..\..\src\msw\gsocket.cpp
|
$(OBJS)\netdll_gsocket.obj: ..\..\src\msw\gsocket.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(NETDLL_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(NETDLL_CXXFLAGS) $**
|
||||||
|
|
||||||
|
$(OBJS)\netdll_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(NETDLL_CXXFLAGS) $**
|
||||||
|
|
||||||
$(OBJS)\netdll_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
|
$(OBJS)\netdll_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(NETDLL_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(NETDLL_CXXFLAGS) $**
|
||||||
|
|
||||||
@@ -10383,6 +10378,9 @@ $(OBJS)\netlib_url.obj: ..\..\src\common\url.cpp
|
|||||||
$(OBJS)\netlib_gsocket.obj: ..\..\src\msw\gsocket.cpp
|
$(OBJS)\netlib_gsocket.obj: ..\..\src\msw\gsocket.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(NETLIB_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(NETLIB_CXXFLAGS) $**
|
||||||
|
|
||||||
|
$(OBJS)\netlib_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(NETLIB_CXXFLAGS) $**
|
||||||
|
|
||||||
$(OBJS)\netlib_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
|
$(OBJS)\netlib_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(NETLIB_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(NETLIB_CXXFLAGS) $**
|
||||||
|
|
||||||
@@ -10680,11 +10678,6 @@ $(OBJS)\coredll_graphics.obj: ..\..\src\msw\graphics.cpp
|
|||||||
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!if "$(USE_GUI)" == "1"
|
|
||||||
$(OBJS)\coredll_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
|
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
|
|
||||||
!endif
|
|
||||||
|
|
||||||
!if "$(USE_GUI)" == "1"
|
!if "$(USE_GUI)" == "1"
|
||||||
$(OBJS)\coredll_icon.obj: ..\..\src\msw\icon.cpp
|
$(OBJS)\coredll_icon.obj: ..\..\src\msw\icon.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
|
||||||
@@ -11991,11 +11984,6 @@ $(OBJS)\corelib_graphics.obj: ..\..\src\msw\graphics.cpp
|
|||||||
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!if "$(USE_GUI)" == "1"
|
|
||||||
$(OBJS)\corelib_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
|
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
|
|
||||||
!endif
|
|
||||||
|
|
||||||
!if "$(USE_GUI)" == "1"
|
!if "$(USE_GUI)" == "1"
|
||||||
$(OBJS)\corelib_icon.obj: ..\..\src\msw\icon.cpp
|
$(OBJS)\corelib_icon.obj: ..\..\src\msw\icon.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
|
||||||
|
@@ -234,7 +234,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = &
|
|||||||
$(OBJS)\monodll_gdiobj.obj &
|
$(OBJS)\monodll_gdiobj.obj &
|
||||||
$(OBJS)\monodll_gdiplus.obj &
|
$(OBJS)\monodll_gdiplus.obj &
|
||||||
$(OBJS)\monodll_graphics.obj &
|
$(OBJS)\monodll_graphics.obj &
|
||||||
$(OBJS)\monodll_gsockmsw.obj &
|
|
||||||
$(OBJS)\monodll_icon.obj &
|
$(OBJS)\monodll_icon.obj &
|
||||||
$(OBJS)\monodll_imaglist.obj &
|
$(OBJS)\monodll_imaglist.obj &
|
||||||
$(OBJS)\monodll_minifram.obj &
|
$(OBJS)\monodll_minifram.obj &
|
||||||
@@ -465,7 +464,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = &
|
|||||||
$(OBJS)\monodll_gdiobj.obj &
|
$(OBJS)\monodll_gdiobj.obj &
|
||||||
$(OBJS)\monodll_gdiplus.obj &
|
$(OBJS)\monodll_gdiplus.obj &
|
||||||
$(OBJS)\monodll_graphics.obj &
|
$(OBJS)\monodll_graphics.obj &
|
||||||
$(OBJS)\monodll_gsockmsw.obj &
|
|
||||||
$(OBJS)\monodll_icon.obj &
|
$(OBJS)\monodll_icon.obj &
|
||||||
$(OBJS)\monodll_imaglist.obj &
|
$(OBJS)\monodll_imaglist.obj &
|
||||||
$(OBJS)\monodll_minifram.obj &
|
$(OBJS)\monodll_minifram.obj &
|
||||||
@@ -888,7 +886,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = &
|
|||||||
$(OBJS)\monolib_gdiobj.obj &
|
$(OBJS)\monolib_gdiobj.obj &
|
||||||
$(OBJS)\monolib_gdiplus.obj &
|
$(OBJS)\monolib_gdiplus.obj &
|
||||||
$(OBJS)\monolib_graphics.obj &
|
$(OBJS)\monolib_graphics.obj &
|
||||||
$(OBJS)\monolib_gsockmsw.obj &
|
|
||||||
$(OBJS)\monolib_icon.obj &
|
$(OBJS)\monolib_icon.obj &
|
||||||
$(OBJS)\monolib_imaglist.obj &
|
$(OBJS)\monolib_imaglist.obj &
|
||||||
$(OBJS)\monolib_minifram.obj &
|
$(OBJS)\monolib_minifram.obj &
|
||||||
@@ -1119,7 +1116,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = &
|
|||||||
$(OBJS)\monolib_gdiobj.obj &
|
$(OBJS)\monolib_gdiobj.obj &
|
||||||
$(OBJS)\monolib_gdiplus.obj &
|
$(OBJS)\monolib_gdiplus.obj &
|
||||||
$(OBJS)\monolib_graphics.obj &
|
$(OBJS)\monolib_graphics.obj &
|
||||||
$(OBJS)\monolib_gsockmsw.obj &
|
|
||||||
$(OBJS)\monolib_icon.obj &
|
$(OBJS)\monolib_icon.obj &
|
||||||
$(OBJS)\monolib_imaglist.obj &
|
$(OBJS)\monolib_imaglist.obj &
|
||||||
$(OBJS)\monolib_minifram.obj &
|
$(OBJS)\monolib_minifram.obj &
|
||||||
@@ -1473,7 +1469,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = &
|
|||||||
$(OBJS)\coredll_gdiobj.obj &
|
$(OBJS)\coredll_gdiobj.obj &
|
||||||
$(OBJS)\coredll_gdiplus.obj &
|
$(OBJS)\coredll_gdiplus.obj &
|
||||||
$(OBJS)\coredll_graphics.obj &
|
$(OBJS)\coredll_graphics.obj &
|
||||||
$(OBJS)\coredll_gsockmsw.obj &
|
|
||||||
$(OBJS)\coredll_icon.obj &
|
$(OBJS)\coredll_icon.obj &
|
||||||
$(OBJS)\coredll_imaglist.obj &
|
$(OBJS)\coredll_imaglist.obj &
|
||||||
$(OBJS)\coredll_minifram.obj &
|
$(OBJS)\coredll_minifram.obj &
|
||||||
@@ -1704,7 +1699,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = &
|
|||||||
$(OBJS)\coredll_gdiobj.obj &
|
$(OBJS)\coredll_gdiobj.obj &
|
||||||
$(OBJS)\coredll_gdiplus.obj &
|
$(OBJS)\coredll_gdiplus.obj &
|
||||||
$(OBJS)\coredll_graphics.obj &
|
$(OBJS)\coredll_graphics.obj &
|
||||||
$(OBJS)\coredll_gsockmsw.obj &
|
|
||||||
$(OBJS)\coredll_icon.obj &
|
$(OBJS)\coredll_icon.obj &
|
||||||
$(OBJS)\coredll_imaglist.obj &
|
$(OBJS)\coredll_imaglist.obj &
|
||||||
$(OBJS)\coredll_minifram.obj &
|
$(OBJS)\coredll_minifram.obj &
|
||||||
@@ -1947,7 +1941,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = &
|
|||||||
$(OBJS)\corelib_gdiobj.obj &
|
$(OBJS)\corelib_gdiobj.obj &
|
||||||
$(OBJS)\corelib_gdiplus.obj &
|
$(OBJS)\corelib_gdiplus.obj &
|
||||||
$(OBJS)\corelib_graphics.obj &
|
$(OBJS)\corelib_graphics.obj &
|
||||||
$(OBJS)\corelib_gsockmsw.obj &
|
|
||||||
$(OBJS)\corelib_icon.obj &
|
$(OBJS)\corelib_icon.obj &
|
||||||
$(OBJS)\corelib_imaglist.obj &
|
$(OBJS)\corelib_imaglist.obj &
|
||||||
$(OBJS)\corelib_minifram.obj &
|
$(OBJS)\corelib_minifram.obj &
|
||||||
@@ -2178,7 +2171,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = &
|
|||||||
$(OBJS)\corelib_gdiobj.obj &
|
$(OBJS)\corelib_gdiobj.obj &
|
||||||
$(OBJS)\corelib_gdiplus.obj &
|
$(OBJS)\corelib_gdiplus.obj &
|
||||||
$(OBJS)\corelib_graphics.obj &
|
$(OBJS)\corelib_graphics.obj &
|
||||||
$(OBJS)\corelib_gsockmsw.obj &
|
|
||||||
$(OBJS)\corelib_icon.obj &
|
$(OBJS)\corelib_icon.obj &
|
||||||
$(OBJS)\corelib_imaglist.obj &
|
$(OBJS)\corelib_imaglist.obj &
|
||||||
$(OBJS)\corelib_minifram.obj &
|
$(OBJS)\corelib_minifram.obj &
|
||||||
@@ -3354,6 +3346,7 @@ MONODLL_OBJECTS = &
|
|||||||
$(OBJS)\monodll_socket.obj &
|
$(OBJS)\monodll_socket.obj &
|
||||||
$(OBJS)\monodll_url.obj &
|
$(OBJS)\monodll_url.obj &
|
||||||
$(OBJS)\monodll_gsocket.obj &
|
$(OBJS)\monodll_gsocket.obj &
|
||||||
|
$(OBJS)\monodll_gsockmsw.obj &
|
||||||
$(OBJS)\monodll_urlmsw.obj &
|
$(OBJS)\monodll_urlmsw.obj &
|
||||||
$(____MONOLIB_GUI_SRC_FILENAMES_OBJECTS) &
|
$(____MONOLIB_GUI_SRC_FILENAMES_OBJECTS) &
|
||||||
$(OBJS)\monodll_xml.obj &
|
$(OBJS)\monodll_xml.obj &
|
||||||
@@ -3490,6 +3483,7 @@ MONOLIB_OBJECTS = &
|
|||||||
$(OBJS)\monolib_socket.obj &
|
$(OBJS)\monolib_socket.obj &
|
||||||
$(OBJS)\monolib_url.obj &
|
$(OBJS)\monolib_url.obj &
|
||||||
$(OBJS)\monolib_gsocket.obj &
|
$(OBJS)\monolib_gsocket.obj &
|
||||||
|
$(OBJS)\monolib_gsockmsw.obj &
|
||||||
$(OBJS)\monolib_urlmsw.obj &
|
$(OBJS)\monolib_urlmsw.obj &
|
||||||
$(____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS) &
|
$(____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS) &
|
||||||
$(OBJS)\monolib_xml.obj &
|
$(OBJS)\monolib_xml.obj &
|
||||||
@@ -3753,6 +3747,7 @@ NETDLL_OBJECTS = &
|
|||||||
$(OBJS)\netdll_socket.obj &
|
$(OBJS)\netdll_socket.obj &
|
||||||
$(OBJS)\netdll_url.obj &
|
$(OBJS)\netdll_url.obj &
|
||||||
$(OBJS)\netdll_gsocket.obj &
|
$(OBJS)\netdll_gsocket.obj &
|
||||||
|
$(OBJS)\netdll_gsockmsw.obj &
|
||||||
$(OBJS)\netdll_urlmsw.obj
|
$(OBJS)\netdll_urlmsw.obj
|
||||||
NETLIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
|
NETLIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
|
||||||
$(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) &
|
$(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) &
|
||||||
@@ -3775,6 +3770,7 @@ NETLIB_OBJECTS = &
|
|||||||
$(OBJS)\netlib_socket.obj &
|
$(OBJS)\netlib_socket.obj &
|
||||||
$(OBJS)\netlib_url.obj &
|
$(OBJS)\netlib_url.obj &
|
||||||
$(OBJS)\netlib_gsocket.obj &
|
$(OBJS)\netlib_gsocket.obj &
|
||||||
|
$(OBJS)\netlib_gsockmsw.obj &
|
||||||
$(OBJS)\netlib_urlmsw.obj
|
$(OBJS)\netlib_urlmsw.obj
|
||||||
COREDLL_CXXFLAGS = -bd $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
|
COREDLL_CXXFLAGS = -bd $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
|
||||||
$(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) &
|
$(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) &
|
||||||
@@ -5877,6 +5873,9 @@ $(OBJS)\monodll_url.obj : .AUTODEPEND ..\..\src\common\url.cpp
|
|||||||
$(OBJS)\monodll_gsocket.obj : .AUTODEPEND ..\..\src\msw\gsocket.cpp
|
$(OBJS)\monodll_gsocket.obj : .AUTODEPEND ..\..\src\msw\gsocket.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
|
||||||
|
|
||||||
|
$(OBJS)\monodll_gsockmsw.obj : .AUTODEPEND ..\..\src\msw\gsockmsw.cpp
|
||||||
|
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
|
||||||
|
|
||||||
$(OBJS)\monodll_urlmsw.obj : .AUTODEPEND ..\..\src\msw\urlmsw.cpp
|
$(OBJS)\monodll_urlmsw.obj : .AUTODEPEND ..\..\src\msw\urlmsw.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
|
||||||
|
|
||||||
@@ -6468,11 +6467,6 @@ $(OBJS)\monodll_graphics.obj : .AUTODEPEND ..\..\src\msw\graphics.cpp
|
|||||||
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!ifeq USE_GUI 1
|
|
||||||
$(OBJS)\monodll_gsockmsw.obj : .AUTODEPEND ..\..\src\msw\gsockmsw.cpp
|
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
|
|
||||||
!endif
|
|
||||||
|
|
||||||
!ifeq USE_GUI 1
|
!ifeq USE_GUI 1
|
||||||
$(OBJS)\monodll_icon.obj : .AUTODEPEND ..\..\src\msw\icon.cpp
|
$(OBJS)\monodll_icon.obj : .AUTODEPEND ..\..\src\msw\icon.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
|
||||||
@@ -8079,6 +8073,9 @@ $(OBJS)\monolib_url.obj : .AUTODEPEND ..\..\src\common\url.cpp
|
|||||||
$(OBJS)\monolib_gsocket.obj : .AUTODEPEND ..\..\src\msw\gsocket.cpp
|
$(OBJS)\monolib_gsocket.obj : .AUTODEPEND ..\..\src\msw\gsocket.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
|
||||||
|
|
||||||
|
$(OBJS)\monolib_gsockmsw.obj : .AUTODEPEND ..\..\src\msw\gsockmsw.cpp
|
||||||
|
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
|
||||||
|
|
||||||
$(OBJS)\monolib_urlmsw.obj : .AUTODEPEND ..\..\src\msw\urlmsw.cpp
|
$(OBJS)\monolib_urlmsw.obj : .AUTODEPEND ..\..\src\msw\urlmsw.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
|
||||||
|
|
||||||
@@ -8670,11 +8667,6 @@ $(OBJS)\monolib_graphics.obj : .AUTODEPEND ..\..\src\msw\graphics.cpp
|
|||||||
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!ifeq USE_GUI 1
|
|
||||||
$(OBJS)\monolib_gsockmsw.obj : .AUTODEPEND ..\..\src\msw\gsockmsw.cpp
|
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
|
|
||||||
!endif
|
|
||||||
|
|
||||||
!ifeq USE_GUI 1
|
!ifeq USE_GUI 1
|
||||||
$(OBJS)\monolib_icon.obj : .AUTODEPEND ..\..\src\msw\icon.cpp
|
$(OBJS)\monolib_icon.obj : .AUTODEPEND ..\..\src\msw\icon.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
|
||||||
@@ -10590,6 +10582,9 @@ $(OBJS)\netdll_url.obj : .AUTODEPEND ..\..\src\common\url.cpp
|
|||||||
$(OBJS)\netdll_gsocket.obj : .AUTODEPEND ..\..\src\msw\gsocket.cpp
|
$(OBJS)\netdll_gsocket.obj : .AUTODEPEND ..\..\src\msw\gsocket.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(NETDLL_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(NETDLL_CXXFLAGS) $<
|
||||||
|
|
||||||
|
$(OBJS)\netdll_gsockmsw.obj : .AUTODEPEND ..\..\src\msw\gsockmsw.cpp
|
||||||
|
$(CXX) -bt=nt -zq -fo=$^@ $(NETDLL_CXXFLAGS) $<
|
||||||
|
|
||||||
$(OBJS)\netdll_urlmsw.obj : .AUTODEPEND ..\..\src\msw\urlmsw.cpp
|
$(OBJS)\netdll_urlmsw.obj : .AUTODEPEND ..\..\src\msw\urlmsw.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(NETDLL_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(NETDLL_CXXFLAGS) $<
|
||||||
|
|
||||||
@@ -10629,6 +10624,9 @@ $(OBJS)\netlib_url.obj : .AUTODEPEND ..\..\src\common\url.cpp
|
|||||||
$(OBJS)\netlib_gsocket.obj : .AUTODEPEND ..\..\src\msw\gsocket.cpp
|
$(OBJS)\netlib_gsocket.obj : .AUTODEPEND ..\..\src\msw\gsocket.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(NETLIB_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(NETLIB_CXXFLAGS) $<
|
||||||
|
|
||||||
|
$(OBJS)\netlib_gsockmsw.obj : .AUTODEPEND ..\..\src\msw\gsockmsw.cpp
|
||||||
|
$(CXX) -bt=nt -zq -fo=$^@ $(NETLIB_CXXFLAGS) $<
|
||||||
|
|
||||||
$(OBJS)\netlib_urlmsw.obj : .AUTODEPEND ..\..\src\msw\urlmsw.cpp
|
$(OBJS)\netlib_urlmsw.obj : .AUTODEPEND ..\..\src\msw\urlmsw.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(NETLIB_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(NETLIB_CXXFLAGS) $<
|
||||||
|
|
||||||
@@ -10926,11 +10924,6 @@ $(OBJS)\coredll_graphics.obj : .AUTODEPEND ..\..\src\msw\graphics.cpp
|
|||||||
$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!ifeq USE_GUI 1
|
|
||||||
$(OBJS)\coredll_gsockmsw.obj : .AUTODEPEND ..\..\src\msw\gsockmsw.cpp
|
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
|
|
||||||
!endif
|
|
||||||
|
|
||||||
!ifeq USE_GUI 1
|
!ifeq USE_GUI 1
|
||||||
$(OBJS)\coredll_icon.obj : .AUTODEPEND ..\..\src\msw\icon.cpp
|
$(OBJS)\coredll_icon.obj : .AUTODEPEND ..\..\src\msw\icon.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
|
||||||
@@ -12337,11 +12330,6 @@ $(OBJS)\corelib_graphics.obj : .AUTODEPEND ..\..\src\msw\graphics.cpp
|
|||||||
$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!ifeq USE_GUI 1
|
|
||||||
$(OBJS)\corelib_gsockmsw.obj : .AUTODEPEND ..\..\src\msw\gsockmsw.cpp
|
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
|
|
||||||
!endif
|
|
||||||
|
|
||||||
!ifeq USE_GUI 1
|
!ifeq USE_GUI 1
|
||||||
$(OBJS)\corelib_icon.obj : .AUTODEPEND ..\..\src\msw\icon.cpp
|
$(OBJS)\corelib_icon.obj : .AUTODEPEND ..\..\src\msw\icon.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
|
||||||
|
@@ -1435,10 +1435,6 @@ SOURCE=..\..\src\msw\graphics.cpp
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\..\src\msw\gsockmsw.cpp
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\src\msw\helpchm.cpp
|
SOURCE=..\..\src\msw\helpchm.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
@@ -298,6 +298,10 @@ SOURCE=..\..\src\msw\gsocket.cpp
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\src\msw\gsockmsw.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\..\src\msw\urlmsw.cpp
|
SOURCE=..\..\src\msw\urlmsw.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
12
configure.in
12
configure.in
@@ -7219,6 +7219,9 @@ if test "$wxUSE_GUI" = "yes"; then
|
|||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
SAMPLES_SUBDIRS="console"
|
SAMPLES_SUBDIRS="console"
|
||||||
|
if test "$wxUSE_SOCKETS" = "yes" ; then
|
||||||
|
SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS sockets"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@@ -7852,7 +7855,14 @@ for subdir in $SUBDIRS; do
|
|||||||
dnl don't take all samples/utils, just those which build with
|
dnl don't take all samples/utils, just those which build with
|
||||||
dnl wxBase
|
dnl wxBase
|
||||||
if test ${subdir} = "samples"; then
|
if test ${subdir} = "samples"; then
|
||||||
makefiles="samples/Makefile.in samples/console/Makefile.in"
|
dnl only take those samples which compile in the current
|
||||||
|
dnl configuration and which exist
|
||||||
|
makefiles="samples/Makefile.in $makefiles"
|
||||||
|
for sample in `echo $SAMPLES_SUBDIRS`; do
|
||||||
|
if test -d $srcdir/samples/$sample; then
|
||||||
|
makefiles="samples/$sample/Makefile.in $makefiles"
|
||||||
|
fi
|
||||||
|
done
|
||||||
elif test ${subdir} = "utils"; then
|
elif test ${subdir} = "utils"; then
|
||||||
makefiles=""
|
makefiles=""
|
||||||
for util in HelpGen tex2rtf ; do
|
for util in HelpGen tex2rtf ; do
|
||||||
|
@@ -165,7 +165,7 @@ Major new features in this release
|
|||||||
- wxWidgets may now use either wchar_t (UTF-16/32) or UTF-8 internally,
|
- wxWidgets may now use either wchar_t (UTF-16/32) or UTF-8 internally,
|
||||||
depending on what is optimal for the target platform.
|
depending on what is optimal for the target platform.
|
||||||
|
|
||||||
- Events loops and timers can now be used in wxBase, without GUI.
|
- Events loops, timers and sockets can now be used in wxBase, without GUI.
|
||||||
|
|
||||||
|
|
||||||
2.9.0
|
2.9.0
|
||||||
|
@@ -30,7 +30,7 @@ class WXDLLIMPEXP_FWD_BASE wxString;
|
|||||||
class WXDLLIMPEXP_FWD_BASE wxTimer;
|
class WXDLLIMPEXP_FWD_BASE wxTimer;
|
||||||
class WXDLLIMPEXP_FWD_BASE wxTimerImpl;
|
class WXDLLIMPEXP_FWD_BASE wxTimerImpl;
|
||||||
|
|
||||||
class GSocketGUIFunctionsTable;
|
class GSocketManager;
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -116,13 +116,9 @@ public:
|
|||||||
virtual void RemoveFromPendingDelete(wxObject *object) = 0;
|
virtual void RemoveFromPendingDelete(wxObject *object) = 0;
|
||||||
|
|
||||||
#if wxUSE_SOCKETS
|
#if wxUSE_SOCKETS
|
||||||
// return table of GUI callbacks for GSocket code or NULL in wxBase. This
|
// return socket manager: this is usually different for console and GUI
|
||||||
// is needed because networking classes are in their own library and so
|
// applications (although some ports use the same implementation for both)
|
||||||
// they can't directly call GUI functions (the same net library can be
|
virtual GSocketManager *GetSocketManager() = 0;
|
||||||
// used in both GUI and base apps). To complicate it further, GUI library
|
|
||||||
// ("wxCore") doesn't depend on networking library and so only a functions
|
|
||||||
// table can be passed around
|
|
||||||
virtual GSocketGUIFunctionsTable* GetSocketGUIFunctionsTable() = 0;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// create a new, port specific, instance of the event loop used by wxApp
|
// create a new, port specific, instance of the event loop used by wxApp
|
||||||
@@ -220,9 +216,6 @@ public:
|
|||||||
virtual wxFontMapper *CreateFontMapper();
|
virtual wxFontMapper *CreateFontMapper();
|
||||||
#endif // wxUSE_FONTMAP
|
#endif // wxUSE_FONTMAP
|
||||||
virtual wxRendererNative *CreateRenderer();
|
virtual wxRendererNative *CreateRenderer();
|
||||||
#if wxUSE_SOCKETS
|
|
||||||
virtual GSocketGUIFunctionsTable* GetSocketGUIFunctionsTable();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __WXDEBUG__
|
#ifdef __WXDEBUG__
|
||||||
virtual bool ShowAssertDialog(const wxString& msg);
|
virtual bool ShowAssertDialog(const wxString& msg);
|
||||||
@@ -264,9 +257,6 @@ public:
|
|||||||
virtual wxFontMapper *CreateFontMapper();
|
virtual wxFontMapper *CreateFontMapper();
|
||||||
#endif // wxUSE_FONTMAP
|
#endif // wxUSE_FONTMAP
|
||||||
virtual wxRendererNative *CreateRenderer();
|
virtual wxRendererNative *CreateRenderer();
|
||||||
#if wxUSE_SOCKETS
|
|
||||||
virtual GSocketGUIFunctionsTable* GetSocketGUIFunctionsTable();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __WXDEBUG__
|
#ifdef __WXDEBUG__
|
||||||
virtual bool ShowAssertDialog(const wxString& msg);
|
virtual bool ShowAssertDialog(const wxString& msg);
|
||||||
|
@@ -2,26 +2,24 @@
|
|||||||
* Project: GSocket (Generic Socket)
|
* Project: GSocket (Generic Socket)
|
||||||
* Name: gsocket.h
|
* Name: gsocket.h
|
||||||
* Author: Guilhem Lavaux
|
* Author: Guilhem Lavaux
|
||||||
* Guillermo Rodriguez Garcia <guille@iies.es> (maintainer)
|
* Guillermo Rodriguez Garcia <guille@iies.es>
|
||||||
* Copyright: (c) Guilhem Lavaux
|
* Copyright: (c) Guilhem Lavaux
|
||||||
|
* (c) 2007 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||||
* Licence: wxWindows Licence
|
* Licence: wxWindows Licence
|
||||||
* Purpose: GSocket include file (system independent)
|
* Purpose: GSocket include file (system independent)
|
||||||
* CVSID: $Id$
|
* CVSID: $Id$
|
||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __GSOCKET_H
|
#ifndef _WX_GSOCKET_H_
|
||||||
#define __GSOCKET_H
|
#define _WX_GSOCKET_H_
|
||||||
|
|
||||||
#ifndef __GSOCKET_STANDALONE__
|
|
||||||
#include "wx/defs.h"
|
#include "wx/defs.h"
|
||||||
|
|
||||||
|
#if wxUSE_SOCKETS
|
||||||
|
|
||||||
#include "wx/dlimpexp.h" /* for WXDLLIMPEXP_NET */
|
#include "wx/dlimpexp.h" /* for WXDLLIMPEXP_NET */
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__)
|
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -37,27 +35,24 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class GSocket;
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct _GAddress GAddress;
|
typedef struct _GAddress GAddress;
|
||||||
|
|
||||||
typedef enum {
|
enum GAddressType
|
||||||
|
{
|
||||||
GSOCK_NOFAMILY = 0,
|
GSOCK_NOFAMILY = 0,
|
||||||
GSOCK_INET,
|
GSOCK_INET,
|
||||||
GSOCK_INET6,
|
GSOCK_INET6,
|
||||||
GSOCK_UNIX
|
GSOCK_UNIX
|
||||||
} GAddressType;
|
};
|
||||||
|
|
||||||
typedef enum {
|
enum GSocketStream
|
||||||
|
{
|
||||||
GSOCK_STREAMED,
|
GSOCK_STREAMED,
|
||||||
GSOCK_UNSTREAMED
|
GSOCK_UNSTREAMED
|
||||||
} GSocketStream;
|
};
|
||||||
|
|
||||||
typedef enum {
|
enum GSocketError
|
||||||
|
{
|
||||||
GSOCK_NOERROR = 0,
|
GSOCK_NOERROR = 0,
|
||||||
GSOCK_INVOP,
|
GSOCK_INVOP,
|
||||||
GSOCK_IOERR,
|
GSOCK_IOERR,
|
||||||
@@ -69,19 +64,21 @@ typedef enum {
|
|||||||
GSOCK_TIMEDOUT,
|
GSOCK_TIMEDOUT,
|
||||||
GSOCK_MEMERR,
|
GSOCK_MEMERR,
|
||||||
GSOCK_OPTERR
|
GSOCK_OPTERR
|
||||||
} GSocketError;
|
};
|
||||||
|
|
||||||
/* See below for an explanation on how events work.
|
/* See below for an explanation on how events work.
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
enum GSocketEvent
|
||||||
|
{
|
||||||
GSOCK_INPUT = 0,
|
GSOCK_INPUT = 0,
|
||||||
GSOCK_OUTPUT = 1,
|
GSOCK_OUTPUT = 1,
|
||||||
GSOCK_CONNECTION = 2,
|
GSOCK_CONNECTION = 2,
|
||||||
GSOCK_LOST = 3,
|
GSOCK_LOST = 3,
|
||||||
GSOCK_MAX_EVENT = 4
|
GSOCK_MAX_EVENT = 4
|
||||||
} GSocketEvent;
|
};
|
||||||
|
|
||||||
enum {
|
enum
|
||||||
|
{
|
||||||
GSOCK_INPUT_FLAG = 1 << GSOCK_INPUT,
|
GSOCK_INPUT_FLAG = 1 << GSOCK_INPUT,
|
||||||
GSOCK_OUTPUT_FLAG = 1 << GSOCK_OUTPUT,
|
GSOCK_OUTPUT_FLAG = 1 << GSOCK_OUTPUT,
|
||||||
GSOCK_CONNECTION_FLAG = 1 << GSOCK_CONNECTION,
|
GSOCK_CONNECTION_FLAG = 1 << GSOCK_CONNECTION,
|
||||||
@@ -90,54 +87,99 @@ enum {
|
|||||||
|
|
||||||
typedef int GSocketEventFlags;
|
typedef int GSocketEventFlags;
|
||||||
|
|
||||||
|
class GSocket;
|
||||||
|
|
||||||
typedef void (*GSocketCallback)(GSocket *socket, GSocketEvent event,
|
typedef void (*GSocketCallback)(GSocket *socket, GSocketEvent event,
|
||||||
char *cdata);
|
char *cdata);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class providing hooks abstracting the differences between console and GUI
|
||||||
|
applications for socket code.
|
||||||
|
|
||||||
/* Functions tables for internal use by GSocket code: */
|
We also have different implementations of this class for different platforms
|
||||||
|
allowing us to keep more things in the common code but the main reason for
|
||||||
/* Actually this is a misnomer now, but reusing this name means I don't
|
its existence is that we want the same socket code work differently
|
||||||
have to ifdef app traits or common socket code */
|
depending on whether it's used from a console or a GUI program. This is
|
||||||
class GSocketGUIFunctionsTable
|
achieved by implementing the virtual methods of this class differently in
|
||||||
|
the objects returned by wxConsoleAppTraits::GetSocketFunctionsTable() and
|
||||||
|
the same method in wxGUIAppTraits.
|
||||||
|
*/
|
||||||
|
class GSocketManager
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// needed since this class declares virtual members
|
// set the manager to use, we don't take ownership of it
|
||||||
virtual ~GSocketGUIFunctionsTable() { }
|
//
|
||||||
|
// this should be called before GSocket_Init(), i.e. before the first
|
||||||
|
// wxSocket object is created, otherwise the manager returned by
|
||||||
|
// wxAppTraits::GetSocketManager() will be used
|
||||||
|
static void Set(GSocketManager *manager);
|
||||||
|
|
||||||
|
// return the manager to use
|
||||||
|
//
|
||||||
|
// this initializes the manager at first use
|
||||||
|
static GSocketManager *Get()
|
||||||
|
{
|
||||||
|
if ( !ms_manager )
|
||||||
|
Init();
|
||||||
|
|
||||||
|
return ms_manager;
|
||||||
|
}
|
||||||
|
|
||||||
|
// called before the first wxSocket is created and should do the
|
||||||
|
// initializations needed in order to use the network
|
||||||
|
//
|
||||||
|
// return true if initialized successfully
|
||||||
virtual bool OnInit() = 0;
|
virtual bool OnInit() = 0;
|
||||||
|
|
||||||
|
// undo the initializations of OnInit()
|
||||||
virtual void OnExit() = 0;
|
virtual void OnExit() = 0;
|
||||||
virtual bool CanUseEventLoop() = 0;
|
|
||||||
|
|
||||||
|
// do manager-specific socket initializations (and undo it): this is called
|
||||||
|
// in the beginning/end of the socket initialization/destruction
|
||||||
virtual bool Init_Socket(GSocket *socket) = 0;
|
virtual bool Init_Socket(GSocket *socket) = 0;
|
||||||
virtual void Destroy_Socket(GSocket *socket) = 0;
|
virtual void Destroy_Socket(GSocket *socket) = 0;
|
||||||
#ifndef __WINDOWS__
|
|
||||||
virtual void Install_Callback(GSocket *socket, GSocketEvent event) = 0;
|
virtual void Install_Callback(GSocket *socket, GSocketEvent event) = 0;
|
||||||
virtual void Uninstall_Callback(GSocket *socket, GSocketEvent event) = 0;
|
virtual void Uninstall_Callback(GSocket *socket, GSocketEvent event) = 0;
|
||||||
#endif
|
|
||||||
virtual void Enable_Events(GSocket *socket) = 0;
|
virtual void Enable_Events(GSocket *socket) = 0;
|
||||||
virtual void Disable_Events(GSocket *socket) = 0;
|
virtual void Disable_Events(GSocket *socket) = 0;
|
||||||
|
|
||||||
|
virtual ~GSocketManager() { }
|
||||||
|
|
||||||
|
private:
|
||||||
|
// get the manager to use if we don't have it yet
|
||||||
|
static void Init();
|
||||||
|
|
||||||
|
static GSocketManager *ms_manager;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined(__WINDOWS__)
|
||||||
|
#include "wx/msw/gsockmsw.h"
|
||||||
|
#else
|
||||||
|
#include "wx/unix/gsockunx.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Global initializers */
|
/* Global initializers */
|
||||||
|
|
||||||
/* Sets GUI functions callbacks. Must be called *before* GSocket_Init
|
/* GSocket_Init() must be called at the beginning (but after calling
|
||||||
if the app uses async sockets. */
|
* GSocketManager::Set() if a custom manager should be used) */
|
||||||
void GSocket_SetGUIFunctions(GSocketGUIFunctionsTable *guifunc);
|
bool GSocket_Init();
|
||||||
|
|
||||||
/* GSocket_Init() must be called at the beginning */
|
|
||||||
int GSocket_Init(void);
|
|
||||||
|
|
||||||
/* GSocket_Cleanup() must be called at the end */
|
/* GSocket_Cleanup() must be called at the end */
|
||||||
void GSocket_Cleanup(void);
|
void GSocket_Cleanup();
|
||||||
|
|
||||||
|
|
||||||
/* Constructors / Destructors */
|
/* Constructors / Destructors */
|
||||||
|
|
||||||
GSocket *GSocket_new(void);
|
GSocket *GSocket_new();
|
||||||
|
|
||||||
|
|
||||||
/* GAddress */
|
/* GAddress */
|
||||||
|
|
||||||
GAddress *GAddress_new(void);
|
GAddress *GAddress_new();
|
||||||
GAddress *GAddress_copy(GAddress *address);
|
GAddress *GAddress_copy(GAddress *address);
|
||||||
void GAddress_destroy(GAddress *address);
|
void GAddress_destroy(GAddress *address);
|
||||||
|
|
||||||
@@ -185,16 +227,6 @@ unsigned short GAddress_INET6_GetPort(GAddress *address);
|
|||||||
GSocketError GAddress_UNIX_SetPath(GAddress *address, const char *path);
|
GSocketError GAddress_UNIX_SetPath(GAddress *address, const char *path);
|
||||||
GSocketError GAddress_UNIX_GetPath(GAddress *address, char *path, size_t sbuf);
|
GSocketError GAddress_UNIX_GetPath(GAddress *address, char *path, size_t sbuf);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#endif /* wxUSE_SOCKETS */
|
||||||
}
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
# if defined(__WINDOWS__)
|
#endif /* _WX_GSOCKET_H_ */
|
||||||
# include "wx/msw/gsockmsw.h"
|
|
||||||
# else
|
|
||||||
# include "wx/unix/gsockunx.h"
|
|
||||||
# endif
|
|
||||||
|
|
||||||
#endif /* wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__) */
|
|
||||||
|
|
||||||
#endif /* __GSOCKET_H */
|
|
||||||
|
@@ -13,7 +13,8 @@
|
|||||||
#define _WX_PRIVATE_H_
|
#define _WX_PRIVATE_H_
|
||||||
|
|
||||||
#include "wx/defs.h"
|
#include "wx/defs.h"
|
||||||
#include "X11/Xlib.h"
|
#include <X11/Xlib.h>
|
||||||
|
#include <Xm/Xm.h>
|
||||||
#include "wx/evtloop.h"
|
#include "wx/evtloop.h"
|
||||||
|
|
||||||
class WXDLLIMPEXP_FWD_CORE wxFont;
|
class WXDLLIMPEXP_FWD_CORE wxFont;
|
||||||
|
@@ -45,10 +45,32 @@ public:
|
|||||||
// the GUI code, WAIT_OBJECT_0 + 1 if a Windows message arrived
|
// the GUI code, WAIT_OBJECT_0 + 1 if a Windows message arrived
|
||||||
virtual WXDWORD WaitForThread(WXHANDLE hThread) = 0;
|
virtual WXDWORD WaitForThread(WXHANDLE hThread) = 0;
|
||||||
|
|
||||||
|
|
||||||
|
// wxSocket support
|
||||||
|
// ----------------
|
||||||
|
|
||||||
|
#if wxUSE_SOCKETS
|
||||||
|
// this function is used by wxNet library to set the default socket manager
|
||||||
|
// to use: doing it like this allows us to keep all socket-related code in
|
||||||
|
// wxNet instead of having to pull it in wxBase itself as we'd have to do
|
||||||
|
// if we really implemented GSocketManager here
|
||||||
|
//
|
||||||
|
// we don't take ownership of this pointer, it should have a lifetime
|
||||||
|
// greater than that of any socket (e.g. be a pointer to a static object)
|
||||||
|
static void SetDefaultSocketManager(GSocketManager *manager)
|
||||||
|
{
|
||||||
|
ms_manager = manager;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual GSocketManager *GetSocketManager() { return ms_manager; }
|
||||||
|
#endif // wxUSE_SOCKETS
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// implementation of WaitForThread() for the console applications which is
|
// implementation of WaitForThread() for the console applications which is
|
||||||
// also used by the GUI code if it doesn't [yet|already} dispatch events
|
// also used by the GUI code if it doesn't [yet|already} dispatch events
|
||||||
WXDWORD DoSimpleWaitForThread(WXHANDLE hThread);
|
WXDWORD DoSimpleWaitForThread(WXHANDLE hThread);
|
||||||
|
|
||||||
|
static GSocketManager *ms_manager;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _WX_MSW_APPTBASE_H_
|
#endif // _WX_MSW_APPTBASE_H_
|
||||||
|
@@ -8,20 +8,8 @@
|
|||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __GSOCK_MSW_H
|
#ifndef _WX_MSW_GSOCKMSW_H_
|
||||||
#define __GSOCK_MSW_H
|
#define _WX_MSW_GSOCKMSW_H_
|
||||||
|
|
||||||
#ifndef __GSOCKET_STANDALONE__
|
|
||||||
#include "wx/setup.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__)
|
|
||||||
|
|
||||||
#ifndef __GSOCKET_STANDALONE__
|
|
||||||
#include "wx/gsocket.h"
|
|
||||||
#else
|
|
||||||
#include "gsocket.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "wx/msw/wrapwin.h"
|
#include "wx/msw/wrapwin.h"
|
||||||
|
|
||||||
@@ -35,18 +23,6 @@
|
|||||||
#include <winsock.h>
|
#include <winsock.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class GSocketGUIFunctionsTableConcrete: public GSocketGUIFunctionsTable
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual bool OnInit();
|
|
||||||
virtual void OnExit();
|
|
||||||
virtual bool CanUseEventLoop();
|
|
||||||
virtual bool Init_Socket(GSocket *socket);
|
|
||||||
virtual void Destroy_Socket(GSocket *socket);
|
|
||||||
virtual void Enable_Events(GSocket *socket);
|
|
||||||
virtual void Disable_Events(GSocket *socket);
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Definition of GSocket */
|
/* Definition of GSocket */
|
||||||
class GSocket
|
class GSocket
|
||||||
{
|
{
|
||||||
@@ -62,6 +38,8 @@ public:
|
|||||||
GAddress *GetPeer();
|
GAddress *GetPeer();
|
||||||
GSocketError SetServer();
|
GSocketError SetServer();
|
||||||
GSocket *WaitConnection();
|
GSocket *WaitConnection();
|
||||||
|
// not used under MSW
|
||||||
|
void Notify(bool) { }
|
||||||
bool SetReusable();
|
bool SetReusable();
|
||||||
bool SetBroadcast();
|
bool SetBroadcast();
|
||||||
bool DontDoBind();
|
bool DontDoBind();
|
||||||
@@ -123,10 +101,6 @@ public:
|
|||||||
int m_msgnumber;
|
int m_msgnumber;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Definition of GAddress */
|
/* Definition of GAddress */
|
||||||
struct _GAddress
|
struct _GAddress
|
||||||
{
|
{
|
||||||
@@ -149,10 +123,4 @@ GSocketError _GAddress_translate_to (GAddress *address,
|
|||||||
GSocketError _GAddress_Init_INET(GAddress *address);
|
GSocketError _GAddress_Init_INET(GAddress *address);
|
||||||
GSocketError _GAddress_Init_UNIX(GAddress *address);
|
GSocketError _GAddress_Init_UNIX(GAddress *address);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#endif /* _WX_MSW_GSOCKMSW_H_ */
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__) */
|
|
||||||
|
|
||||||
#endif /* __GSOCK_MSW_H */
|
|
||||||
|
@@ -2,7 +2,6 @@
|
|||||||
// Name: wx/private/gsocketiohandler.h
|
// Name: wx/private/gsocketiohandler.h
|
||||||
// Purpose: class for registering GSocket in wxSelectDispatcher
|
// Purpose: class for registering GSocket in wxSelectDispatcher
|
||||||
// Authors: Lukasz Michalski
|
// Authors: Lukasz Michalski
|
||||||
// Modified by:
|
|
||||||
// Created: December 2006
|
// Created: December 2006
|
||||||
// Copyright: (c) Lukasz Michalski
|
// Copyright: (c) Lukasz Michalski
|
||||||
// RCS-ID: $Id$
|
// RCS-ID: $Id$
|
||||||
@@ -13,30 +12,34 @@
|
|||||||
#define _WX_PRIVATE_GSOCKETIOHANDLER_H_
|
#define _WX_PRIVATE_GSOCKETIOHANDLER_H_
|
||||||
|
|
||||||
#include "wx/defs.h"
|
#include "wx/defs.h"
|
||||||
|
|
||||||
|
#if wxUSE_SOCKETS && wxUSE_SELECT_DISPATCHER
|
||||||
|
|
||||||
#include "wx/private/selectdispatcher.h"
|
#include "wx/private/selectdispatcher.h"
|
||||||
|
#include "wx/gsocket.h"
|
||||||
|
|
||||||
#if wxUSE_SOCKETS
|
class WXDLLIMPEXP_BASE wxGSocketIOHandler : public wxFDIOHandler
|
||||||
|
|
||||||
// forward declarations
|
|
||||||
class GSocket;
|
|
||||||
|
|
||||||
class WXDLLIMPEXP_CORE wxGSocketIOHandler : public wxFDIOHandler
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxGSocketIOHandler(GSocket* socket);
|
wxGSocketIOHandler(GSocket* socket)
|
||||||
int GetFlags() const;
|
{
|
||||||
void RemoveFlag(wxFDIODispatcherEntryFlags flag);
|
m_socket = socket;
|
||||||
void AddFlag(wxFDIODispatcherEntryFlags flag);
|
m_flags = 0;
|
||||||
|
}
|
||||||
|
|
||||||
virtual void OnReadWaiting();
|
int GetFlags() const { return m_flags; }
|
||||||
virtual void OnWriteWaiting();
|
void RemoveFlag(wxFDIODispatcherEntryFlags flag) { m_flags &= ~flag; }
|
||||||
virtual void OnExceptionWaiting();
|
void AddFlag(wxFDIODispatcherEntryFlags flag) { m_flags |= flag; }
|
||||||
|
|
||||||
|
virtual void OnReadWaiting() { m_socket->Detected_Read(); }
|
||||||
|
virtual void OnWriteWaiting() { m_socket->Detected_Write(); }
|
||||||
|
virtual void OnExceptionWaiting() { m_socket->Detected_Read(); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GSocket* m_socket;
|
GSocket* m_socket;
|
||||||
int m_flags;
|
int m_flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // wxUSE_SOCKETS
|
#endif // wxUSE_SOCKETS && wxUSE_SELECT_DISPATCHER
|
||||||
|
|
||||||
#endif // _WX_PRIVATE_SOCKETEVTDISPATCH_H_
|
#endif // _WX_PRIVATE_SOCKETEVTDISPATCH_H_
|
||||||
|
@@ -48,6 +48,13 @@ public:
|
|||||||
// ----------------
|
// ----------------
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
|
|
||||||
|
#if wxUSE_SOCKETS
|
||||||
|
// returns the select()-based socket manager for console applications which
|
||||||
|
// is also used by some ports (wxX11, wxDFB) in the GUI build (hence it is
|
||||||
|
// here and not in wxConsoleAppTraits)
|
||||||
|
virtual GSocketManager *GetSocketManager();
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _WX_UNIX_APPTBASE_H_
|
#endif // _WX_UNIX_APPTBASE_H_
|
||||||
|
@@ -67,6 +67,17 @@ public:
|
|||||||
#if defined(__WXDEBUG__) && defined(__WXGTK20__)
|
#if defined(__WXDEBUG__) && defined(__WXGTK20__)
|
||||||
virtual bool ShowAssertDialog(const wxString& msg);
|
virtual bool ShowAssertDialog(const wxString& msg);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// GTK+ and Motif integrate sockets directly in their main loop, the other
|
||||||
|
// Unix ports do it at wxEventLoop level
|
||||||
|
//
|
||||||
|
// TODO: Should we use XtAddInput() for wxX11 too? Or, vice versa, if there
|
||||||
|
// is no advantage in doing this compared to the generic way
|
||||||
|
// currently used by wxX11, should we continue to use GTK/Motif-
|
||||||
|
// specific stuff?
|
||||||
|
#if wxUSE_SOCKETS && (defined(__WXGTK__) || defined(__WXMOTIF__))
|
||||||
|
virtual GSocketManager *GetSocketManager();
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // wxUSE_GUI
|
#endif // wxUSE_GUI
|
||||||
|
@@ -8,37 +8,11 @@
|
|||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __GSOCK_UNX_H
|
#ifndef _WX_UNIX_GSOCKUNX_H_
|
||||||
#define __GSOCK_UNX_H
|
#define _WX_UNIX_GSOCKUNX_H_
|
||||||
|
|
||||||
#ifndef __GSOCKET_STANDALONE__
|
|
||||||
#include "wx/setup.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class wxGSocketIOHandler;
|
class wxGSocketIOHandler;
|
||||||
|
|
||||||
#if wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__)
|
|
||||||
|
|
||||||
#ifndef __GSOCKET_STANDALONE__
|
|
||||||
#include "wx/gsocket.h"
|
|
||||||
#else
|
|
||||||
#include "gsocket.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class GSocketGUIFunctionsTableConcrete : public GSocketGUIFunctionsTable
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual bool OnInit();
|
|
||||||
virtual void OnExit();
|
|
||||||
virtual bool CanUseEventLoop();
|
|
||||||
virtual bool Init_Socket(GSocket *socket);
|
|
||||||
virtual void Destroy_Socket(GSocket *socket);
|
|
||||||
virtual void Install_Callback(GSocket *socket, GSocketEvent event);
|
|
||||||
virtual void Uninstall_Callback(GSocket *socket, GSocketEvent event);
|
|
||||||
virtual void Enable_Events(GSocket *socket);
|
|
||||||
virtual void Disable_Events(GSocket *socket);
|
|
||||||
};
|
|
||||||
|
|
||||||
class GSocket
|
class GSocket
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -70,6 +44,8 @@ public:
|
|||||||
GSocketError GetSockOpt(int level, int optname, void *optval, int *optlen);
|
GSocketError GetSockOpt(int level, int optname, void *optval, int *optlen);
|
||||||
GSocketError SetSockOpt(int level, int optname,
|
GSocketError SetSockOpt(int level, int optname,
|
||||||
const void *optval, int optlen);
|
const void *optval, int optlen);
|
||||||
|
//attach or detach from main loop
|
||||||
|
void Notify(bool flag);
|
||||||
virtual void Detected_Read();
|
virtual void Detected_Read();
|
||||||
virtual void Detected_Write();
|
virtual void Detected_Write();
|
||||||
void SetInitialSocketBuffers(int recv, int send)
|
void SetInitialSocketBuffers(int recv, int send)
|
||||||
@@ -79,6 +55,9 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
//enable or disable event callback using gsocket gui callback table
|
||||||
|
void EnableEvents(bool flag = true);
|
||||||
|
void DisableEvents() { EnableEvents(false); }
|
||||||
void Enable(GSocketEvent event);
|
void Enable(GSocketEvent event);
|
||||||
void Disable(GSocketEvent event);
|
void Disable(GSocketEvent event);
|
||||||
GSocketError Input_Timeout();
|
GSocketError Input_Timeout();
|
||||||
@@ -108,18 +87,18 @@ public:
|
|||||||
bool m_dobind;
|
bool m_dobind;
|
||||||
unsigned long m_timeout;
|
unsigned long m_timeout;
|
||||||
|
|
||||||
|
// true if socket should fire events
|
||||||
|
bool m_use_events;
|
||||||
|
|
||||||
/* Callbacks */
|
/* Callbacks */
|
||||||
GSocketEventFlags m_detected;
|
GSocketEventFlags m_detected;
|
||||||
GSocketCallback m_cbacks[GSOCK_MAX_EVENT];
|
GSocketCallback m_cbacks[GSOCK_MAX_EVENT];
|
||||||
char *m_data[GSOCK_MAX_EVENT];
|
char *m_data[GSOCK_MAX_EVENT];
|
||||||
|
|
||||||
char *m_gui_dependent;
|
// pointer for storing extra (usually GUI-specific) data
|
||||||
|
void *m_gui_dependent;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
/* Definition of GAddress */
|
/* Definition of GAddress */
|
||||||
struct _GAddress
|
struct _GAddress
|
||||||
{
|
{
|
||||||
@@ -131,15 +110,6 @@ struct _GAddress
|
|||||||
|
|
||||||
GSocketError m_error;
|
GSocketError m_error;
|
||||||
};
|
};
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
/* GAddress */
|
/* GAddress */
|
||||||
|
|
||||||
@@ -150,11 +120,121 @@ GSocketError _GAddress_translate_to (GAddress *address,
|
|||||||
GSocketError _GAddress_Init_INET(GAddress *address);
|
GSocketError _GAddress_Init_INET(GAddress *address);
|
||||||
GSocketError _GAddress_Init_UNIX(GAddress *address);
|
GSocketError _GAddress_Init_UNIX(GAddress *address);
|
||||||
|
|
||||||
|
// A version of GSocketManager which uses FDs for socket IO
|
||||||
|
//
|
||||||
|
// This class uses GSocket::m_gui_dependent field to store the 2 (for input and
|
||||||
|
// output) FDs associated with the socket.
|
||||||
|
class GSocketFDBasedManager : public GSocketManager
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// no special initialization/cleanup needed when using FDs
|
||||||
|
virtual bool OnInit() { return true; }
|
||||||
|
virtual void OnExit() { }
|
||||||
|
|
||||||
#ifdef __cplusplus
|
// allocate/free the storage we need
|
||||||
}
|
virtual bool Init_Socket(GSocket *socket)
|
||||||
#endif /* __cplusplus */
|
{
|
||||||
|
socket->m_gui_dependent = malloc(sizeof(int)*2);
|
||||||
|
int * const fds = wx_static_cast(int *, socket->m_gui_dependent);
|
||||||
|
|
||||||
#endif /* wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__) */
|
fds[0] = -1;
|
||||||
|
fds[1] = -1;
|
||||||
|
|
||||||
#endif /* __GSOCK_UNX_H */
|
return true;
|
||||||
|
}
|
||||||
|
virtual void Destroy_Socket(GSocket *socket)
|
||||||
|
{
|
||||||
|
free(socket->m_gui_dependent);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void Enable_Events(GSocket *socket)
|
||||||
|
{
|
||||||
|
Install_Callback(socket, GSOCK_INPUT);
|
||||||
|
Install_Callback(socket, GSOCK_OUTPUT);
|
||||||
|
}
|
||||||
|
virtual void Disable_Events(GSocket *socket)
|
||||||
|
{
|
||||||
|
Uninstall_Callback(socket, GSOCK_INPUT);
|
||||||
|
Uninstall_Callback(socket, GSOCK_OUTPUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// identifies either input or output direction
|
||||||
|
//
|
||||||
|
// NB: the values of this enum shouldn't change
|
||||||
|
enum SocketDir
|
||||||
|
{
|
||||||
|
FD_INPUT,
|
||||||
|
FD_OUTPUT
|
||||||
|
};
|
||||||
|
|
||||||
|
// get the FD index corresponding to the given GSocketEvent
|
||||||
|
SocketDir GetDirForEvent(GSocket *socket, GSocketEvent event)
|
||||||
|
{
|
||||||
|
switch ( event )
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
wxFAIL_MSG( "unexpected socket event" );
|
||||||
|
// fall through
|
||||||
|
|
||||||
|
case GSOCK_LOST:
|
||||||
|
// fall through
|
||||||
|
|
||||||
|
case GSOCK_INPUT:
|
||||||
|
return FD_INPUT;
|
||||||
|
|
||||||
|
case GSOCK_OUTPUT:
|
||||||
|
return FD_OUTPUT;
|
||||||
|
|
||||||
|
case GSOCK_CONNECTION:
|
||||||
|
// FIXME: explain this?
|
||||||
|
return socket->m_server ? FD_INPUT : FD_OUTPUT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// access the FDs we store
|
||||||
|
int& FD(GSocket *socket, SocketDir d)
|
||||||
|
{
|
||||||
|
return wx_static_cast(int *, socket->m_gui_dependent)[d];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Common base class for all ports using X11-like (and hence implemented in
|
||||||
|
// X11, Motif and GTK) AddInput() and RemoveInput() functions
|
||||||
|
class GSocketInputBasedManager : public GSocketFDBasedManager
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual void Install_Callback(GSocket *socket, GSocketEvent event)
|
||||||
|
{
|
||||||
|
wxCHECK_RET( socket->m_fd != -1,
|
||||||
|
"shouldn't be called on invalid socket" );
|
||||||
|
|
||||||
|
const SocketDir d = GetDirForEvent(socket, event);
|
||||||
|
|
||||||
|
int& fd = FD(socket, d);
|
||||||
|
if ( fd != -1 )
|
||||||
|
RemoveInput(fd);
|
||||||
|
|
||||||
|
fd = AddInput(socket, d);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void Uninstall_Callback(GSocket *socket, GSocketEvent event)
|
||||||
|
{
|
||||||
|
const SocketDir d = GetDirForEvent(socket, event);
|
||||||
|
|
||||||
|
int& fd = FD(socket, d);
|
||||||
|
if ( fd != -1 )
|
||||||
|
{
|
||||||
|
RemoveInput(fd);
|
||||||
|
fd = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
// these functions map directly to XtAdd/RemoveInput() or
|
||||||
|
// gdk_input_add/remove()
|
||||||
|
virtual int AddInput(GSocket *socket, SocketDir d) = 0;
|
||||||
|
virtual void RemoveInput(int fd) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* _WX_UNIX_GSOCKUNX_H_ */
|
||||||
|
@@ -59,6 +59,18 @@ SERVER_OBJECTS = \
|
|||||||
$(os2_lib_res) \
|
$(os2_lib_res) \
|
||||||
server_server.o \
|
server_server.o \
|
||||||
$(__server___win32rc)
|
$(__server___win32rc)
|
||||||
|
BASECLIENT_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
|
||||||
|
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
|
||||||
|
-I$(srcdir) $(__DLLFLAG_p) -DwxUSE_GUI=0 $(CXXWARNINGS) $(CPPFLAGS) \
|
||||||
|
$(CXXFLAGS)
|
||||||
|
BASECLIENT_OBJECTS = \
|
||||||
|
baseclient_baseclient.o
|
||||||
|
BASESERVER_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
|
||||||
|
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
|
||||||
|
-I$(srcdir) $(__DLLFLAG_p) -DwxUSE_GUI=0 $(CXXWARNINGS) $(CPPFLAGS) \
|
||||||
|
$(CXXFLAGS)
|
||||||
|
BASESERVER_OBJECTS = \
|
||||||
|
baseserver_baseserver.o
|
||||||
|
|
||||||
### Conditionally set variables: ###
|
### Conditionally set variables: ###
|
||||||
|
|
||||||
@@ -75,6 +87,7 @@ SERVER_OBJECTS = \
|
|||||||
@COND_MONOLITHIC_1@EXTRALIBS_FOR_BASE = $(EXTRALIBS) $(EXTRALIBS_GUI)
|
@COND_MONOLITHIC_1@EXTRALIBS_FOR_BASE = $(EXTRALIBS) $(EXTRALIBS_GUI)
|
||||||
@COND_MONOLITHIC_0@EXTRALIBS_FOR_GUI = $(EXTRALIBS_GUI)
|
@COND_MONOLITHIC_0@EXTRALIBS_FOR_GUI = $(EXTRALIBS_GUI)
|
||||||
@COND_MONOLITHIC_1@EXTRALIBS_FOR_GUI =
|
@COND_MONOLITHIC_1@EXTRALIBS_FOR_GUI =
|
||||||
|
@COND_USE_GUI_1@__client___depname = client$(EXEEXT)
|
||||||
@COND_PLATFORM_MAC_1@__client___mac_setfilecmd = \
|
@COND_PLATFORM_MAC_1@__client___mac_setfilecmd = \
|
||||||
@COND_PLATFORM_MAC_1@ $(SETFILE) -a C client$(EXEEXT)
|
@COND_PLATFORM_MAC_1@ $(SETFILE) -a C client$(EXEEXT)
|
||||||
@COND_PLATFORM_MAC_1@__client___mac_rezcmd = $(__MACOSX_RESOURCES_p_2)
|
@COND_PLATFORM_MAC_1@__client___mac_rezcmd = $(__MACOSX_RESOURCES_p_2)
|
||||||
@@ -87,6 +100,7 @@ COND_PLATFORM_OS2_1___client___os2_emxbindcmd = $(NM) client$(EXEEXT) | if grep
|
|||||||
@COND_TOOLKIT_MAC@____client_BUNDLE_TGT_REF_DEP = \
|
@COND_TOOLKIT_MAC@____client_BUNDLE_TGT_REF_DEP = \
|
||||||
@COND_TOOLKIT_MAC@ client.app/Contents/PkgInfo
|
@COND_TOOLKIT_MAC@ client.app/Contents/PkgInfo
|
||||||
@COND_PLATFORM_WIN32_1@__client___win32rc = client_client_rc.o
|
@COND_PLATFORM_WIN32_1@__client___win32rc = client_client_rc.o
|
||||||
|
@COND_USE_GUI_1@__server___depname = server$(EXEEXT)
|
||||||
@COND_PLATFORM_MAC_1@__server___mac_setfilecmd = \
|
@COND_PLATFORM_MAC_1@__server___mac_setfilecmd = \
|
||||||
@COND_PLATFORM_MAC_1@ $(SETFILE) -a C server$(EXEEXT)
|
@COND_PLATFORM_MAC_1@ $(SETFILE) -a C server$(EXEEXT)
|
||||||
@COND_PLATFORM_MAC_1@__server___mac_rezcmd = $(__MACOSX_RESOURCES_p_3)
|
@COND_PLATFORM_MAC_1@__server___mac_rezcmd = $(__MACOSX_RESOURCES_p_3)
|
||||||
@@ -99,6 +113,10 @@ COND_PLATFORM_OS2_1___server___os2_emxbindcmd = $(NM) server$(EXEEXT) | if grep
|
|||||||
@COND_TOOLKIT_MAC@____server_BUNDLE_TGT_REF_DEP = \
|
@COND_TOOLKIT_MAC@____server_BUNDLE_TGT_REF_DEP = \
|
||||||
@COND_TOOLKIT_MAC@ server.app/Contents/PkgInfo
|
@COND_TOOLKIT_MAC@ server.app/Contents/PkgInfo
|
||||||
@COND_PLATFORM_WIN32_1@__server___win32rc = server_server_rc.o
|
@COND_PLATFORM_WIN32_1@__server___win32rc = server_server_rc.o
|
||||||
|
@COND_PLATFORM_MAC_1@__baseclient___mac_setfilecmd = \
|
||||||
|
@COND_PLATFORM_MAC_1@ $(SETFILE) -t APPL baseclient$(EXEEXT)
|
||||||
|
@COND_PLATFORM_MAC_1@__baseserver___mac_setfilecmd = \
|
||||||
|
@COND_PLATFORM_MAC_1@ $(SETFILE) -t APPL baseserver$(EXEEXT)
|
||||||
COND_TOOLKIT_MAC___MACOSX_RESOURCES_p_2 = $(REZ) -d __DARWIN__ -t APPL -d \
|
COND_TOOLKIT_MAC___MACOSX_RESOURCES_p_2 = $(REZ) -d __DARWIN__ -t APPL -d \
|
||||||
__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_0) $(__EXCEPTIONS_DEFINE_p_0) \
|
__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_0) $(__EXCEPTIONS_DEFINE_p_0) \
|
||||||
$(__RTTI_DEFINE_p_0) $(__THREAD_DEFINE_p_0) -i $(srcdir) $(__DLLFLAG_p_0) -i \
|
$(__RTTI_DEFINE_p_0) $(__THREAD_DEFINE_p_0) -i $(srcdir) $(__DLLFLAG_p_0) -i \
|
||||||
@@ -111,21 +129,16 @@ COND_TOOLKIT_MAC___MACOSX_RESOURCES_p_3 = $(REZ) -d __DARWIN__ -t APPL -d \
|
|||||||
$(srcdir)/../../samples $(__RCDEFDIR_p) -i $(top_srcdir)/include -o \
|
$(srcdir)/../../samples $(__RCDEFDIR_p) -i $(top_srcdir)/include -o \
|
||||||
server$(EXEEXT) Carbon.r sample.r
|
server$(EXEEXT) Carbon.r sample.r
|
||||||
@COND_TOOLKIT_MAC@__MACOSX_RESOURCES_p_3 = $(COND_TOOLKIT_MAC___MACOSX_RESOURCES_p_3)
|
@COND_TOOLKIT_MAC@__MACOSX_RESOURCES_p_3 = $(COND_TOOLKIT_MAC___MACOSX_RESOURCES_p_3)
|
||||||
@COND_WXUNIV_1@__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
|
|
||||||
@COND_WXUNIV_1@__WXUNIV_DEFINE_p_0 = -d __WXUNIVERSAL__
|
@COND_WXUNIV_1@__WXUNIV_DEFINE_p_0 = -d __WXUNIVERSAL__
|
||||||
@COND_WXUNIV_1@__WXUNIV_DEFINE_p_6 = --define __WXUNIVERSAL__
|
@COND_WXUNIV_1@__WXUNIV_DEFINE_p_7 = --define __WXUNIVERSAL__
|
||||||
@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
|
|
||||||
@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p_0 = -d wxNO_EXCEPTIONS
|
@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p_0 = -d wxNO_EXCEPTIONS
|
||||||
@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p_6 = --define wxNO_EXCEPTIONS
|
@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p_7 = --define wxNO_EXCEPTIONS
|
||||||
@COND_USE_RTTI_0@__RTTI_DEFINE_p = -DwxNO_RTTI
|
|
||||||
@COND_USE_RTTI_0@__RTTI_DEFINE_p_0 = -d wxNO_RTTI
|
@COND_USE_RTTI_0@__RTTI_DEFINE_p_0 = -d wxNO_RTTI
|
||||||
@COND_USE_RTTI_0@__RTTI_DEFINE_p_6 = --define wxNO_RTTI
|
@COND_USE_RTTI_0@__RTTI_DEFINE_p_7 = --define wxNO_RTTI
|
||||||
@COND_USE_THREADS_0@__THREAD_DEFINE_p = -DwxNO_THREADS
|
|
||||||
@COND_USE_THREADS_0@__THREAD_DEFINE_p_0 = -d wxNO_THREADS
|
@COND_USE_THREADS_0@__THREAD_DEFINE_p_0 = -d wxNO_THREADS
|
||||||
@COND_USE_THREADS_0@__THREAD_DEFINE_p_6 = --define wxNO_THREADS
|
@COND_USE_THREADS_0@__THREAD_DEFINE_p_7 = --define wxNO_THREADS
|
||||||
@COND_SHARED_1@__DLLFLAG_p = -DWXUSINGDLL
|
|
||||||
@COND_SHARED_1@__DLLFLAG_p_0 = -d WXUSINGDLL
|
@COND_SHARED_1@__DLLFLAG_p_0 = -d WXUSINGDLL
|
||||||
@COND_SHARED_1@__DLLFLAG_p_6 = --define WXUSINGDLL
|
@COND_SHARED_1@__DLLFLAG_p_7 = --define WXUSINGDLL
|
||||||
@COND_TOOLKIT_MSW@__RCDEFDIR_p = -i \
|
@COND_TOOLKIT_MSW@__RCDEFDIR_p = -i \
|
||||||
@COND_TOOLKIT_MSW@ $(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME)
|
@COND_TOOLKIT_MSW@ $(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME)
|
||||||
@COND_TOOLKIT_MSW@__RCDEFDIR_p_0 = --include-dir \
|
@COND_TOOLKIT_MSW@__RCDEFDIR_p_0 = --include-dir \
|
||||||
@@ -134,15 +147,6 @@ COND_TOOLKIT_MAC___MACOSX_RESOURCES_p_3 = $(REZ) -d __DARWIN__ -t APPL -d \
|
|||||||
COND_MONOLITHIC_0___WXLIB_CORE_p = \
|
COND_MONOLITHIC_0___WXLIB_CORE_p = \
|
||||||
-lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core-$(WX_RELEASE)$(HOST_SUFFIX)
|
-lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||||
@COND_MONOLITHIC_0@__WXLIB_CORE_p = $(COND_MONOLITHIC_0___WXLIB_CORE_p)
|
@COND_MONOLITHIC_0@__WXLIB_CORE_p = $(COND_MONOLITHIC_0___WXLIB_CORE_p)
|
||||||
COND_MONOLITHIC_0___WXLIB_NET_p = \
|
|
||||||
-lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net-$(WX_RELEASE)$(HOST_SUFFIX)
|
|
||||||
@COND_MONOLITHIC_0@__WXLIB_NET_p = $(COND_MONOLITHIC_0___WXLIB_NET_p)
|
|
||||||
COND_MONOLITHIC_0___WXLIB_BASE_p = \
|
|
||||||
-lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
|
||||||
@COND_MONOLITHIC_0@__WXLIB_BASE_p = $(COND_MONOLITHIC_0___WXLIB_BASE_p)
|
|
||||||
COND_MONOLITHIC_1___WXLIB_MONO_p = \
|
|
||||||
-lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
|
||||||
@COND_MONOLITHIC_1@__WXLIB_MONO_p = $(COND_MONOLITHIC_1___WXLIB_MONO_p)
|
|
||||||
@COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@__LIB_TIFF_p \
|
@COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@__LIB_TIFF_p \
|
||||||
@COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@ = \
|
@COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@ = \
|
||||||
@COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@ -lwxtiff$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
@COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@ -lwxtiff$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||||
@@ -152,6 +156,20 @@ COND_MONOLITHIC_1___WXLIB_MONO_p = \
|
|||||||
@COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN@__LIB_PNG_p \
|
@COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN@__LIB_PNG_p \
|
||||||
@COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN@ = \
|
@COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN@ = \
|
||||||
@COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN@ -lwxpng$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
@COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN@ -lwxpng$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||||
|
@COND_WXUNIV_1@__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
|
||||||
|
@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
|
||||||
|
@COND_USE_RTTI_0@__RTTI_DEFINE_p = -DwxNO_RTTI
|
||||||
|
@COND_USE_THREADS_0@__THREAD_DEFINE_p = -DwxNO_THREADS
|
||||||
|
@COND_SHARED_1@__DLLFLAG_p = -DWXUSINGDLL
|
||||||
|
COND_MONOLITHIC_0___WXLIB_NET_p = \
|
||||||
|
-lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||||
|
@COND_MONOLITHIC_0@__WXLIB_NET_p = $(COND_MONOLITHIC_0___WXLIB_NET_p)
|
||||||
|
COND_MONOLITHIC_0___WXLIB_BASE_p = \
|
||||||
|
-lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||||
|
@COND_MONOLITHIC_0@__WXLIB_BASE_p = $(COND_MONOLITHIC_0___WXLIB_BASE_p)
|
||||||
|
COND_MONOLITHIC_1___WXLIB_MONO_p = \
|
||||||
|
-lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||||
|
@COND_MONOLITHIC_1@__WXLIB_MONO_p = $(COND_MONOLITHIC_1___WXLIB_MONO_p)
|
||||||
@COND_WXUSE_ZLIB_BUILTIN@__LIB_ZLIB_p = \
|
@COND_WXUSE_ZLIB_BUILTIN@__LIB_ZLIB_p = \
|
||||||
@COND_WXUSE_ZLIB_BUILTIN@ -lwxzlib$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
@COND_WXUSE_ZLIB_BUILTIN@ -lwxzlib$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||||
COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p = \
|
COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p = \
|
||||||
@@ -162,7 +180,7 @@ COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p = \
|
|||||||
|
|
||||||
### Targets: ###
|
### Targets: ###
|
||||||
|
|
||||||
all: client$(EXEEXT) $(__client_bundle___depname) server$(EXEEXT) $(__server_bundle___depname)
|
all: $(__client___depname) $(__client_bundle___depname) $(__server___depname) $(__server_bundle___depname) baseclient$(EXEEXT) baseserver$(EXEEXT)
|
||||||
|
|
||||||
install: all
|
install: all
|
||||||
|
|
||||||
@@ -177,18 +195,20 @@ clean:
|
|||||||
rm -rf client.app
|
rm -rf client.app
|
||||||
rm -f server$(EXEEXT)
|
rm -f server$(EXEEXT)
|
||||||
rm -rf server.app
|
rm -rf server.app
|
||||||
|
rm -f baseclient$(EXEEXT)
|
||||||
|
rm -f baseserver$(EXEEXT)
|
||||||
|
|
||||||
distclean: clean
|
distclean: clean
|
||||||
rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
|
rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
|
||||||
|
|
||||||
client$(EXEEXT): $(CLIENT_OBJECTS) $(__client___win32rc)
|
@COND_USE_GUI_1@client$(EXEEXT): $(CLIENT_OBJECTS) $(__client___win32rc)
|
||||||
$(CXX) -o $@ $(CLIENT_OBJECTS) $(LDFLAGS) -L$(LIBDIRNAME) $(LDFLAGS_GUI) $(SAMPLES_RPATH_FLAG) $(LIBS) $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) $(EXTRALIBS_FOR_GUI) $(__LIB_ZLIB_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE)
|
@COND_USE_GUI_1@ $(CXX) -o $@ $(CLIENT_OBJECTS) $(LDFLAGS) -L$(LIBDIRNAME) $(LDFLAGS_GUI) $(SAMPLES_RPATH_FLAG) $(LIBS) $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) $(EXTRALIBS_FOR_GUI) $(__LIB_ZLIB_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE)
|
||||||
$(__client___mac_rezcmd)
|
@COND_USE_GUI_1@ $(__client___mac_rezcmd)
|
||||||
$(__client___mac_setfilecmd)
|
@COND_USE_GUI_1@ $(__client___mac_setfilecmd)
|
||||||
$(__client___os2_emxbindcmd)
|
@COND_USE_GUI_1@ $(__client___os2_emxbindcmd)
|
||||||
$(SAMPLES_RPATH_POSTLINK)
|
@COND_USE_GUI_1@ $(SAMPLES_RPATH_POSTLINK)
|
||||||
|
|
||||||
client.app/Contents/PkgInfo: client$(EXEEXT) $(top_srcdir)/src/mac/carbon/Info.plist.in $(top_srcdir)/src/mac/carbon/wxmac.icns
|
client.app/Contents/PkgInfo: $(__client___depname) $(top_srcdir)/src/mac/carbon/Info.plist.in $(top_srcdir)/src/mac/carbon/wxmac.icns
|
||||||
mkdir -p client.app/Contents
|
mkdir -p client.app/Contents
|
||||||
mkdir -p client.app/Contents/MacOS
|
mkdir -p client.app/Contents/MacOS
|
||||||
mkdir -p client.app/Contents/Resources
|
mkdir -p client.app/Contents/Resources
|
||||||
@@ -210,14 +230,14 @@ client.app/Contents/PkgInfo: client$(EXEEXT) $(top_srcdir)/src/mac/carbon/Info.p
|
|||||||
|
|
||||||
@COND_PLATFORM_MACOSX_1@client_bundle: $(____client_BUNDLE_TGT_REF_DEP)
|
@COND_PLATFORM_MACOSX_1@client_bundle: $(____client_BUNDLE_TGT_REF_DEP)
|
||||||
|
|
||||||
server$(EXEEXT): $(SERVER_OBJECTS) $(__server___win32rc)
|
@COND_USE_GUI_1@server$(EXEEXT): $(SERVER_OBJECTS) $(__server___win32rc)
|
||||||
$(CXX) -o $@ $(SERVER_OBJECTS) $(LDFLAGS) -L$(LIBDIRNAME) $(LDFLAGS_GUI) $(SAMPLES_RPATH_FLAG) $(LIBS) $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) $(EXTRALIBS_FOR_GUI) $(__LIB_ZLIB_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE)
|
@COND_USE_GUI_1@ $(CXX) -o $@ $(SERVER_OBJECTS) $(LDFLAGS) -L$(LIBDIRNAME) $(LDFLAGS_GUI) $(SAMPLES_RPATH_FLAG) $(LIBS) $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) $(EXTRALIBS_FOR_GUI) $(__LIB_ZLIB_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE)
|
||||||
$(__server___mac_rezcmd)
|
@COND_USE_GUI_1@ $(__server___mac_rezcmd)
|
||||||
$(__server___mac_setfilecmd)
|
@COND_USE_GUI_1@ $(__server___mac_setfilecmd)
|
||||||
$(__server___os2_emxbindcmd)
|
@COND_USE_GUI_1@ $(__server___os2_emxbindcmd)
|
||||||
$(SAMPLES_RPATH_POSTLINK)
|
@COND_USE_GUI_1@ $(SAMPLES_RPATH_POSTLINK)
|
||||||
|
|
||||||
server.app/Contents/PkgInfo: server$(EXEEXT) $(top_srcdir)/src/mac/carbon/Info.plist.in $(top_srcdir)/src/mac/carbon/wxmac.icns
|
server.app/Contents/PkgInfo: $(__server___depname) $(top_srcdir)/src/mac/carbon/Info.plist.in $(top_srcdir)/src/mac/carbon/wxmac.icns
|
||||||
mkdir -p server.app/Contents
|
mkdir -p server.app/Contents
|
||||||
mkdir -p server.app/Contents/MacOS
|
mkdir -p server.app/Contents/MacOS
|
||||||
mkdir -p server.app/Contents/Resources
|
mkdir -p server.app/Contents/Resources
|
||||||
@@ -239,17 +259,35 @@ server.app/Contents/PkgInfo: server$(EXEEXT) $(top_srcdir)/src/mac/carbon/Info.p
|
|||||||
|
|
||||||
@COND_PLATFORM_MACOSX_1@server_bundle: $(____server_BUNDLE_TGT_REF_DEP)
|
@COND_PLATFORM_MACOSX_1@server_bundle: $(____server_BUNDLE_TGT_REF_DEP)
|
||||||
|
|
||||||
|
baseclient$(EXEEXT): $(BASECLIENT_OBJECTS)
|
||||||
|
$(CXX) -o $@ $(BASECLIENT_OBJECTS) $(LDFLAGS) -L$(LIBDIRNAME) $(SAMPLES_RPATH_FLAG) $(LIBS) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_ZLIB_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE)
|
||||||
|
|
||||||
|
$(__baseclient___mac_setfilecmd)
|
||||||
|
$(SAMPLES_RPATH_POSTLINK)
|
||||||
|
|
||||||
|
baseserver$(EXEEXT): $(BASESERVER_OBJECTS)
|
||||||
|
$(CXX) -o $@ $(BASESERVER_OBJECTS) $(LDFLAGS) -L$(LIBDIRNAME) $(SAMPLES_RPATH_FLAG) $(LIBS) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_ZLIB_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE)
|
||||||
|
|
||||||
|
$(__baseserver___mac_setfilecmd)
|
||||||
|
$(SAMPLES_RPATH_POSTLINK)
|
||||||
|
|
||||||
client_client.o: $(srcdir)/client.cpp
|
client_client.o: $(srcdir)/client.cpp
|
||||||
$(CXXC) -c -o $@ $(CLIENT_CXXFLAGS) $(srcdir)/client.cpp
|
$(CXXC) -c -o $@ $(CLIENT_CXXFLAGS) $(srcdir)/client.cpp
|
||||||
|
|
||||||
client_client_rc.o: $(srcdir)/client.rc
|
client_client_rc.o: $(srcdir)/client.rc
|
||||||
$(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_6) $(__EXCEPTIONS_DEFINE_p_6) $(__RTTI_DEFINE_p_6) $(__THREAD_DEFINE_p_6) --include-dir $(srcdir) $(__DLLFLAG_p_6) --include-dir $(srcdir)/../../samples $(__RCDEFDIR_p_0) --include-dir $(top_srcdir)/include
|
$(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_7) $(__EXCEPTIONS_DEFINE_p_7) $(__RTTI_DEFINE_p_7) $(__THREAD_DEFINE_p_7) --include-dir $(srcdir) $(__DLLFLAG_p_7) --include-dir $(srcdir)/../../samples $(__RCDEFDIR_p_0) --include-dir $(top_srcdir)/include
|
||||||
|
|
||||||
server_server.o: $(srcdir)/server.cpp
|
server_server.o: $(srcdir)/server.cpp
|
||||||
$(CXXC) -c -o $@ $(SERVER_CXXFLAGS) $(srcdir)/server.cpp
|
$(CXXC) -c -o $@ $(SERVER_CXXFLAGS) $(srcdir)/server.cpp
|
||||||
|
|
||||||
server_server_rc.o: $(srcdir)/server.rc
|
server_server_rc.o: $(srcdir)/server.rc
|
||||||
$(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_6) $(__EXCEPTIONS_DEFINE_p_6) $(__RTTI_DEFINE_p_6) $(__THREAD_DEFINE_p_6) --include-dir $(srcdir) $(__DLLFLAG_p_6) --include-dir $(srcdir)/../../samples $(__RCDEFDIR_p_0) --include-dir $(top_srcdir)/include
|
$(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_7) $(__EXCEPTIONS_DEFINE_p_7) $(__RTTI_DEFINE_p_7) $(__THREAD_DEFINE_p_7) --include-dir $(srcdir) $(__DLLFLAG_p_7) --include-dir $(srcdir)/../../samples $(__RCDEFDIR_p_0) --include-dir $(top_srcdir)/include
|
||||||
|
|
||||||
|
baseclient_baseclient.o: $(srcdir)/baseclient.cpp
|
||||||
|
$(CXXC) -c -o $@ $(BASECLIENT_CXXFLAGS) $(srcdir)/baseclient.cpp
|
||||||
|
|
||||||
|
baseserver_baseserver.o: $(srcdir)/baseserver.cpp
|
||||||
|
$(CXXC) -c -o $@ $(BASESERVER_CXXFLAGS) $(srcdir)/baseserver.cpp
|
||||||
|
|
||||||
|
|
||||||
# Include dependency info, if present:
|
# Include dependency info, if present:
|
||||||
|
733
samples/sockets/baseclient.cpp
Normal file
733
samples/sockets/baseclient.cpp
Normal file
@@ -0,0 +1,733 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: samples/sockbase/client.cpp
|
||||||
|
// Purpose: Sockets sample for wxBase
|
||||||
|
// Author: Lukasz Michalski
|
||||||
|
// Modified by:
|
||||||
|
// Created: 27.06.2005
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) 2005 Lukasz Michalski <lmichalski@sf.net>
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// declarations
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// headers
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#include "wx/wx.h"
|
||||||
|
#include "wx/socket.h"
|
||||||
|
#include "wx/event.h"
|
||||||
|
#include "wx/list.h"
|
||||||
|
#include "wx/cmdline.h"
|
||||||
|
#include "wx/ffile.h"
|
||||||
|
#include "wx/datetime.h"
|
||||||
|
#include "wx/timer.h"
|
||||||
|
#include "wx/thread.h"
|
||||||
|
|
||||||
|
const wxEventType wxEVT_WORKER = wxNewEventType();
|
||||||
|
#define EVT_WORKER(func) DECLARE_EVENT_TABLE_ENTRY( wxEVT_WORKER, -1, -1, (wxObjectEventFunction) (wxEventFunction) (WorkerEventFunction) & func, (wxObject *) NULL ),
|
||||||
|
|
||||||
|
const int timeout_val = 1000;
|
||||||
|
|
||||||
|
class WorkerEvent : public wxEvent {
|
||||||
|
public:
|
||||||
|
typedef enum {
|
||||||
|
CONNECTING,
|
||||||
|
SENDING,
|
||||||
|
RECEIVING,
|
||||||
|
DISCONNECTING,
|
||||||
|
DONE
|
||||||
|
} evt_type;
|
||||||
|
WorkerEvent(void* pSender, evt_type type)
|
||||||
|
{
|
||||||
|
SetId(-1);
|
||||||
|
SetEventType(wxEVT_WORKER);
|
||||||
|
m_sender = pSender;
|
||||||
|
m_eventType = type;
|
||||||
|
m_isFailed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setFailed() { m_isFailed = true; }
|
||||||
|
bool isFailed() const { return m_isFailed; }
|
||||||
|
|
||||||
|
virtual wxEvent* Clone() const
|
||||||
|
{
|
||||||
|
return new WorkerEvent(*this);
|
||||||
|
}
|
||||||
|
void* m_sender;
|
||||||
|
bool m_isFailed;
|
||||||
|
wxString m_workerIdent;
|
||||||
|
evt_type m_eventType;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef void (wxEvtHandler::*WorkerEventFunction)(WorkerEvent&);
|
||||||
|
|
||||||
|
class ThreadWorker;
|
||||||
|
class EventWorker;
|
||||||
|
|
||||||
|
WX_DECLARE_LIST(ThreadWorker, TList);
|
||||||
|
WX_DECLARE_LIST(EventWorker, EList);
|
||||||
|
|
||||||
|
class Client : public wxApp {
|
||||||
|
DECLARE_EVENT_TABLE();
|
||||||
|
public:
|
||||||
|
void RemoveEventWorker(EventWorker* p_worker);
|
||||||
|
private:
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
THREADS,
|
||||||
|
EVENTS
|
||||||
|
} workMode;
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
SEND_RANDOM,
|
||||||
|
SEND_MESSAGE,
|
||||||
|
STRESS_TEST
|
||||||
|
} sendType;
|
||||||
|
|
||||||
|
workMode m_workMode;
|
||||||
|
sendType m_sendType;
|
||||||
|
wxString m_message;
|
||||||
|
wxString m_host;
|
||||||
|
long m_stressWorkers;
|
||||||
|
|
||||||
|
virtual bool OnInit();
|
||||||
|
virtual int OnRun();
|
||||||
|
virtual int OnExit();
|
||||||
|
void OnInitCmdLine(wxCmdLineParser& pParser);
|
||||||
|
bool OnCmdLineParsed(wxCmdLineParser& pParser);
|
||||||
|
void OnWorkerEvent(WorkerEvent& pEvent);
|
||||||
|
void OnTimerEvent(wxTimerEvent& pEvent);
|
||||||
|
|
||||||
|
void StartWorker(workMode pMode, const wxString& pMessage);
|
||||||
|
void StartWorker(workMode pMode);
|
||||||
|
char* CreateBuffer(int *msgsize);
|
||||||
|
|
||||||
|
void dumpStatistics();
|
||||||
|
|
||||||
|
TList m_threadWorkers;
|
||||||
|
EList m_eventWorkers;
|
||||||
|
|
||||||
|
unsigned m_statConnecting;
|
||||||
|
unsigned m_statSending;
|
||||||
|
unsigned m_statReceiving;
|
||||||
|
unsigned m_statDisconnecting;
|
||||||
|
unsigned m_statDone;
|
||||||
|
unsigned m_statFailed;
|
||||||
|
|
||||||
|
wxTimer mTimer;
|
||||||
|
};
|
||||||
|
|
||||||
|
DECLARE_APP(Client);
|
||||||
|
|
||||||
|
class ThreadWorker : public wxThread
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ThreadWorker(const wxString& p_host, char* p_buf, int p_size);
|
||||||
|
virtual ExitCode Entry();
|
||||||
|
private:
|
||||||
|
wxString m_host;
|
||||||
|
wxSocketClient* m_clientSocket;
|
||||||
|
char* m_inbuf;
|
||||||
|
char* m_outbuf;
|
||||||
|
int m_outsize;
|
||||||
|
int m_insize;
|
||||||
|
wxString m_workerIdent;
|
||||||
|
};
|
||||||
|
|
||||||
|
class EventWorker : public wxEvtHandler
|
||||||
|
{
|
||||||
|
DECLARE_EVENT_TABLE();
|
||||||
|
public:
|
||||||
|
EventWorker(const wxString& p_host, char* p_buf, int p_size);
|
||||||
|
void Run();
|
||||||
|
virtual ~EventWorker();
|
||||||
|
private:
|
||||||
|
wxString m_host;
|
||||||
|
wxSocketClient* m_clientSocket;
|
||||||
|
char* m_inbuf;
|
||||||
|
char* m_outbuf;
|
||||||
|
int m_outsize;
|
||||||
|
int m_written;
|
||||||
|
int m_insize;
|
||||||
|
int m_readed;
|
||||||
|
|
||||||
|
WorkerEvent::evt_type m_currentType;
|
||||||
|
bool m_doneSent;
|
||||||
|
wxIPV4address m_localaddr;
|
||||||
|
|
||||||
|
void OnSocketEvent(wxSocketEvent& pEvent);
|
||||||
|
void SendEvent(bool failed);
|
||||||
|
};
|
||||||
|
|
||||||
|
/******************* Implementation ******************/
|
||||||
|
IMPLEMENT_APP_CONSOLE(Client);
|
||||||
|
|
||||||
|
#include <wx/listimpl.cpp>
|
||||||
|
WX_DEFINE_LIST(TList);
|
||||||
|
WX_DEFINE_LIST(EList);
|
||||||
|
|
||||||
|
wxString
|
||||||
|
CreateIdent(const wxIPV4address& addr)
|
||||||
|
{
|
||||||
|
return wxString::Format(wxT("%s:%d"),addr.IPAddress().c_str(),addr.Service());
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Client::OnInitCmdLine(wxCmdLineParser& pParser)
|
||||||
|
{
|
||||||
|
wxApp::OnInitCmdLine(pParser);
|
||||||
|
pParser.AddSwitch(wxT("e"),wxT("event"),_("Use event based worker (default)"),wxCMD_LINE_PARAM_OPTIONAL);
|
||||||
|
pParser.AddSwitch(wxT("t"),wxT("thread"),_("Use thread based worker"),wxCMD_LINE_PARAM_OPTIONAL);
|
||||||
|
pParser.AddSwitch(wxT("r"),wxT("random"),_("Send radnom data (default)"),wxCMD_LINE_PARAM_OPTIONAL);
|
||||||
|
pParser.AddOption(wxT("m"),wxT("message"),_("Send message from <str>"),wxCMD_LINE_VAL_STRING,wxCMD_LINE_PARAM_OPTIONAL);
|
||||||
|
pParser.AddOption(wxT("f"),wxT("file"),_("Send contents of <file>"),wxCMD_LINE_VAL_STRING,wxCMD_LINE_PARAM_OPTIONAL);
|
||||||
|
pParser.AddOption(wxT("H"),wxT("hostname"),_("IP or name of host to connect to"),wxCMD_LINE_VAL_STRING,wxCMD_LINE_PARAM_OPTIONAL);
|
||||||
|
pParser.AddOption(wxT("s"),wxT("stress"),_("stress test with <num> concurrent connections"),wxCMD_LINE_VAL_NUMBER,wxCMD_LINE_PARAM_OPTIONAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
Client::OnCmdLineParsed(wxCmdLineParser& pParser)
|
||||||
|
{
|
||||||
|
wxString fname;
|
||||||
|
m_workMode = EVENTS;
|
||||||
|
m_stressWorkers = 50;
|
||||||
|
|
||||||
|
if (pParser.Found(_("verbose")))
|
||||||
|
{
|
||||||
|
wxLog::AddTraceMask(wxT("wxSocket"));
|
||||||
|
wxLog::AddTraceMask(wxT("epolldispatcher"));
|
||||||
|
wxLog::AddTraceMask(wxT("selectdispatcher"));
|
||||||
|
wxLog::AddTraceMask(wxT("thread"));
|
||||||
|
wxLog::AddTraceMask(wxT("events"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pParser.Found(wxT("t")))
|
||||||
|
m_workMode = THREADS;
|
||||||
|
m_sendType = SEND_RANDOM;
|
||||||
|
|
||||||
|
if (pParser.Found(wxT("m"),&m_message))
|
||||||
|
m_sendType = SEND_MESSAGE;
|
||||||
|
else if (pParser.Found(wxT("f"),&fname))
|
||||||
|
{
|
||||||
|
wxFFile file(fname);
|
||||||
|
if (!file.IsOpened()) {
|
||||||
|
wxLogError(wxT("Cannot open file %s"),fname.c_str());
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
if (!file.ReadAll(&m_message)) {
|
||||||
|
wxLogError(wxT("Cannot read conten of file %s"),fname.c_str());
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
m_sendType = SEND_MESSAGE;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (pParser.Found(wxT("s"),&m_stressWorkers))
|
||||||
|
m_sendType = STRESS_TEST;
|
||||||
|
|
||||||
|
m_host = wxT("127.0.0.1");
|
||||||
|
pParser.Found(wxT("H"),&m_host);
|
||||||
|
return wxApp::OnCmdLineParsed(pParser);
|
||||||
|
};
|
||||||
|
|
||||||
|
bool
|
||||||
|
Client::OnInit()
|
||||||
|
{
|
||||||
|
if (!wxApp::OnInit())
|
||||||
|
return false;
|
||||||
|
srand(wxDateTime::Now().GetTicks());
|
||||||
|
mTimer.SetOwner(this);
|
||||||
|
m_statConnecting = 0;
|
||||||
|
m_statSending = 0;
|
||||||
|
m_statReceiving = 0;
|
||||||
|
m_statDisconnecting = 0;
|
||||||
|
m_statDone = 0;
|
||||||
|
m_statFailed = 0;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
Client::OnRun()
|
||||||
|
{
|
||||||
|
switch(m_sendType)
|
||||||
|
{
|
||||||
|
case STRESS_TEST:
|
||||||
|
switch(m_workMode)
|
||||||
|
{
|
||||||
|
case THREADS:
|
||||||
|
for (int i = 0; i < m_stressWorkers; i++) {
|
||||||
|
if (m_message.empty())
|
||||||
|
StartWorker(THREADS);
|
||||||
|
else
|
||||||
|
StartWorker(THREADS, m_message);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EVENTS:
|
||||||
|
for (int i = 0; i < m_stressWorkers; i++) {
|
||||||
|
if (m_message.empty())
|
||||||
|
StartWorker(EVENTS);
|
||||||
|
else
|
||||||
|
StartWorker(EVENTS, m_message);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
for (int i = 0; i < m_stressWorkers; i++) {
|
||||||
|
if (m_message.empty())
|
||||||
|
StartWorker(i % 5 == 0 ? THREADS : EVENTS);
|
||||||
|
else
|
||||||
|
StartWorker(i % 5 == 0 ? THREADS : EVENTS, m_message);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SEND_MESSAGE:
|
||||||
|
StartWorker(m_workMode,m_message);
|
||||||
|
break;
|
||||||
|
case SEND_RANDOM:
|
||||||
|
StartWorker(m_workMode);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
mTimer.Start(timeout_val,true);
|
||||||
|
return wxApp::OnRun();
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
Client::OnExit()
|
||||||
|
{
|
||||||
|
for(EList::compatibility_iterator it = m_eventWorkers.GetFirst(); it ; it->GetNext()) {
|
||||||
|
delete it->GetData();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create buffer to be sent by client. Buffer contains test indicator
|
||||||
|
// message size and place for data
|
||||||
|
// msgsize parameter contains size of data in bytes and
|
||||||
|
// if input value does not fit into 250 bytes then
|
||||||
|
// on exit is updated to new value that is multiply of 1024 bytes
|
||||||
|
char*
|
||||||
|
Client::CreateBuffer(int* msgsize)
|
||||||
|
{
|
||||||
|
int bufsize = 0;
|
||||||
|
char* buf;
|
||||||
|
//if message should have more than 256 bytes then set it as
|
||||||
|
//test3 for compatibility with GUI server sample
|
||||||
|
if ((*msgsize) > 250)
|
||||||
|
{
|
||||||
|
//send at least one kb of data
|
||||||
|
int size = (*msgsize)/1024 + 1;
|
||||||
|
//returned buffer will contain test indicator, message size in kb and data
|
||||||
|
bufsize = size*1024+2;
|
||||||
|
buf = new char[bufsize];
|
||||||
|
buf[0] = 0xDE; //second byte contains size in kilobytes
|
||||||
|
buf[1] = (char)(size);
|
||||||
|
*msgsize = size*1024;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//returned buffer will contain test indicator, message size in kb and data
|
||||||
|
bufsize = (*msgsize)+2;
|
||||||
|
buf = new char[bufsize];
|
||||||
|
buf[0] = 0xBE; //second byte contains size in bytes
|
||||||
|
buf[1] = (char)(*msgsize);
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Client::StartWorker(workMode pMode) {
|
||||||
|
int msgsize = 1 + (int) (250000.0 * (rand() / (RAND_MAX + 1.0)));
|
||||||
|
char* buf = CreateBuffer(&msgsize);
|
||||||
|
|
||||||
|
//fill data part of buffer with random bytes
|
||||||
|
for (int i = 2; i < (msgsize); i++) {
|
||||||
|
buf[i] = i % 256;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pMode == THREADS) {
|
||||||
|
ThreadWorker* c = new ThreadWorker(m_host,buf,msgsize+2);
|
||||||
|
if (c->Create() != wxTHREAD_NO_ERROR) {
|
||||||
|
wxLogError(wxT("Cannot create more threads"));
|
||||||
|
} else {
|
||||||
|
c->Run();
|
||||||
|
m_threadWorkers.Append(c);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
EventWorker* e = new EventWorker(m_host,buf,msgsize+2);
|
||||||
|
e->Run();
|
||||||
|
m_eventWorkers.Append(e);
|
||||||
|
}
|
||||||
|
m_statConnecting++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Client::StartWorker(workMode pMode, const wxString& pMessage) {
|
||||||
|
char* tmpbuf = strdup(pMessage.mb_str());
|
||||||
|
int msgsize = strlen(tmpbuf);
|
||||||
|
char* buf = CreateBuffer(&msgsize);
|
||||||
|
memset(buf+2,0x0,msgsize);
|
||||||
|
memcpy(buf+2,tmpbuf,msgsize);
|
||||||
|
free(tmpbuf);
|
||||||
|
|
||||||
|
if (pMode == THREADS) {
|
||||||
|
ThreadWorker* c = new ThreadWorker(m_host,buf,msgsize+2);
|
||||||
|
if (c->Create() != wxTHREAD_NO_ERROR) {
|
||||||
|
wxLogError(wxT("Cannot create more threads"));
|
||||||
|
} else {
|
||||||
|
c->Run();
|
||||||
|
m_threadWorkers.Append(c);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
EventWorker* e = new EventWorker(m_host,buf,msgsize+2);
|
||||||
|
e->Run();
|
||||||
|
m_eventWorkers.Append(e);
|
||||||
|
}
|
||||||
|
m_statConnecting++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Client::OnWorkerEvent(WorkerEvent& pEvent) {
|
||||||
|
switch (pEvent.m_eventType) {
|
||||||
|
case WorkerEvent::CONNECTING:
|
||||||
|
if (pEvent.isFailed())
|
||||||
|
{
|
||||||
|
m_statConnecting--;
|
||||||
|
m_statFailed++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WorkerEvent::SENDING:
|
||||||
|
if (pEvent.isFailed())
|
||||||
|
{
|
||||||
|
m_statFailed++;
|
||||||
|
m_statSending--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_statConnecting--;
|
||||||
|
m_statSending++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WorkerEvent::RECEIVING:
|
||||||
|
if (pEvent.isFailed())
|
||||||
|
{
|
||||||
|
m_statReceiving--;
|
||||||
|
m_statFailed++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_statSending--;
|
||||||
|
m_statReceiving++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WorkerEvent::DISCONNECTING:
|
||||||
|
if (pEvent.isFailed())
|
||||||
|
{
|
||||||
|
m_statDisconnecting--;
|
||||||
|
m_statFailed++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_statReceiving--;
|
||||||
|
m_statDisconnecting++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WorkerEvent::DONE:
|
||||||
|
m_statDone++;
|
||||||
|
m_statDisconnecting--;
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (pEvent.isFailed() || pEvent.m_eventType == WorkerEvent::DONE)
|
||||||
|
{
|
||||||
|
for(TList::compatibility_iterator it = m_threadWorkers.GetFirst(); it ; it = it->GetNext()) {
|
||||||
|
if (it->GetData() == pEvent.m_sender) {
|
||||||
|
m_threadWorkers.DeleteNode(it);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(EList::compatibility_iterator it = m_eventWorkers.GetFirst(); it ; it = it->GetNext())
|
||||||
|
{
|
||||||
|
if (it->GetData() == pEvent.m_sender) {
|
||||||
|
delete it->GetData();
|
||||||
|
m_eventWorkers.DeleteNode(it);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((m_threadWorkers.GetCount() == 0) && (m_eventWorkers.GetCount() == 0))
|
||||||
|
{
|
||||||
|
mTimer.Stop();
|
||||||
|
dumpStatistics();
|
||||||
|
wxSleep(2);
|
||||||
|
ExitMainLoop();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mTimer.Start(timeout_val,true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Client::RemoveEventWorker(EventWorker* p_worker) {
|
||||||
|
for(EList::compatibility_iterator it = m_eventWorkers.GetFirst(); it ; it = it->GetNext()) {
|
||||||
|
if (it->GetData() == p_worker) {
|
||||||
|
//wxLogDebug(wxT("Deleting event worker"));
|
||||||
|
delete it->GetData();
|
||||||
|
m_eventWorkers.DeleteNode(it);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Client::dumpStatistics() {
|
||||||
|
wxString msg(
|
||||||
|
wxString::Format(_("Connecting:\t%d\nSending\t\t%d\nReceiving\t%d\nDisconnecting:\t%d\nDone:\t\t%d\nFailed:\t\t%d\n"),
|
||||||
|
m_statConnecting,
|
||||||
|
m_statSending,
|
||||||
|
m_statReceiving,
|
||||||
|
m_statDisconnecting,
|
||||||
|
m_statDone,
|
||||||
|
m_statFailed
|
||||||
|
));
|
||||||
|
|
||||||
|
wxLogMessage(wxT("Current status:\n%s\n"),msg.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Client::OnTimerEvent(wxTimerEvent&) {
|
||||||
|
dumpStatistics();
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN_EVENT_TABLE(Client,wxEvtHandler)
|
||||||
|
EVT_WORKER(Client::OnWorkerEvent)
|
||||||
|
EVT_TIMER(wxID_ANY,Client::OnTimerEvent)
|
||||||
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
EventWorker::EventWorker(const wxString& p_host, char* p_buf, int p_size)
|
||||||
|
: m_host(p_host),
|
||||||
|
m_outbuf(p_buf),
|
||||||
|
m_outsize(p_size),
|
||||||
|
m_written(0),
|
||||||
|
m_readed(0)
|
||||||
|
{
|
||||||
|
m_clientSocket = new wxSocketClient(wxSOCKET_NOWAIT);
|
||||||
|
m_clientSocket->SetEventHandler(*this);
|
||||||
|
m_insize = m_outsize - 2;
|
||||||
|
m_inbuf = new char[m_insize];
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
EventWorker::Run() {
|
||||||
|
wxIPV4address ca;
|
||||||
|
ca.Hostname(m_host);
|
||||||
|
ca.Service(3000);
|
||||||
|
m_clientSocket->SetNotify(wxSOCKET_CONNECTION_FLAG|wxSOCKET_LOST_FLAG|wxSOCKET_OUTPUT_FLAG|wxSOCKET_INPUT_FLAG);
|
||||||
|
m_clientSocket->Notify(true);
|
||||||
|
m_currentType = WorkerEvent::CONNECTING;
|
||||||
|
m_doneSent = false;
|
||||||
|
//wxLogMessage(wxT("EventWorker: Connecting....."));
|
||||||
|
m_clientSocket->Connect(ca,false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
EventWorker::OnSocketEvent(wxSocketEvent& pEvent) {
|
||||||
|
switch(pEvent.GetSocketEvent()) {
|
||||||
|
case wxSOCKET_INPUT:
|
||||||
|
//wxLogDebug(wxT("EventWorker: INPUT"));
|
||||||
|
do {
|
||||||
|
if (m_readed == m_insize)
|
||||||
|
return; //event already posted
|
||||||
|
m_clientSocket->Read(m_inbuf + m_readed, m_insize - m_readed);
|
||||||
|
if (m_clientSocket->Error())
|
||||||
|
{
|
||||||
|
if (m_clientSocket->LastError() != wxSOCKET_WOULDBLOCK)
|
||||||
|
{
|
||||||
|
wxLogError(wxT("%s: read error"),CreateIdent(m_localaddr).c_str());
|
||||||
|
SendEvent(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_readed += m_clientSocket->LastCount();
|
||||||
|
//wxLogDebug(wxT("EventWorker: readed %d bytes, %d bytes to do"),m_clientSocket->LastCount(), m_insize - m_readed);
|
||||||
|
if (m_readed == m_insize)
|
||||||
|
{
|
||||||
|
if (!memcmp(m_inbuf,m_outbuf,m_insize)) {
|
||||||
|
wxLogError(wxT("%s: data mismatch"),CreateIdent(m_localaddr).c_str());
|
||||||
|
SendEvent(true);
|
||||||
|
}
|
||||||
|
m_currentType = WorkerEvent::DISCONNECTING;
|
||||||
|
wxLogDebug(wxT("%s: DISCONNECTING"),CreateIdent(m_localaddr).c_str());
|
||||||
|
SendEvent(false);
|
||||||
|
|
||||||
|
//wxLogDebug(wxT("EventWorker %p closing"),this);
|
||||||
|
m_clientSocket->Close();
|
||||||
|
|
||||||
|
m_currentType = WorkerEvent::DONE;
|
||||||
|
wxLogDebug(wxT("%s: DONE"),CreateIdent(m_localaddr).c_str());
|
||||||
|
SendEvent(false);
|
||||||
|
}
|
||||||
|
} while (!m_clientSocket->Error());
|
||||||
|
break;
|
||||||
|
case wxSOCKET_OUTPUT:
|
||||||
|
//wxLogDebug(wxT("EventWorker: OUTPUT"));
|
||||||
|
do {
|
||||||
|
if (m_written == m_outsize)
|
||||||
|
return;
|
||||||
|
if (m_written == 0)
|
||||||
|
{
|
||||||
|
m_currentType = WorkerEvent::SENDING;
|
||||||
|
wxLogDebug(wxT("%s: SENDING"),CreateIdent(m_localaddr).c_str());
|
||||||
|
}
|
||||||
|
m_clientSocket->Write(m_outbuf + m_written, m_outsize - m_written);
|
||||||
|
if (m_clientSocket->Error())
|
||||||
|
{
|
||||||
|
if (m_clientSocket->LastError() != wxSOCKET_WOULDBLOCK) {
|
||||||
|
wxLogError(wxT("%s: Write error"),CreateIdent(m_localaddr).c_str());
|
||||||
|
SendEvent(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m_written += m_clientSocket->LastCount();
|
||||||
|
if (m_written != m_outsize)
|
||||||
|
{
|
||||||
|
//wxLogDebug(wxT("EventWorker: written %d bytes, %d bytes to do"),m_clientSocket->LastCount(),m_outsize - m_written);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//wxLogDebug(wxT("EventWorker %p SENDING->RECEIVING"),this);
|
||||||
|
m_currentType = WorkerEvent::RECEIVING;
|
||||||
|
wxLogDebug(wxT("%s: RECEIVING"),CreateIdent(m_localaddr).c_str());
|
||||||
|
SendEvent(false);
|
||||||
|
}
|
||||||
|
} while(!m_clientSocket->Error());
|
||||||
|
break;
|
||||||
|
case wxSOCKET_CONNECTION:
|
||||||
|
{
|
||||||
|
//wxLogMessage(wxT("EventWorker: got connection"));
|
||||||
|
wxLogMessage(wxT("%s: starting writing message (2 bytes for signature and %d bytes of data to write)"),CreateIdent(m_localaddr).c_str(),m_outsize-2);
|
||||||
|
if (!m_clientSocket->GetLocal(m_localaddr))
|
||||||
|
wxLogError(_("Cannot get peer data for socket %p"),m_clientSocket);
|
||||||
|
m_currentType = WorkerEvent::SENDING;
|
||||||
|
wxLogDebug(wxT("%s: CONNECTING"),CreateIdent(m_localaddr).c_str());
|
||||||
|
SendEvent(false);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case wxSOCKET_LOST:
|
||||||
|
{
|
||||||
|
wxLogError(_("%s: connection lost"),CreateIdent(m_localaddr).c_str());
|
||||||
|
SendEvent(true);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
EventWorker::SendEvent(bool failed) {
|
||||||
|
if (m_doneSent)
|
||||||
|
return;
|
||||||
|
WorkerEvent e(this,m_currentType);
|
||||||
|
if (failed) e.setFailed();
|
||||||
|
wxGetApp().AddPendingEvent(e);
|
||||||
|
m_doneSent = failed || m_currentType == WorkerEvent::DONE;
|
||||||
|
};
|
||||||
|
|
||||||
|
EventWorker::~EventWorker() {
|
||||||
|
m_clientSocket->Destroy();
|
||||||
|
delete [] m_outbuf;
|
||||||
|
delete [] m_inbuf;
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN_EVENT_TABLE(EventWorker,wxEvtHandler)
|
||||||
|
EVT_SOCKET(wxID_ANY,EventWorker::OnSocketEvent)
|
||||||
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
|
|
||||||
|
ThreadWorker::ThreadWorker(const wxString& p_host, char* p_buf, int p_size)
|
||||||
|
: wxThread(wxTHREAD_DETACHED),
|
||||||
|
m_host(p_host),
|
||||||
|
m_outbuf(p_buf),
|
||||||
|
m_outsize(p_size)
|
||||||
|
{
|
||||||
|
m_clientSocket = new wxSocketClient(wxSOCKET_BLOCK|wxSOCKET_WAITALL);
|
||||||
|
m_insize = m_outsize - 2;
|
||||||
|
m_inbuf = new char[m_insize];
|
||||||
|
}
|
||||||
|
|
||||||
|
wxThread::ExitCode ThreadWorker::Entry()
|
||||||
|
{
|
||||||
|
wxIPV4address ca;
|
||||||
|
ca.Hostname(m_host);
|
||||||
|
ca.Service(5678);
|
||||||
|
//wxLogDebug(wxT("ThreadWorker: Connecting....."));
|
||||||
|
m_clientSocket->SetTimeout(60);
|
||||||
|
bool failed = false;
|
||||||
|
WorkerEvent::evt_type etype = WorkerEvent::CONNECTING;
|
||||||
|
if (!m_clientSocket->Connect(ca)) {
|
||||||
|
wxLogError(wxT("Cannot connect to %s:%d"),ca.IPAddress().c_str(), ca.Service());
|
||||||
|
failed = true;
|
||||||
|
} else {
|
||||||
|
//wxLogMessage(wxT("ThreadWorker: Connected. Sending %d bytes of data"),m_outsize);
|
||||||
|
etype = WorkerEvent::SENDING;
|
||||||
|
WorkerEvent e(this,etype);
|
||||||
|
wxGetApp().AddPendingEvent(e);
|
||||||
|
int to_process = m_outsize;
|
||||||
|
do {
|
||||||
|
m_clientSocket->Write(m_outbuf,m_outsize);
|
||||||
|
if (m_clientSocket->Error()) {
|
||||||
|
wxLogError(wxT("ThreadWorker: Write error"));
|
||||||
|
failed = true;
|
||||||
|
}
|
||||||
|
to_process -= m_clientSocket->LastCount();
|
||||||
|
//wxLogDebug(wxT("EventWorker: written %d bytes, %d bytes to do"),m_clientSocket->LastCount(),to_process);
|
||||||
|
} while(!m_clientSocket->Error() && to_process != 0);
|
||||||
|
|
||||||
|
if (!failed) {
|
||||||
|
etype = WorkerEvent::RECEIVING;
|
||||||
|
WorkerEvent e(this,etype);
|
||||||
|
wxGetApp().AddPendingEvent(e);
|
||||||
|
to_process = m_insize;
|
||||||
|
do {
|
||||||
|
m_clientSocket->Read(m_inbuf,m_insize);
|
||||||
|
if (m_clientSocket->Error()) {
|
||||||
|
wxLogError(wxT("ThreadWorker: Read error"));
|
||||||
|
failed = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
to_process -= m_clientSocket->LastCount();
|
||||||
|
//wxLogDebug(wxT("EventWorker: readed %d bytes, %d bytes to do"),m_clientSocket->LastCount(),to_process);
|
||||||
|
} while(!m_clientSocket->Error() && to_process != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
char* outdat = (char*)m_outbuf+2;
|
||||||
|
if (!failed && (memcmp(m_inbuf,outdat,m_insize) != 0))
|
||||||
|
{
|
||||||
|
wxLogError(wxT("Data mismatch"));
|
||||||
|
failed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//wxLogDebug(wxT("ThreadWorker: Finished"));
|
||||||
|
if (!failed) {
|
||||||
|
etype = WorkerEvent::DISCONNECTING;
|
||||||
|
WorkerEvent e(this,etype);
|
||||||
|
wxGetApp().AddPendingEvent(e);
|
||||||
|
};
|
||||||
|
m_clientSocket->Close();
|
||||||
|
m_clientSocket->Destroy();
|
||||||
|
m_clientSocket = NULL;
|
||||||
|
delete [] m_outbuf;
|
||||||
|
delete [] m_inbuf;
|
||||||
|
if (!failed)
|
||||||
|
etype = WorkerEvent::DONE;
|
||||||
|
WorkerEvent e(this,etype);
|
||||||
|
if (failed) e.setFailed();
|
||||||
|
wxGetApp().AddPendingEvent(e);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
738
samples/sockets/baseserver.cpp
Normal file
738
samples/sockets/baseserver.cpp
Normal file
@@ -0,0 +1,738 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: samples/sockbase/client.cpp
|
||||||
|
// Purpose: Sockets sample for wxBase
|
||||||
|
// Author: Lukasz Michalski
|
||||||
|
// Modified by:
|
||||||
|
// Created: 27.06.2005
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) 2005 Lukasz Michalski <lmichalski@user.sourceforge.net>
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// declarations
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// headers
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#include "wx/wx.h"
|
||||||
|
#include "wx/socket.h"
|
||||||
|
#include "wx/event.h"
|
||||||
|
#include "wx/list.h"
|
||||||
|
#include "wx/cmdline.h"
|
||||||
|
#include "wx/datetime.h"
|
||||||
|
#include "wx/timer.h"
|
||||||
|
#include "wx/thread.h"
|
||||||
|
|
||||||
|
wxChar* GetSocketErrorMsg(int pSockError)
|
||||||
|
{
|
||||||
|
switch(pSockError)
|
||||||
|
{
|
||||||
|
case wxSOCKET_NOERROR:
|
||||||
|
return wxT("wxSOCKET_NOERROR");
|
||||||
|
break;
|
||||||
|
case wxSOCKET_INVOP:
|
||||||
|
return wxT("wxSOCKET_INVOP");
|
||||||
|
break;
|
||||||
|
case wxSOCKET_IOERR:
|
||||||
|
return wxT("wxSOCKET_IOERR");
|
||||||
|
break;
|
||||||
|
case wxSOCKET_INVADDR:
|
||||||
|
return wxT("wxSOCKET_INVADDR");
|
||||||
|
break;
|
||||||
|
case wxSOCKET_NOHOST:
|
||||||
|
return wxT("wxSOCKET_NOHOST");
|
||||||
|
break;
|
||||||
|
case wxSOCKET_INVPORT:
|
||||||
|
return wxT("wxSOCKET_INVPORT");
|
||||||
|
break;
|
||||||
|
case wxSOCKET_WOULDBLOCK:
|
||||||
|
return wxT("wxSOCKET_WOULDBLOCK");
|
||||||
|
break;
|
||||||
|
case wxSOCKET_TIMEDOUT:
|
||||||
|
return wxT("wxSOCKET_TIMEDOUT");
|
||||||
|
break;
|
||||||
|
case wxSOCKET_MEMERR:
|
||||||
|
return wxT("wxSOCKET_MEMERR");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return wxT("Unknown");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//log output types for LogWorker helper function
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
LOG_MESSAGE,
|
||||||
|
LOG_ERROR,
|
||||||
|
LOG_VERBOSE
|
||||||
|
} logWorker_t;
|
||||||
|
|
||||||
|
//outputs log message with IP and TCP port number prepended
|
||||||
|
void
|
||||||
|
LogWorker(const wxIPV4address& pAddr, const wxString& pMessage, logWorker_t pType = LOG_VERBOSE)
|
||||||
|
{
|
||||||
|
wxString msg(wxString::Format(wxT("%s:%d "),pAddr.IPAddress().c_str(),pAddr.Service()));
|
||||||
|
msg += pMessage;
|
||||||
|
switch (pType)
|
||||||
|
{
|
||||||
|
case LOG_VERBOSE:
|
||||||
|
wxLogVerbose(msg);
|
||||||
|
break;
|
||||||
|
case LOG_MESSAGE:
|
||||||
|
wxLogMessage(msg);
|
||||||
|
break;
|
||||||
|
case LOG_ERROR:
|
||||||
|
wxLogError(msg);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//event sent by workers to server class
|
||||||
|
//after client is served
|
||||||
|
const wxEventType wxEVT_WORKER = wxNewEventType();
|
||||||
|
#define EVT_WORKER(func) DECLARE_EVENT_TABLE_ENTRY( wxEVT_WORKER, -1, -1, (wxObjectEventFunction) (wxEventFunction) (WorkerEventFunction) & func, (wxObject *) NULL ),
|
||||||
|
|
||||||
|
class WorkerEvent : public wxEvent {
|
||||||
|
public:
|
||||||
|
WorkerEvent(void* pSender)
|
||||||
|
{
|
||||||
|
SetId(-1);
|
||||||
|
SetEventType(wxEVT_WORKER);
|
||||||
|
m_sender = pSender;
|
||||||
|
m_exit = false;
|
||||||
|
m_workerFailed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual wxEvent* Clone() const
|
||||||
|
{
|
||||||
|
return new WorkerEvent(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void* m_sender;
|
||||||
|
bool m_exit;
|
||||||
|
bool m_workerFailed;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef void (wxEvtHandler::*WorkerEventFunction)(WorkerEvent&);
|
||||||
|
|
||||||
|
class ThreadWorker;
|
||||||
|
class EventWorker;
|
||||||
|
|
||||||
|
WX_DECLARE_LIST(ThreadWorker, TList);
|
||||||
|
WX_DECLARE_LIST(EventWorker, EList);
|
||||||
|
|
||||||
|
//main server class contains listening socket
|
||||||
|
//and list of two type worker classes that serve clients
|
||||||
|
class Server : public wxApp
|
||||||
|
{
|
||||||
|
DECLARE_EVENT_TABLE();
|
||||||
|
public:
|
||||||
|
Server() : m_maxConnections(-1) {}
|
||||||
|
~Server() {}
|
||||||
|
private:
|
||||||
|
enum WorkMode
|
||||||
|
{
|
||||||
|
MIXED,
|
||||||
|
THREADS,
|
||||||
|
EVENTS
|
||||||
|
};
|
||||||
|
|
||||||
|
virtual bool OnInit();
|
||||||
|
virtual int OnExit();
|
||||||
|
|
||||||
|
void OnInitCmdLine(wxCmdLineParser& pParser);
|
||||||
|
bool OnCmdLineParsed(wxCmdLineParser& pParser);
|
||||||
|
|
||||||
|
void OnSocketEvent(wxSocketEvent& pEvent);
|
||||||
|
void OnWorkerEvent(WorkerEvent& pEvent);
|
||||||
|
void OnTimerEvent(wxTimerEvent& pEvent);
|
||||||
|
void DumpStatistics();
|
||||||
|
|
||||||
|
TList m_threadWorkers;
|
||||||
|
EList m_eventWorkers;
|
||||||
|
WorkMode m_workMode;
|
||||||
|
wxSocketServer* m_listeningSocket;
|
||||||
|
|
||||||
|
// statistics
|
||||||
|
unsigned m_threadWorkersCreated;
|
||||||
|
unsigned m_threadWorkersDone;
|
||||||
|
unsigned m_threadWorkersFailed;
|
||||||
|
unsigned m_maxThreadWorkers;
|
||||||
|
|
||||||
|
unsigned m_eventWorkersCreated;
|
||||||
|
unsigned m_eventWorkersDone;
|
||||||
|
unsigned m_eventWorkersFailed;
|
||||||
|
unsigned m_maxEventWorkers;
|
||||||
|
|
||||||
|
long int m_maxConnections;
|
||||||
|
|
||||||
|
long m_port;
|
||||||
|
|
||||||
|
wxTimer mTimer;
|
||||||
|
};
|
||||||
|
|
||||||
|
DECLARE_APP(Server);
|
||||||
|
|
||||||
|
//thread based worker reads signature and all data first from connected client
|
||||||
|
//and resends data to client after reading
|
||||||
|
class ThreadWorker : public wxThread
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ThreadWorker(wxSocketBase* pSocket);
|
||||||
|
virtual ExitCode Entry();
|
||||||
|
private:
|
||||||
|
wxSocketBase* m_socket;
|
||||||
|
wxIPV4address m_peer;
|
||||||
|
};
|
||||||
|
|
||||||
|
//event based worker reads signature and creates buffer for incoming data.
|
||||||
|
//When part of data arrives this worker resends it as soon as possible.
|
||||||
|
class EventWorker : public wxEvtHandler
|
||||||
|
{
|
||||||
|
DECLARE_EVENT_TABLE();
|
||||||
|
public:
|
||||||
|
EventWorker(wxSocketBase* pSock);
|
||||||
|
~EventWorker();
|
||||||
|
private:
|
||||||
|
wxSocketBase* m_socket;
|
||||||
|
wxIPV4address m_peer;
|
||||||
|
|
||||||
|
unsigned char m_signature[2];
|
||||||
|
char* m_inbuf;
|
||||||
|
int m_infill;
|
||||||
|
int m_size;
|
||||||
|
char* m_outbuf;
|
||||||
|
int m_outfill;
|
||||||
|
int m_written;
|
||||||
|
|
||||||
|
void OnSocketEvent(wxSocketEvent& pEvent);
|
||||||
|
void DoWrite();
|
||||||
|
void DoRead();
|
||||||
|
};
|
||||||
|
|
||||||
|
/******************* Implementation ******************/
|
||||||
|
IMPLEMENT_APP_CONSOLE(Server)
|
||||||
|
|
||||||
|
#include <wx/listimpl.cpp>
|
||||||
|
WX_DEFINE_LIST(TList);
|
||||||
|
WX_DEFINE_LIST(EList);
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
Server::OnInitCmdLine(wxCmdLineParser& pParser)
|
||||||
|
{
|
||||||
|
wxApp::OnInitCmdLine(pParser);
|
||||||
|
pParser.AddSwitch(wxT("t"),wxT("threads"),_("Use thread based workers only"));
|
||||||
|
pParser.AddSwitch(wxT("e"),wxT("events"),_("Use event based workers only"));
|
||||||
|
pParser.AddOption(wxT("m"),wxT("max"),_("Exit after <n> connections"),wxCMD_LINE_VAL_NUMBER,wxCMD_LINE_PARAM_OPTIONAL);
|
||||||
|
pParser.AddOption(wxT("p"),wxT("port"),_("listen on given port (default 3000)"),wxCMD_LINE_VAL_NUMBER,wxCMD_LINE_PARAM_OPTIONAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Server::DumpStatistics()
|
||||||
|
{
|
||||||
|
wxString mode;
|
||||||
|
switch(m_workMode)
|
||||||
|
{
|
||||||
|
case EVENTS:
|
||||||
|
mode = _("Event based workers");
|
||||||
|
break;
|
||||||
|
case THREADS:
|
||||||
|
mode = _("Thread based workers");
|
||||||
|
break;
|
||||||
|
case MIXED:
|
||||||
|
mode = _("Event and thread based workers");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
wxLogMessage(wxString::Format(wxT("Server mode: %s"),mode.c_str()));
|
||||||
|
wxLogMessage(wxString::Format(wxT("\t\t\t\tThreads\tEvents\tTotal")));
|
||||||
|
wxLogMessage(wxString::Format(wxT("Workers created:\t\t%d\t%d\t%d"),m_threadWorkersCreated,m_eventWorkersCreated,m_threadWorkersCreated+m_eventWorkersCreated));
|
||||||
|
wxLogMessage(wxString::Format(wxT("Max concurrent workers:\t%d\t%d\t%d"),m_maxThreadWorkers,m_maxEventWorkers,m_maxThreadWorkers+m_maxEventWorkers));
|
||||||
|
wxLogMessage(wxString::Format(wxT("Workers failed:\t\t%d\t%d\t%d"),m_threadWorkersFailed,m_eventWorkersFailed,m_threadWorkersFailed+m_eventWorkersFailed));
|
||||||
|
wxLogMessage(wxString::Format(wxT("Workers done:\t\t%d\t%d\t%d"),m_threadWorkersDone,m_eventWorkersDone,m_threadWorkersDone+m_eventWorkersDone));
|
||||||
|
|
||||||
|
if ((int)(m_threadWorkersDone+m_eventWorkersDone) == m_maxConnections)
|
||||||
|
{
|
||||||
|
wxLogMessage(wxT("%d connection(s) served, exiting"),m_maxConnections);
|
||||||
|
ExitMainLoop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
Server::OnCmdLineParsed(wxCmdLineParser& pParser)
|
||||||
|
{
|
||||||
|
if (pParser.Found(_("verbose")))
|
||||||
|
{
|
||||||
|
wxLog::AddTraceMask(wxT("wxSocket"));
|
||||||
|
wxLog::AddTraceMask(wxT("epolldispatcher"));
|
||||||
|
wxLog::AddTraceMask(wxT("selectdispatcher"));
|
||||||
|
wxLog::AddTraceMask(wxT("thread"));
|
||||||
|
wxLog::AddTraceMask(wxT("events"));
|
||||||
|
wxLog::AddTraceMask(wxT("timer"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pParser.Found(wxT("m"),&m_maxConnections))
|
||||||
|
{
|
||||||
|
wxLogMessage(wxT("%d connection(s) to exit"),m_maxConnections);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pParser.Found(wxT("p"),&m_port))
|
||||||
|
{
|
||||||
|
wxLogMessage(wxT("%d connection(s) to exit"),m_maxConnections);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pParser.Found(wxT("t")))
|
||||||
|
m_workMode = THREADS;
|
||||||
|
else if (pParser.Found(wxT("e")))
|
||||||
|
m_workMode = EVENTS;
|
||||||
|
else
|
||||||
|
m_workMode = MIXED;
|
||||||
|
|
||||||
|
return wxApp::OnCmdLineParsed(pParser);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Server::OnInit()
|
||||||
|
{
|
||||||
|
wxLog* logger = new wxLogStderr();
|
||||||
|
wxLog::SetActiveTarget(logger);
|
||||||
|
|
||||||
|
m_port = 3000;
|
||||||
|
|
||||||
|
//send interesting things to console
|
||||||
|
if (!wxApp::OnInit())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
//setup listening socket
|
||||||
|
wxIPV4address la;
|
||||||
|
la.Service(m_port);
|
||||||
|
m_listeningSocket = new wxSocketServer(la,wxSOCKET_NOWAIT|wxSOCKET_REUSEADDR);
|
||||||
|
m_listeningSocket->SetEventHandler(*this);
|
||||||
|
m_listeningSocket->SetNotify(wxSOCKET_CONNECTION_FLAG);
|
||||||
|
m_listeningSocket->Notify(true);
|
||||||
|
if (!m_listeningSocket->Ok())
|
||||||
|
{
|
||||||
|
wxLogError(wxT("Cannot bind listening socket"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_threadWorkersCreated = 0;
|
||||||
|
m_threadWorkersDone = 0;
|
||||||
|
m_threadWorkersFailed = 0;
|
||||||
|
m_maxThreadWorkers = 0;
|
||||||
|
|
||||||
|
m_eventWorkersCreated = 0;
|
||||||
|
m_eventWorkersDone = 0;
|
||||||
|
m_eventWorkersFailed = 0;
|
||||||
|
m_maxEventWorkers = 0;
|
||||||
|
|
||||||
|
wxLogMessage(wxT("Server listening at port %d, waiting for connections"), m_port);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int Server::OnExit()
|
||||||
|
{
|
||||||
|
for(TList::compatibility_iterator it = m_threadWorkers.GetFirst(); it ; it = it->GetNext()) {
|
||||||
|
it->GetData()->Wait();
|
||||||
|
delete it->GetData();
|
||||||
|
}
|
||||||
|
|
||||||
|
for(EList::compatibility_iterator it = m_eventWorkers.GetFirst(); it ; it->GetNext()) {
|
||||||
|
delete it->GetData();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_threadWorkers.Clear();
|
||||||
|
m_eventWorkers.Clear();
|
||||||
|
m_listeningSocket->Destroy();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Server::OnSocketEvent(wxSocketEvent& pEvent)
|
||||||
|
{
|
||||||
|
switch(pEvent.GetSocketEvent())
|
||||||
|
{
|
||||||
|
case wxSOCKET_INPUT:
|
||||||
|
wxLogError(wxT("Unexpected wxSOCKET_INPUT in wxSocketServer"));
|
||||||
|
break;
|
||||||
|
case wxSOCKET_OUTPUT:
|
||||||
|
wxLogError(wxT("Unexpected wxSOCKET_OUTPUT in wxSocketServer"));
|
||||||
|
break;
|
||||||
|
case wxSOCKET_CONNECTION:
|
||||||
|
{
|
||||||
|
wxSocketBase* sock = m_listeningSocket->Accept();
|
||||||
|
wxIPV4address addr;
|
||||||
|
if (!sock->GetPeer(addr))
|
||||||
|
{
|
||||||
|
wxLogError(wxT("Server: cannot get peer info"));
|
||||||
|
} else {
|
||||||
|
wxLogMessage(wxT("Got connection from %s:%d"),addr.IPAddress().c_str(), addr.Service());
|
||||||
|
}
|
||||||
|
bool createThread;
|
||||||
|
|
||||||
|
if (m_workMode != MIXED)
|
||||||
|
createThread = m_workMode == THREADS;
|
||||||
|
else
|
||||||
|
createThread = (wxDateTime::Now().GetSecond())%2 == 0;
|
||||||
|
|
||||||
|
if (createThread)
|
||||||
|
{
|
||||||
|
ThreadWorker* c = new ThreadWorker(sock);
|
||||||
|
if (c->Create() == wxTHREAD_NO_ERROR)
|
||||||
|
{
|
||||||
|
m_threadWorkers.Append(c);
|
||||||
|
if (m_threadWorkers.GetCount() > m_maxThreadWorkers)
|
||||||
|
m_maxThreadWorkers++;
|
||||||
|
m_threadWorkersCreated++;
|
||||||
|
c->Run();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
wxLogError(wxT("Server: cannot create next thread (current threads: %d"), m_threadWorkers.size());
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EventWorker* w = new EventWorker(sock);
|
||||||
|
m_eventWorkers.Append(w);
|
||||||
|
if (m_eventWorkers.GetCount() > m_maxEventWorkers)
|
||||||
|
m_maxEventWorkers++;
|
||||||
|
m_eventWorkersCreated++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case wxSOCKET_LOST:
|
||||||
|
wxLogError(wxT("Unexpected wxSOCKET_LOST in wxSocketServer"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Server::OnWorkerEvent(WorkerEvent& pEvent)
|
||||||
|
{
|
||||||
|
//wxLogMessage(wxT("Got worker event"));
|
||||||
|
for(TList::compatibility_iterator it = m_threadWorkers.GetFirst(); it ; it = it->GetNext())
|
||||||
|
{
|
||||||
|
if (it->GetData() == pEvent.m_sender)
|
||||||
|
{
|
||||||
|
wxLogVerbose(wxT("Deleting thread worker (%d left)"),m_threadWorkers.GetCount());
|
||||||
|
it->GetData()->Wait();
|
||||||
|
delete it->GetData();
|
||||||
|
m_threadWorkers.DeleteNode(it);
|
||||||
|
if (!pEvent.m_workerFailed)
|
||||||
|
m_threadWorkersDone++;
|
||||||
|
else
|
||||||
|
m_threadWorkersFailed++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(EList::compatibility_iterator it = m_eventWorkers.GetFirst(); it ; it = it->GetNext())
|
||||||
|
{
|
||||||
|
if (it->GetData() == pEvent.m_sender)
|
||||||
|
{
|
||||||
|
wxLogVerbose(wxT("Deleting event worker (%d left)"),m_eventWorkers.GetCount());
|
||||||
|
delete it->GetData();
|
||||||
|
m_eventWorkers.DeleteNode(it);
|
||||||
|
if (!pEvent.m_workerFailed)
|
||||||
|
m_eventWorkersDone++;
|
||||||
|
else
|
||||||
|
m_eventWorkersFailed++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_eventWorkers.GetCount() == 0 && m_threadWorkers.GetCount() == 0)
|
||||||
|
{
|
||||||
|
mTimer.Start(1000,true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Server::OnTimerEvent(wxTimerEvent&)
|
||||||
|
{
|
||||||
|
DumpStatistics();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_EVENT_TABLE(Server,wxEvtHandler)
|
||||||
|
EVT_SOCKET(wxID_ANY,Server::OnSocketEvent)
|
||||||
|
EVT_WORKER(Server::OnWorkerEvent)
|
||||||
|
EVT_TIMER(wxID_ANY,Server::OnTimerEvent)
|
||||||
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
|
|
||||||
|
ThreadWorker::ThreadWorker(wxSocketBase* pSocket) : wxThread(wxTHREAD_JOINABLE)
|
||||||
|
{
|
||||||
|
m_socket = pSocket;
|
||||||
|
//Notify() cannot be called in thread context. We have to detach from main loop
|
||||||
|
//before switching thread contexts.
|
||||||
|
m_socket->Notify(false);
|
||||||
|
m_socket->SetFlags(wxSOCKET_WAITALL|wxSOCKET_BLOCK);
|
||||||
|
pSocket->GetPeer(m_peer);
|
||||||
|
}
|
||||||
|
|
||||||
|
wxThread::ExitCode ThreadWorker::Entry()
|
||||||
|
{
|
||||||
|
WorkerEvent e(this);
|
||||||
|
if (!m_socket->IsConnected())
|
||||||
|
{
|
||||||
|
LogWorker(m_peer,wxT("ThreadWorker: not connected"),LOG_ERROR);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int to_process = -1;
|
||||||
|
if (m_socket->IsConnected())
|
||||||
|
{
|
||||||
|
unsigned char signature[2];
|
||||||
|
LogWorker(m_peer,wxT("ThreadWorker: reading for data"));
|
||||||
|
to_process = 2;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
m_socket->Read(&signature,to_process);
|
||||||
|
if (m_socket->Error())
|
||||||
|
{
|
||||||
|
LogWorker(m_peer,wxT("ThreadWorker: Read error"),LOG_ERROR);
|
||||||
|
wxGetApp().AddPendingEvent(e);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
to_process -= m_socket->LastCount();
|
||||||
|
LogWorker(m_peer,wxString::Format(wxT("to_process: %d"),to_process));
|
||||||
|
|
||||||
|
}
|
||||||
|
while (!m_socket->Error() && to_process != 0);
|
||||||
|
|
||||||
|
if (signature[0] == 0)
|
||||||
|
{
|
||||||
|
e.m_exit = true;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (signature[0] == 0xCE)
|
||||||
|
{
|
||||||
|
LogWorker(m_peer,_("This server does not support test2 from GUI client"));
|
||||||
|
e.m_workerFailed = true;
|
||||||
|
e.m_exit = true;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int size = signature[1] * (signature[0] == 0xBE ? 1 : 1024);
|
||||||
|
char* buf = new char[size];
|
||||||
|
LogWorker(m_peer,wxString::Format(wxT("Message signature: chunks: %d, kilobytes: %d, size: %d (bytes)"),signature[0],signature[1],size));
|
||||||
|
|
||||||
|
to_process = size;
|
||||||
|
LogWorker(m_peer,wxString::Format(wxT("ThreadWorker: reading %d bytes of data"),to_process));
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
m_socket->Read(buf,to_process);
|
||||||
|
if (m_socket->Error())
|
||||||
|
{
|
||||||
|
LogWorker(m_peer,wxT("ThreadWorker: Read error"),LOG_ERROR);
|
||||||
|
wxGetApp().AddPendingEvent(e);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
to_process -= m_socket->LastCount();
|
||||||
|
LogWorker(m_peer,wxString::Format(wxT("ThreadWorker: %d bytes readed, %d todo"),m_socket->LastCount(),to_process));
|
||||||
|
|
||||||
|
}
|
||||||
|
while(!m_socket->Error() && to_process != 0);
|
||||||
|
|
||||||
|
to_process = size;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
m_socket->Write(buf,to_process);
|
||||||
|
if (m_socket->Error()) {
|
||||||
|
LogWorker(m_peer,wxT("ThreadWorker: Write error"),LOG_ERROR);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
to_process -= m_socket->LastCount();
|
||||||
|
LogWorker(m_peer,wxString::Format(wxT("ThreadWorker: %d bytes written, %d todo"),m_socket->LastCount(),to_process));
|
||||||
|
}
|
||||||
|
while(!m_socket->Error() && to_process != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
LogWorker(m_peer,wxT("ThreadWorker: done"));
|
||||||
|
e.m_workerFailed = to_process != 0;
|
||||||
|
m_socket->Destroy();
|
||||||
|
wxGetApp().AddPendingEvent(e);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
EventWorker::EventWorker(wxSocketBase* pSock)
|
||||||
|
: m_socket(pSock),
|
||||||
|
m_inbuf(NULL),
|
||||||
|
m_infill(0),
|
||||||
|
m_outbuf(NULL),
|
||||||
|
m_outfill(0)
|
||||||
|
{
|
||||||
|
m_socket->SetNotify(wxSOCKET_LOST_FLAG|wxSOCKET_INPUT_FLAG|wxSOCKET_OUTPUT_FLAG);
|
||||||
|
m_socket->Notify(true);
|
||||||
|
m_socket->SetEventHandler(*this);
|
||||||
|
m_socket->SetFlags(wxSOCKET_NOWAIT);
|
||||||
|
m_socket->GetPeer(m_peer);
|
||||||
|
}
|
||||||
|
|
||||||
|
EventWorker::~EventWorker() {
|
||||||
|
m_socket->Destroy();
|
||||||
|
delete [] m_inbuf;
|
||||||
|
delete [] m_outbuf;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
EventWorker::DoRead()
|
||||||
|
{
|
||||||
|
if (m_inbuf == NULL)
|
||||||
|
{
|
||||||
|
//read message header
|
||||||
|
do
|
||||||
|
{
|
||||||
|
m_socket->Read(m_signature,2 - m_infill);
|
||||||
|
if (m_socket->Error()) {
|
||||||
|
if (m_socket->LastError() != wxSOCKET_WOULDBLOCK)
|
||||||
|
{
|
||||||
|
LogWorker(m_peer,wxString::Format(wxT("Read error (%d): %s"),m_socket->LastError(),GetSocketErrorMsg(m_socket->LastError())),LOG_ERROR);
|
||||||
|
m_socket->Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_infill += m_socket->LastCount();
|
||||||
|
if (m_infill == 2) {
|
||||||
|
unsigned char chunks = m_signature[1];
|
||||||
|
unsigned char type = m_signature[0];
|
||||||
|
if (type == 0xCE)
|
||||||
|
{
|
||||||
|
LogWorker(m_peer,_("This server does not support test2 from GUI client"));
|
||||||
|
m_written = -1; //wxSOCKET_LOST will interpret this as failure
|
||||||
|
m_socket->Close();
|
||||||
|
}
|
||||||
|
else if (type == 0xBE || type == 0xDE)
|
||||||
|
{
|
||||||
|
m_size = chunks * (type == 0xBE ? 1 : 1024);
|
||||||
|
m_inbuf = new char[m_size];
|
||||||
|
m_outbuf = new char[m_size];
|
||||||
|
m_infill = 0;
|
||||||
|
m_outfill = 0;
|
||||||
|
m_written = 0;
|
||||||
|
LogWorker(m_peer,wxString::Format(wxT("Message signature: len: %d, type: %s, size: %d (bytes)"),chunks,type == 0xBE ? wxT("b") : wxT("kB"),m_size));
|
||||||
|
break;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
LogWorker(m_peer,wxString::Format(wxT("Unknown test type %x"),type));
|
||||||
|
m_socket->Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while(!m_socket->Error() && (2 - m_infill != 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_inbuf == NULL)
|
||||||
|
return;
|
||||||
|
//read message data
|
||||||
|
do {
|
||||||
|
if (m_size == m_infill) {
|
||||||
|
m_signature[0] = m_signature[1] = 0x0;
|
||||||
|
delete [] m_inbuf;
|
||||||
|
m_inbuf = NULL;
|
||||||
|
m_infill = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
m_socket->Read(m_inbuf + m_infill,m_size - m_infill);
|
||||||
|
if (m_socket->Error()) {
|
||||||
|
if (m_socket->LastError() != wxSOCKET_WOULDBLOCK)
|
||||||
|
{
|
||||||
|
LogWorker(
|
||||||
|
m_peer,
|
||||||
|
wxString::Format(wxT("Read error (%d): %s"),
|
||||||
|
m_socket->LastError(),
|
||||||
|
GetSocketErrorMsg(m_socket->LastError())
|
||||||
|
),
|
||||||
|
LOG_ERROR);
|
||||||
|
|
||||||
|
m_socket->Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
memcpy(m_outbuf+m_outfill,m_inbuf+m_infill,m_socket->LastCount());
|
||||||
|
m_infill += m_socket->LastCount();
|
||||||
|
m_outfill += m_socket->LastCount();
|
||||||
|
DoWrite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while(!m_socket->Error());
|
||||||
|
};
|
||||||
|
|
||||||
|
void EventWorker::OnSocketEvent(wxSocketEvent& pEvent)
|
||||||
|
{
|
||||||
|
switch(pEvent.GetSocketEvent())
|
||||||
|
{
|
||||||
|
case wxSOCKET_INPUT:
|
||||||
|
DoRead();
|
||||||
|
break;
|
||||||
|
case wxSOCKET_OUTPUT:
|
||||||
|
if (m_inbuf != NULL)
|
||||||
|
DoWrite();
|
||||||
|
break;
|
||||||
|
case wxSOCKET_CONNECTION:
|
||||||
|
LogWorker(m_peer,wxString::Format(wxT("Unexpected wxSOCKET_CONNECTION in EventWorker")),LOG_ERROR);
|
||||||
|
break;
|
||||||
|
case wxSOCKET_LOST:
|
||||||
|
{
|
||||||
|
LogWorker(m_peer,wxString::Format(wxT("Connection lost")));
|
||||||
|
WorkerEvent e(this);
|
||||||
|
e.m_workerFailed = m_written != m_size;
|
||||||
|
wxGetApp().AddPendingEvent(e);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void EventWorker::DoWrite() {
|
||||||
|
do {
|
||||||
|
if (m_written == m_size)
|
||||||
|
{
|
||||||
|
delete [] m_outbuf;
|
||||||
|
m_outbuf = NULL;
|
||||||
|
m_outfill = 0;
|
||||||
|
LogWorker(m_peer,wxString::Format(wxT("All data written")));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (m_outfill - m_written == 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
m_socket->Write(m_outbuf + m_written,m_outfill - m_written);
|
||||||
|
if (m_socket->Error())
|
||||||
|
{
|
||||||
|
if (m_socket->LastError() != wxSOCKET_WOULDBLOCK)
|
||||||
|
{
|
||||||
|
LogWorker(m_peer,
|
||||||
|
wxString::Format(wxT("Write error (%d): %s"),
|
||||||
|
m_socket->LastError(),
|
||||||
|
GetSocketErrorMsg(m_socket->LastError())
|
||||||
|
)
|
||||||
|
,LOG_ERROR
|
||||||
|
);
|
||||||
|
m_socket->Close();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LogWorker(m_peer,wxString::Format(wxT("Write would block, waiting for OUTPUT event")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
memmove(m_outbuf,m_outbuf+m_socket->LastCount(),m_outfill-m_socket->LastCount());
|
||||||
|
m_written += m_socket->LastCount();
|
||||||
|
}
|
||||||
|
LogWorker(m_peer,wxString::Format(wxT("Written %d of %d bytes, todo %d"),m_socket->LastCount(),m_size,m_size - m_written));
|
||||||
|
}
|
||||||
|
while (!m_socket->Error());
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN_EVENT_TABLE(EventWorker,wxEvtHandler)
|
||||||
|
EVT_SOCKET(wxID_ANY,EventWorker::OnSocketEvent)
|
||||||
|
END_EVENT_TABLE()
|
@@ -38,9 +38,7 @@
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
// the application icon
|
// the application icon
|
||||||
#if defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__) || defined(__WXMAC__)
|
#include "mondrian.xpm"
|
||||||
# include "mondrian.xpm"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// classes
|
// classes
|
||||||
|
@@ -29,7 +29,7 @@ LIBDIRNAME = .\..\..\lib\$(COMPILER_PREFIX)_$(LIBTYPE_SUFFIX)$(CFG)
|
|||||||
SETUPHDIR = \
|
SETUPHDIR = \
|
||||||
$(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
|
$(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
|
||||||
CLIENT_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
CLIENT_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
||||||
$(__OPTIMIZEFLAG) $(__THREADSFLAG_0) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
$(__OPTIMIZEFLAG) $(__THREADSFLAG_2) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||||
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
|
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
|
||||||
$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \
|
$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \
|
||||||
$(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I.\..\..\include -I. $(__DLLFLAG_p) \
|
$(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I.\..\..\include -I. $(__DLLFLAG_p) \
|
||||||
@@ -37,13 +37,29 @@ CLIENT_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
|||||||
CLIENT_OBJECTS = \
|
CLIENT_OBJECTS = \
|
||||||
$(OBJS)\client_client.obj
|
$(OBJS)\client_client.obj
|
||||||
SERVER_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
SERVER_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
||||||
$(__OPTIMIZEFLAG) $(__THREADSFLAG_0) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
$(__OPTIMIZEFLAG) $(__THREADSFLAG_2) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||||
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
|
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
|
||||||
$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \
|
$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \
|
||||||
$(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I.\..\..\include -I. $(__DLLFLAG_p) \
|
$(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I.\..\..\include -I. $(__DLLFLAG_p) \
|
||||||
-I.\..\..\samples -DNOPCH $(CPPFLAGS) $(CXXFLAGS)
|
-I.\..\..\samples -DNOPCH $(CPPFLAGS) $(CXXFLAGS)
|
||||||
SERVER_OBJECTS = \
|
SERVER_OBJECTS = \
|
||||||
$(OBJS)\server_server.obj
|
$(OBJS)\server_server.obj
|
||||||
|
BASECLIENT_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
||||||
|
$(__OPTIMIZEFLAG) $(__THREADSFLAG_2) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||||
|
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
|
||||||
|
$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \
|
||||||
|
$(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I.\..\..\include -I. $(__DLLFLAG_p) \
|
||||||
|
-DwxUSE_GUI=0 $(CPPFLAGS) $(CXXFLAGS)
|
||||||
|
BASECLIENT_OBJECTS = \
|
||||||
|
$(OBJS)\baseclient_baseclient.obj
|
||||||
|
BASESERVER_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
||||||
|
$(__OPTIMIZEFLAG) $(__THREADSFLAG_2) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||||
|
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
|
||||||
|
$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \
|
||||||
|
$(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I.\..\..\include -I. $(__DLLFLAG_p) \
|
||||||
|
-DwxUSE_GUI=0 $(CPPFLAGS) $(CXXFLAGS)
|
||||||
|
BASESERVER_OBJECTS = \
|
||||||
|
$(OBJS)\baseserver_baseserver.obj
|
||||||
|
|
||||||
### Conditionally set variables: ###
|
### Conditionally set variables: ###
|
||||||
|
|
||||||
@@ -80,6 +96,58 @@ EXTRALIBS_FOR_BASE =
|
|||||||
!if "$(MONOLITHIC)" == "1"
|
!if "$(MONOLITHIC)" == "1"
|
||||||
EXTRALIBS_FOR_BASE =
|
EXTRALIBS_FOR_BASE =
|
||||||
!endif
|
!endif
|
||||||
|
!if "$(USE_GUI)" == "1"
|
||||||
|
__client___depname = $(OBJS)\client.exe
|
||||||
|
!endif
|
||||||
|
!if "$(USE_GUI)" == "1"
|
||||||
|
__server___depname = $(OBJS)\server.exe
|
||||||
|
!endif
|
||||||
|
!if "$(WXUNIV)" == "1"
|
||||||
|
__WXUNIV_DEFINE_p_0 = -d__WXUNIVERSAL__
|
||||||
|
!endif
|
||||||
|
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
|
||||||
|
__DEBUG_DEFINE_p_0 = -d__WXDEBUG__
|
||||||
|
!endif
|
||||||
|
!if "$(DEBUG_FLAG)" == "1"
|
||||||
|
__DEBUG_DEFINE_p_0 = -d__WXDEBUG__
|
||||||
|
!endif
|
||||||
|
!if "$(USE_EXCEPTIONS)" == "0"
|
||||||
|
__EXCEPTIONS_DEFINE_p_0 = -dwxNO_EXCEPTIONS
|
||||||
|
!endif
|
||||||
|
!if "$(USE_RTTI)" == "0"
|
||||||
|
__RTTI_DEFINE_p_0 = -dwxNO_RTTI
|
||||||
|
!endif
|
||||||
|
!if "$(USE_THREADS)" == "0"
|
||||||
|
__THREAD_DEFINE_p_0 = -dwxNO_THREADS
|
||||||
|
!endif
|
||||||
|
!if "$(UNICODE)" == "0"
|
||||||
|
__UNICODE_DEFINE_p_0 = -dwxUSE_UNICODE=0
|
||||||
|
!endif
|
||||||
|
!if "$(UNICODE)" == "1"
|
||||||
|
__UNICODE_DEFINE_p_0 = -d_UNICODE
|
||||||
|
!endif
|
||||||
|
!if "$(MSLU)" == "1"
|
||||||
|
__MSLU_DEFINE_p_0 = -dwxUSE_UNICODE_MSLU=1
|
||||||
|
!endif
|
||||||
|
!if "$(USE_GDIPLUS)" == "1"
|
||||||
|
__GFXCTX_DEFINE_p_0 = -dwxUSE_GRAPHICS_CONTEXT=1
|
||||||
|
!endif
|
||||||
|
!if "$(SHARED)" == "1"
|
||||||
|
__DLLFLAG_p_0 = -dWXUSINGDLL
|
||||||
|
!endif
|
||||||
|
!if "$(MONOLITHIC)" == "0"
|
||||||
|
__WXLIB_CORE_p = \
|
||||||
|
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib
|
||||||
|
!endif
|
||||||
|
!if "$(USE_GUI)" == "1"
|
||||||
|
__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib
|
||||||
|
!endif
|
||||||
|
!if "$(USE_GUI)" == "1"
|
||||||
|
__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib
|
||||||
|
!endif
|
||||||
|
!if "$(USE_GUI)" == "1"
|
||||||
|
__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib
|
||||||
|
!endif
|
||||||
!if "$(BUILD)" == "debug"
|
!if "$(BUILD)" == "debug"
|
||||||
__OPTIMIZEFLAG = -Od
|
__OPTIMIZEFLAG = -Od
|
||||||
!endif
|
!endif
|
||||||
@@ -93,10 +161,10 @@ __THREADSFLAG =
|
|||||||
__THREADSFLAG = mt
|
__THREADSFLAG = mt
|
||||||
!endif
|
!endif
|
||||||
!if "$(USE_THREADS)" == "0"
|
!if "$(USE_THREADS)" == "0"
|
||||||
__THREADSFLAG_0 =
|
__THREADSFLAG_2 =
|
||||||
!endif
|
!endif
|
||||||
!if "$(USE_THREADS)" == "1"
|
!if "$(USE_THREADS)" == "1"
|
||||||
__THREADSFLAG_0 = -tWM
|
__THREADSFLAG_2 = -tWM
|
||||||
!endif
|
!endif
|
||||||
!if "$(RUNTIME_LIBS)" == "dynamic"
|
!if "$(RUNTIME_LIBS)" == "dynamic"
|
||||||
__RUNTIME_LIBS = -tWR
|
__RUNTIME_LIBS = -tWR
|
||||||
@@ -105,81 +173,44 @@ __RUNTIME_LIBS = -tWR
|
|||||||
__RUNTIME_LIBS =
|
__RUNTIME_LIBS =
|
||||||
!endif
|
!endif
|
||||||
!if "$(RUNTIME_LIBS)" == "dynamic"
|
!if "$(RUNTIME_LIBS)" == "dynamic"
|
||||||
__RUNTIME_LIBS_0 = i
|
__RUNTIME_LIBS_2 = i
|
||||||
!endif
|
!endif
|
||||||
!if "$(RUNTIME_LIBS)" == "static"
|
!if "$(RUNTIME_LIBS)" == "static"
|
||||||
__RUNTIME_LIBS_0 =
|
__RUNTIME_LIBS_2 =
|
||||||
!endif
|
!endif
|
||||||
!if "$(WXUNIV)" == "1"
|
!if "$(WXUNIV)" == "1"
|
||||||
__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
|
__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
|
||||||
!endif
|
!endif
|
||||||
!if "$(WXUNIV)" == "1"
|
|
||||||
__WXUNIV_DEFINE_p_0 = -d__WXUNIVERSAL__
|
|
||||||
!endif
|
|
||||||
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
|
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
|
||||||
__DEBUG_DEFINE_p = -D__WXDEBUG__
|
__DEBUG_DEFINE_p = -D__WXDEBUG__
|
||||||
!endif
|
!endif
|
||||||
!if "$(DEBUG_FLAG)" == "1"
|
!if "$(DEBUG_FLAG)" == "1"
|
||||||
__DEBUG_DEFINE_p = -D__WXDEBUG__
|
__DEBUG_DEFINE_p = -D__WXDEBUG__
|
||||||
!endif
|
!endif
|
||||||
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
|
|
||||||
__DEBUG_DEFINE_p_0 = -d__WXDEBUG__
|
|
||||||
!endif
|
|
||||||
!if "$(DEBUG_FLAG)" == "1"
|
|
||||||
__DEBUG_DEFINE_p_0 = -d__WXDEBUG__
|
|
||||||
!endif
|
|
||||||
!if "$(USE_EXCEPTIONS)" == "0"
|
!if "$(USE_EXCEPTIONS)" == "0"
|
||||||
__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
|
__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
|
||||||
!endif
|
!endif
|
||||||
!if "$(USE_EXCEPTIONS)" == "0"
|
|
||||||
__EXCEPTIONS_DEFINE_p_0 = -dwxNO_EXCEPTIONS
|
|
||||||
!endif
|
|
||||||
!if "$(USE_RTTI)" == "0"
|
!if "$(USE_RTTI)" == "0"
|
||||||
__RTTI_DEFINE_p = -DwxNO_RTTI
|
__RTTI_DEFINE_p = -DwxNO_RTTI
|
||||||
!endif
|
!endif
|
||||||
!if "$(USE_RTTI)" == "0"
|
|
||||||
__RTTI_DEFINE_p_0 = -dwxNO_RTTI
|
|
||||||
!endif
|
|
||||||
!if "$(USE_THREADS)" == "0"
|
!if "$(USE_THREADS)" == "0"
|
||||||
__THREAD_DEFINE_p = -DwxNO_THREADS
|
__THREAD_DEFINE_p = -DwxNO_THREADS
|
||||||
!endif
|
!endif
|
||||||
!if "$(USE_THREADS)" == "0"
|
|
||||||
__THREAD_DEFINE_p_0 = -dwxNO_THREADS
|
|
||||||
!endif
|
|
||||||
!if "$(UNICODE)" == "0"
|
!if "$(UNICODE)" == "0"
|
||||||
__UNICODE_DEFINE_p = -DwxUSE_UNICODE=0
|
__UNICODE_DEFINE_p = -DwxUSE_UNICODE=0
|
||||||
!endif
|
!endif
|
||||||
!if "$(UNICODE)" == "1"
|
!if "$(UNICODE)" == "1"
|
||||||
__UNICODE_DEFINE_p = -D_UNICODE
|
__UNICODE_DEFINE_p = -D_UNICODE
|
||||||
!endif
|
!endif
|
||||||
!if "$(UNICODE)" == "0"
|
|
||||||
__UNICODE_DEFINE_p_0 = -dwxUSE_UNICODE=0
|
|
||||||
!endif
|
|
||||||
!if "$(UNICODE)" == "1"
|
|
||||||
__UNICODE_DEFINE_p_0 = -d_UNICODE
|
|
||||||
!endif
|
|
||||||
!if "$(MSLU)" == "1"
|
!if "$(MSLU)" == "1"
|
||||||
__MSLU_DEFINE_p = -DwxUSE_UNICODE_MSLU=1
|
__MSLU_DEFINE_p = -DwxUSE_UNICODE_MSLU=1
|
||||||
!endif
|
!endif
|
||||||
!if "$(MSLU)" == "1"
|
|
||||||
__MSLU_DEFINE_p_0 = -dwxUSE_UNICODE_MSLU=1
|
|
||||||
!endif
|
|
||||||
!if "$(USE_GDIPLUS)" == "1"
|
!if "$(USE_GDIPLUS)" == "1"
|
||||||
__GFXCTX_DEFINE_p = -DwxUSE_GRAPHICS_CONTEXT=1
|
__GFXCTX_DEFINE_p = -DwxUSE_GRAPHICS_CONTEXT=1
|
||||||
!endif
|
!endif
|
||||||
!if "$(USE_GDIPLUS)" == "1"
|
|
||||||
__GFXCTX_DEFINE_p_0 = -dwxUSE_GRAPHICS_CONTEXT=1
|
|
||||||
!endif
|
|
||||||
!if "$(SHARED)" == "1"
|
!if "$(SHARED)" == "1"
|
||||||
__DLLFLAG_p = -DWXUSINGDLL
|
__DLLFLAG_p = -DWXUSINGDLL
|
||||||
!endif
|
!endif
|
||||||
!if "$(SHARED)" == "1"
|
|
||||||
__DLLFLAG_p_0 = -dWXUSINGDLL
|
|
||||||
!endif
|
|
||||||
!if "$(MONOLITHIC)" == "0"
|
|
||||||
__WXLIB_CORE_p = \
|
|
||||||
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib
|
|
||||||
!endif
|
|
||||||
!if "$(MONOLITHIC)" == "0"
|
!if "$(MONOLITHIC)" == "0"
|
||||||
__WXLIB_NET_p = \
|
__WXLIB_NET_p = \
|
||||||
wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net.lib
|
wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net.lib
|
||||||
@@ -192,15 +223,6 @@ __WXLIB_BASE_p = \
|
|||||||
__WXLIB_MONO_p = \
|
__WXLIB_MONO_p = \
|
||||||
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
|
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
|
||||||
!endif
|
!endif
|
||||||
!if "$(USE_GUI)" == "1"
|
|
||||||
__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib
|
|
||||||
!endif
|
|
||||||
!if "$(USE_GUI)" == "1"
|
|
||||||
__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib
|
|
||||||
!endif
|
|
||||||
!if "$(USE_GUI)" == "1"
|
|
||||||
__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib
|
|
||||||
!endif
|
|
||||||
!if "$(MSLU)" == "1"
|
!if "$(MSLU)" == "1"
|
||||||
__UNICOWS_LIB_p = unicows.lib
|
__UNICOWS_LIB_p = unicows.lib
|
||||||
!endif
|
!endif
|
||||||
@@ -227,7 +249,7 @@ $(OBJS):
|
|||||||
|
|
||||||
### Targets: ###
|
### Targets: ###
|
||||||
|
|
||||||
all: $(OBJS)\client.exe $(OBJS)\server.exe
|
all: $(__client___depname) $(__server___depname) $(OBJS)\baseclient.exe $(OBJS)\baseserver.exe
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-if exist $(OBJS)\*.obj del $(OBJS)\*.obj
|
-if exist $(OBJS)\*.obj del $(OBJS)\*.obj
|
||||||
@@ -245,15 +267,41 @@ clean:
|
|||||||
-if exist $(OBJS)\server.ild del $(OBJS)\server.ild
|
-if exist $(OBJS)\server.ild del $(OBJS)\server.ild
|
||||||
-if exist $(OBJS)\server.ilf del $(OBJS)\server.ilf
|
-if exist $(OBJS)\server.ilf del $(OBJS)\server.ilf
|
||||||
-if exist $(OBJS)\server.ils del $(OBJS)\server.ils
|
-if exist $(OBJS)\server.ils del $(OBJS)\server.ils
|
||||||
|
-if exist $(OBJS)\baseclient.exe del $(OBJS)\baseclient.exe
|
||||||
|
-if exist $(OBJS)\baseclient.tds del $(OBJS)\baseclient.tds
|
||||||
|
-if exist $(OBJS)\baseclient.ilc del $(OBJS)\baseclient.ilc
|
||||||
|
-if exist $(OBJS)\baseclient.ild del $(OBJS)\baseclient.ild
|
||||||
|
-if exist $(OBJS)\baseclient.ilf del $(OBJS)\baseclient.ilf
|
||||||
|
-if exist $(OBJS)\baseclient.ils del $(OBJS)\baseclient.ils
|
||||||
|
-if exist $(OBJS)\baseserver.exe del $(OBJS)\baseserver.exe
|
||||||
|
-if exist $(OBJS)\baseserver.tds del $(OBJS)\baseserver.tds
|
||||||
|
-if exist $(OBJS)\baseserver.ilc del $(OBJS)\baseserver.ilc
|
||||||
|
-if exist $(OBJS)\baseserver.ild del $(OBJS)\baseserver.ild
|
||||||
|
-if exist $(OBJS)\baseserver.ilf del $(OBJS)\baseserver.ilf
|
||||||
|
-if exist $(OBJS)\baseserver.ils del $(OBJS)\baseserver.ils
|
||||||
|
|
||||||
|
!if "$(USE_GUI)" == "1"
|
||||||
$(OBJS)\client.exe: $(CLIENT_OBJECTS) $(OBJS)\client_client.res
|
$(OBJS)\client.exe: $(CLIENT_OBJECTS) $(OBJS)\client_client.res
|
||||||
ilink32 -Tpe -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) -aa @&&|
|
ilink32 -Tpe -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) -aa @&&|
|
||||||
c0w32.obj $(CLIENT_OBJECTS),$@,, $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib import32.lib cw32$(__THREADSFLAG)$(__RUNTIME_LIBS_0).lib,, $(OBJS)\client_client.res
|
c0w32.obj $(CLIENT_OBJECTS),$@,, $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib import32.lib cw32$(__THREADSFLAG)$(__RUNTIME_LIBS_2).lib,, $(OBJS)\client_client.res
|
||||||
|
|
|
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if "$(USE_GUI)" == "1"
|
||||||
$(OBJS)\server.exe: $(SERVER_OBJECTS) $(OBJS)\server_server.res
|
$(OBJS)\server.exe: $(SERVER_OBJECTS) $(OBJS)\server_server.res
|
||||||
ilink32 -Tpe -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) -aa @&&|
|
ilink32 -Tpe -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) -aa @&&|
|
||||||
c0w32.obj $(SERVER_OBJECTS),$@,, $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib import32.lib cw32$(__THREADSFLAG)$(__RUNTIME_LIBS_0).lib,, $(OBJS)\server_server.res
|
c0w32.obj $(SERVER_OBJECTS),$@,, $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib import32.lib cw32$(__THREADSFLAG)$(__RUNTIME_LIBS_2).lib,, $(OBJS)\server_server.res
|
||||||
|
|
|
||||||
|
!endif
|
||||||
|
|
||||||
|
$(OBJS)\baseclient.exe: $(BASECLIENT_OBJECTS)
|
||||||
|
ilink32 -Tpe -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) -ap @&&|
|
||||||
|
c0x32.obj $(BASECLIENT_OBJECTS),$@,, $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib import32.lib cw32$(__THREADSFLAG)$(__RUNTIME_LIBS_2).lib,,
|
||||||
|
|
|
||||||
|
|
||||||
|
$(OBJS)\baseserver.exe: $(BASESERVER_OBJECTS)
|
||||||
|
ilink32 -Tpe -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) -ap @&&|
|
||||||
|
c0x32.obj $(BASESERVER_OBJECTS),$@,, $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib import32.lib cw32$(__THREADSFLAG)$(__RUNTIME_LIBS_2).lib,,
|
||||||
|
|
|
|
||||||
|
|
||||||
$(OBJS)\client_client.obj: .\client.cpp
|
$(OBJS)\client_client.obj: .\client.cpp
|
||||||
@@ -268,3 +316,9 @@ $(OBJS)\server_server.obj: .\server.cpp
|
|||||||
$(OBJS)\server_server.res: .\server.rc
|
$(OBJS)\server_server.res: .\server.rc
|
||||||
brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_0) $(__DEBUG_DEFINE_p_0) $(__EXCEPTIONS_DEFINE_p_0) $(__RTTI_DEFINE_p_0) $(__THREAD_DEFINE_p_0) $(__UNICODE_DEFINE_p_0) $(__MSLU_DEFINE_p_0) $(__GFXCTX_DEFINE_p_0) -i$(SETUPHDIR) -i.\..\..\include -i. $(__DLLFLAG_p_0) -i.\..\..\samples -dNOPCH $**
|
brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_0) $(__DEBUG_DEFINE_p_0) $(__EXCEPTIONS_DEFINE_p_0) $(__RTTI_DEFINE_p_0) $(__THREAD_DEFINE_p_0) $(__UNICODE_DEFINE_p_0) $(__MSLU_DEFINE_p_0) $(__GFXCTX_DEFINE_p_0) -i$(SETUPHDIR) -i.\..\..\include -i. $(__DLLFLAG_p_0) -i.\..\..\samples -dNOPCH $**
|
||||||
|
|
||||||
|
$(OBJS)\baseclient_baseclient.obj: .\baseclient.cpp
|
||||||
|
$(CXX) -q -c -P -o$@ $(BASECLIENT_CXXFLAGS) $**
|
||||||
|
|
||||||
|
$(OBJS)\baseserver_baseserver.obj: .\baseserver.cpp
|
||||||
|
$(CXX) -q -c -P -o$@ $(BASESERVER_CXXFLAGS) $**
|
||||||
|
|
||||||
|
@@ -40,6 +40,24 @@ SERVER_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) $(GCCFLAGS)
|
|||||||
SERVER_OBJECTS = \
|
SERVER_OBJECTS = \
|
||||||
$(OBJS)\server_server.o \
|
$(OBJS)\server_server.o \
|
||||||
$(OBJS)\server_server_rc.o
|
$(OBJS)\server_server_rc.o
|
||||||
|
BASECLIENT_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
|
||||||
|
$(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||||
|
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
|
||||||
|
$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \
|
||||||
|
$(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I.\..\..\include -W -Wall -I. \
|
||||||
|
$(__DLLFLAG_p) -DwxUSE_GUI=0 $(__RTTIFLAG) $(__EXCEPTIONSFLAG) \
|
||||||
|
-Wno-ctor-dtor-privacy $(CPPFLAGS) $(CXXFLAGS)
|
||||||
|
BASECLIENT_OBJECTS = \
|
||||||
|
$(OBJS)\baseclient_baseclient.o
|
||||||
|
BASESERVER_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
|
||||||
|
$(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||||
|
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
|
||||||
|
$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \
|
||||||
|
$(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I.\..\..\include -W -Wall -I. \
|
||||||
|
$(__DLLFLAG_p) -DwxUSE_GUI=0 $(__RTTIFLAG) $(__EXCEPTIONSFLAG) \
|
||||||
|
-Wno-ctor-dtor-privacy $(CPPFLAGS) $(CXXFLAGS)
|
||||||
|
BASESERVER_OBJECTS = \
|
||||||
|
$(OBJS)\baseserver_baseserver.o
|
||||||
|
|
||||||
### Conditionally set variables: ###
|
### Conditionally set variables: ###
|
||||||
|
|
||||||
@@ -81,6 +99,60 @@ endif
|
|||||||
ifeq ($(MONOLITHIC),1)
|
ifeq ($(MONOLITHIC),1)
|
||||||
EXTRALIBS_FOR_BASE =
|
EXTRALIBS_FOR_BASE =
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(USE_GUI),1)
|
||||||
|
__client___depname = $(OBJS)\client.exe
|
||||||
|
endif
|
||||||
|
ifeq ($(USE_GUI),1)
|
||||||
|
__server___depname = $(OBJS)\server.exe
|
||||||
|
endif
|
||||||
|
ifeq ($(WXUNIV),1)
|
||||||
|
__WXUNIV_DEFINE_p_0 = --define __WXUNIVERSAL__
|
||||||
|
endif
|
||||||
|
ifeq ($(BUILD),debug)
|
||||||
|
ifeq ($(DEBUG_FLAG),default)
|
||||||
|
__DEBUG_DEFINE_p_0 = --define __WXDEBUG__
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
ifeq ($(DEBUG_FLAG),1)
|
||||||
|
__DEBUG_DEFINE_p_0 = --define __WXDEBUG__
|
||||||
|
endif
|
||||||
|
ifeq ($(USE_EXCEPTIONS),0)
|
||||||
|
__EXCEPTIONS_DEFINE_p_0 = --define wxNO_EXCEPTIONS
|
||||||
|
endif
|
||||||
|
ifeq ($(USE_RTTI),0)
|
||||||
|
__RTTI_DEFINE_p_0 = --define wxNO_RTTI
|
||||||
|
endif
|
||||||
|
ifeq ($(USE_THREADS),0)
|
||||||
|
__THREAD_DEFINE_p_0 = --define wxNO_THREADS
|
||||||
|
endif
|
||||||
|
ifeq ($(UNICODE),0)
|
||||||
|
__UNICODE_DEFINE_p_0 = --define wxUSE_UNICODE=0
|
||||||
|
endif
|
||||||
|
ifeq ($(UNICODE),1)
|
||||||
|
__UNICODE_DEFINE_p_0 = --define _UNICODE
|
||||||
|
endif
|
||||||
|
ifeq ($(MSLU),1)
|
||||||
|
__MSLU_DEFINE_p_0 = --define wxUSE_UNICODE_MSLU=1
|
||||||
|
endif
|
||||||
|
ifeq ($(USE_GDIPLUS),1)
|
||||||
|
__GFXCTX_DEFINE_p_0 = --define wxUSE_GRAPHICS_CONTEXT=1
|
||||||
|
endif
|
||||||
|
ifeq ($(SHARED),1)
|
||||||
|
__DLLFLAG_p_0 = --define WXUSINGDLL
|
||||||
|
endif
|
||||||
|
ifeq ($(MONOLITHIC),0)
|
||||||
|
__WXLIB_CORE_p = \
|
||||||
|
-lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core
|
||||||
|
endif
|
||||||
|
ifeq ($(USE_GUI),1)
|
||||||
|
__LIB_TIFF_p = -lwxtiff$(WXDEBUGFLAG)
|
||||||
|
endif
|
||||||
|
ifeq ($(USE_GUI),1)
|
||||||
|
__LIB_JPEG_p = -lwxjpeg$(WXDEBUGFLAG)
|
||||||
|
endif
|
||||||
|
ifeq ($(USE_GUI),1)
|
||||||
|
__LIB_PNG_p = -lwxpng$(WXDEBUGFLAG)
|
||||||
|
endif
|
||||||
ifeq ($(BUILD),debug)
|
ifeq ($(BUILD),debug)
|
||||||
__OPTIMIZEFLAG = -O0
|
__OPTIMIZEFLAG = -O0
|
||||||
endif
|
endif
|
||||||
@@ -102,9 +174,6 @@ endif
|
|||||||
ifeq ($(WXUNIV),1)
|
ifeq ($(WXUNIV),1)
|
||||||
__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
|
__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
|
||||||
endif
|
endif
|
||||||
ifeq ($(WXUNIV),1)
|
|
||||||
__WXUNIV_DEFINE_p_0 = --define __WXUNIVERSAL__
|
|
||||||
endif
|
|
||||||
ifeq ($(BUILD),debug)
|
ifeq ($(BUILD),debug)
|
||||||
ifeq ($(DEBUG_FLAG),default)
|
ifeq ($(DEBUG_FLAG),default)
|
||||||
__DEBUG_DEFINE_p = -D__WXDEBUG__
|
__DEBUG_DEFINE_p = -D__WXDEBUG__
|
||||||
@@ -113,66 +182,30 @@ endif
|
|||||||
ifeq ($(DEBUG_FLAG),1)
|
ifeq ($(DEBUG_FLAG),1)
|
||||||
__DEBUG_DEFINE_p = -D__WXDEBUG__
|
__DEBUG_DEFINE_p = -D__WXDEBUG__
|
||||||
endif
|
endif
|
||||||
ifeq ($(BUILD),debug)
|
|
||||||
ifeq ($(DEBUG_FLAG),default)
|
|
||||||
__DEBUG_DEFINE_p_0 = --define __WXDEBUG__
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifeq ($(DEBUG_FLAG),1)
|
|
||||||
__DEBUG_DEFINE_p_0 = --define __WXDEBUG__
|
|
||||||
endif
|
|
||||||
ifeq ($(USE_EXCEPTIONS),0)
|
ifeq ($(USE_EXCEPTIONS),0)
|
||||||
__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
|
__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
|
||||||
endif
|
endif
|
||||||
ifeq ($(USE_EXCEPTIONS),0)
|
|
||||||
__EXCEPTIONS_DEFINE_p_0 = --define wxNO_EXCEPTIONS
|
|
||||||
endif
|
|
||||||
ifeq ($(USE_RTTI),0)
|
ifeq ($(USE_RTTI),0)
|
||||||
__RTTI_DEFINE_p = -DwxNO_RTTI
|
__RTTI_DEFINE_p = -DwxNO_RTTI
|
||||||
endif
|
endif
|
||||||
ifeq ($(USE_RTTI),0)
|
|
||||||
__RTTI_DEFINE_p_0 = --define wxNO_RTTI
|
|
||||||
endif
|
|
||||||
ifeq ($(USE_THREADS),0)
|
ifeq ($(USE_THREADS),0)
|
||||||
__THREAD_DEFINE_p = -DwxNO_THREADS
|
__THREAD_DEFINE_p = -DwxNO_THREADS
|
||||||
endif
|
endif
|
||||||
ifeq ($(USE_THREADS),0)
|
|
||||||
__THREAD_DEFINE_p_0 = --define wxNO_THREADS
|
|
||||||
endif
|
|
||||||
ifeq ($(UNICODE),0)
|
ifeq ($(UNICODE),0)
|
||||||
__UNICODE_DEFINE_p = -DwxUSE_UNICODE=0
|
__UNICODE_DEFINE_p = -DwxUSE_UNICODE=0
|
||||||
endif
|
endif
|
||||||
ifeq ($(UNICODE),1)
|
ifeq ($(UNICODE),1)
|
||||||
__UNICODE_DEFINE_p = -D_UNICODE
|
__UNICODE_DEFINE_p = -D_UNICODE
|
||||||
endif
|
endif
|
||||||
ifeq ($(UNICODE),0)
|
|
||||||
__UNICODE_DEFINE_p_0 = --define wxUSE_UNICODE=0
|
|
||||||
endif
|
|
||||||
ifeq ($(UNICODE),1)
|
|
||||||
__UNICODE_DEFINE_p_0 = --define _UNICODE
|
|
||||||
endif
|
|
||||||
ifeq ($(MSLU),1)
|
ifeq ($(MSLU),1)
|
||||||
__MSLU_DEFINE_p = -DwxUSE_UNICODE_MSLU=1
|
__MSLU_DEFINE_p = -DwxUSE_UNICODE_MSLU=1
|
||||||
endif
|
endif
|
||||||
ifeq ($(MSLU),1)
|
|
||||||
__MSLU_DEFINE_p_0 = --define wxUSE_UNICODE_MSLU=1
|
|
||||||
endif
|
|
||||||
ifeq ($(USE_GDIPLUS),1)
|
ifeq ($(USE_GDIPLUS),1)
|
||||||
__GFXCTX_DEFINE_p = -DwxUSE_GRAPHICS_CONTEXT=1
|
__GFXCTX_DEFINE_p = -DwxUSE_GRAPHICS_CONTEXT=1
|
||||||
endif
|
endif
|
||||||
ifeq ($(USE_GDIPLUS),1)
|
|
||||||
__GFXCTX_DEFINE_p_0 = --define wxUSE_GRAPHICS_CONTEXT=1
|
|
||||||
endif
|
|
||||||
ifeq ($(SHARED),1)
|
ifeq ($(SHARED),1)
|
||||||
__DLLFLAG_p = -DWXUSINGDLL
|
__DLLFLAG_p = -DWXUSINGDLL
|
||||||
endif
|
endif
|
||||||
ifeq ($(SHARED),1)
|
|
||||||
__DLLFLAG_p_0 = --define WXUSINGDLL
|
|
||||||
endif
|
|
||||||
ifeq ($(MONOLITHIC),0)
|
|
||||||
__WXLIB_CORE_p = \
|
|
||||||
-lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core
|
|
||||||
endif
|
|
||||||
ifeq ($(MONOLITHIC),0)
|
ifeq ($(MONOLITHIC),0)
|
||||||
__WXLIB_NET_p = \
|
__WXLIB_NET_p = \
|
||||||
-lwxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net
|
-lwxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net
|
||||||
@@ -185,15 +218,6 @@ ifeq ($(MONOLITHIC),1)
|
|||||||
__WXLIB_MONO_p = \
|
__WXLIB_MONO_p = \
|
||||||
-lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)
|
-lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)
|
||||||
endif
|
endif
|
||||||
ifeq ($(USE_GUI),1)
|
|
||||||
__LIB_TIFF_p = -lwxtiff$(WXDEBUGFLAG)
|
|
||||||
endif
|
|
||||||
ifeq ($(USE_GUI),1)
|
|
||||||
__LIB_JPEG_p = -lwxjpeg$(WXDEBUGFLAG)
|
|
||||||
endif
|
|
||||||
ifeq ($(USE_GUI),1)
|
|
||||||
__LIB_PNG_p = -lwxpng$(WXDEBUGFLAG)
|
|
||||||
endif
|
|
||||||
ifeq ($(MSLU),1)
|
ifeq ($(MSLU),1)
|
||||||
__UNICOWS_LIB_p = -lunicows
|
__UNICOWS_LIB_p = -lunicows
|
||||||
endif
|
endif
|
||||||
@@ -230,19 +254,31 @@ $(OBJS):
|
|||||||
|
|
||||||
### Targets: ###
|
### Targets: ###
|
||||||
|
|
||||||
all: $(OBJS)\client.exe $(OBJS)\server.exe
|
all: $(__client___depname) $(__server___depname) $(OBJS)\baseclient.exe $(OBJS)\baseserver.exe
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-if exist $(OBJS)\*.o del $(OBJS)\*.o
|
-if exist $(OBJS)\*.o del $(OBJS)\*.o
|
||||||
-if exist $(OBJS)\*.d del $(OBJS)\*.d
|
-if exist $(OBJS)\*.d del $(OBJS)\*.d
|
||||||
-if exist $(OBJS)\client.exe del $(OBJS)\client.exe
|
-if exist $(OBJS)\client.exe del $(OBJS)\client.exe
|
||||||
-if exist $(OBJS)\server.exe del $(OBJS)\server.exe
|
-if exist $(OBJS)\server.exe del $(OBJS)\server.exe
|
||||||
|
-if exist $(OBJS)\baseclient.exe del $(OBJS)\baseclient.exe
|
||||||
|
-if exist $(OBJS)\baseserver.exe del $(OBJS)\baseserver.exe
|
||||||
|
|
||||||
|
ifeq ($(USE_GUI),1)
|
||||||
$(OBJS)\client.exe: $(CLIENT_OBJECTS) $(OBJS)\client_client_rc.o
|
$(OBJS)\client.exe: $(CLIENT_OBJECTS) $(OBJS)\client_client_rc.o
|
||||||
$(CXX) -o $@ $(CLIENT_OBJECTS) $(LDFLAGS) $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) -Wl,--subsystem,windows -mwindows $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32
|
$(CXX) -o $@ $(CLIENT_OBJECTS) $(LDFLAGS) $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) -Wl,--subsystem,windows -mwindows $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(USE_GUI),1)
|
||||||
$(OBJS)\server.exe: $(SERVER_OBJECTS) $(OBJS)\server_server_rc.o
|
$(OBJS)\server.exe: $(SERVER_OBJECTS) $(OBJS)\server_server_rc.o
|
||||||
$(CXX) -o $@ $(SERVER_OBJECTS) $(LDFLAGS) $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) -Wl,--subsystem,windows -mwindows $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32
|
$(CXX) -o $@ $(SERVER_OBJECTS) $(LDFLAGS) $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) -Wl,--subsystem,windows -mwindows $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(OBJS)\baseclient.exe: $(BASECLIENT_OBJECTS)
|
||||||
|
$(CXX) -o $@ $(BASECLIENT_OBJECTS) $(LDFLAGS) $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32
|
||||||
|
|
||||||
|
$(OBJS)\baseserver.exe: $(BASESERVER_OBJECTS)
|
||||||
|
$(CXX) -o $@ $(BASESERVER_OBJECTS) $(LDFLAGS) $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32
|
||||||
|
|
||||||
$(OBJS)\client_client.o: ./client.cpp
|
$(OBJS)\client_client.o: ./client.cpp
|
||||||
$(CXX) -c -o $@ $(CLIENT_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(CLIENT_CXXFLAGS) $(CPPDEPS) $<
|
||||||
@@ -256,6 +292,12 @@ $(OBJS)\server_server.o: ./server.cpp
|
|||||||
$(OBJS)\server_server_rc.o: ./server.rc
|
$(OBJS)\server_server_rc.o: ./server.rc
|
||||||
windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_0) $(__DEBUG_DEFINE_p_0) $(__EXCEPTIONS_DEFINE_p_0) $(__RTTI_DEFINE_p_0) $(__THREAD_DEFINE_p_0) $(__UNICODE_DEFINE_p_0) $(__MSLU_DEFINE_p_0) $(__GFXCTX_DEFINE_p_0) --include-dir $(SETUPHDIR) --include-dir ./../../include --include-dir . $(__DLLFLAG_p_0) --include-dir ./../../samples --define NOPCH
|
windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_0) $(__DEBUG_DEFINE_p_0) $(__EXCEPTIONS_DEFINE_p_0) $(__RTTI_DEFINE_p_0) $(__THREAD_DEFINE_p_0) $(__UNICODE_DEFINE_p_0) $(__MSLU_DEFINE_p_0) $(__GFXCTX_DEFINE_p_0) --include-dir $(SETUPHDIR) --include-dir ./../../include --include-dir . $(__DLLFLAG_p_0) --include-dir ./../../samples --define NOPCH
|
||||||
|
|
||||||
|
$(OBJS)\baseclient_baseclient.o: ./baseclient.cpp
|
||||||
|
$(CXX) -c -o $@ $(BASECLIENT_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
$(OBJS)\baseserver_baseserver.o: ./baseserver.cpp
|
||||||
|
$(CXX) -c -o $@ $(BASESERVER_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
.PHONY: all clean
|
.PHONY: all clean
|
||||||
|
|
||||||
|
|
||||||
|
@@ -62,6 +62,14 @@ SERVER_CXXFLAGS = -I. `$(WX_CONFIG) --cxxflags $(WX_CONFIG_FLAGS)` $(CPPFLAGS) \
|
|||||||
$(CXXFLAGS)
|
$(CXXFLAGS)
|
||||||
SERVER_OBJECTS = \
|
SERVER_OBJECTS = \
|
||||||
server_server.o
|
server_server.o
|
||||||
|
BASECLIENT_CXXFLAGS = -I. `$(WX_CONFIG) --cxxflags $(WX_CONFIG_FLAGS)` \
|
||||||
|
$(CPPFLAGS) $(CXXFLAGS)
|
||||||
|
BASECLIENT_OBJECTS = \
|
||||||
|
baseclient_baseclient.o
|
||||||
|
BASESERVER_CXXFLAGS = -I. `$(WX_CONFIG) --cxxflags $(WX_CONFIG_FLAGS)` \
|
||||||
|
$(CPPFLAGS) $(CXXFLAGS)
|
||||||
|
BASESERVER_OBJECTS = \
|
||||||
|
baseserver_baseserver.o
|
||||||
|
|
||||||
### Conditionally set variables: ###
|
### Conditionally set variables: ###
|
||||||
|
|
||||||
@@ -87,7 +95,7 @@ endif
|
|||||||
|
|
||||||
### Targets: ###
|
### Targets: ###
|
||||||
|
|
||||||
all: test_for_selected_wxbuild client server
|
all: test_for_selected_wxbuild client server baseclient baseserver
|
||||||
|
|
||||||
install: all
|
install: all
|
||||||
|
|
||||||
@@ -98,6 +106,8 @@ clean:
|
|||||||
rm -f ./*.d
|
rm -f ./*.d
|
||||||
rm -f client
|
rm -f client
|
||||||
rm -f server
|
rm -f server
|
||||||
|
rm -f baseclient
|
||||||
|
rm -f baseserver
|
||||||
|
|
||||||
test_for_selected_wxbuild:
|
test_for_selected_wxbuild:
|
||||||
@$(WX_CONFIG) $(WX_CONFIG_FLAGS)
|
@$(WX_CONFIG) $(WX_CONFIG_FLAGS)
|
||||||
@@ -108,12 +118,24 @@ client: $(CLIENT_OBJECTS)
|
|||||||
server: $(SERVER_OBJECTS)
|
server: $(SERVER_OBJECTS)
|
||||||
$(CXX) -o $@ $(SERVER_OBJECTS) $(LDFLAGS) `$(WX_CONFIG) $(WX_CONFIG_FLAGS) --libs core,net,base`
|
$(CXX) -o $@ $(SERVER_OBJECTS) $(LDFLAGS) `$(WX_CONFIG) $(WX_CONFIG_FLAGS) --libs core,net,base`
|
||||||
|
|
||||||
|
baseclient: $(BASECLIENT_OBJECTS)
|
||||||
|
$(CXX) -o $@ $(BASECLIENT_OBJECTS) $(LDFLAGS) `$(WX_CONFIG) $(WX_CONFIG_FLAGS) --libs net,base`
|
||||||
|
|
||||||
|
baseserver: $(BASESERVER_OBJECTS)
|
||||||
|
$(CXX) -o $@ $(BASESERVER_OBJECTS) $(LDFLAGS) `$(WX_CONFIG) $(WX_CONFIG_FLAGS) --libs net,base`
|
||||||
|
|
||||||
client_client.o: ./client.cpp
|
client_client.o: ./client.cpp
|
||||||
$(CXX) -c -o $@ $(CLIENT_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(CLIENT_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
server_server.o: ./server.cpp
|
server_server.o: ./server.cpp
|
||||||
$(CXX) -c -o $@ $(SERVER_CXXFLAGS) $(CPPDEPS) $<
|
$(CXX) -c -o $@ $(SERVER_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
baseclient_baseclient.o: ./baseclient.cpp
|
||||||
|
$(CXX) -c -o $@ $(BASECLIENT_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
|
baseserver_baseserver.o: ./baseserver.cpp
|
||||||
|
$(CXX) -c -o $@ $(BASESERVER_CXXFLAGS) $(CPPDEPS) $<
|
||||||
|
|
||||||
.PHONY: all install uninstall clean
|
.PHONY: all install uninstall clean
|
||||||
|
|
||||||
|
|
||||||
|
@@ -42,6 +42,26 @@ SERVER_CXXFLAGS = /M$(__RUNTIME_LIBS_22)$(__DEBUGRUNTIME) /DWIN32 \
|
|||||||
SERVER_OBJECTS = \
|
SERVER_OBJECTS = \
|
||||||
$(OBJS)\server_server.obj \
|
$(OBJS)\server_server.obj \
|
||||||
$(OBJS)\server_server.res
|
$(OBJS)\server_server.res
|
||||||
|
BASECLIENT_CXXFLAGS = /M$(__RUNTIME_LIBS_36)$(__DEBUGRUNTIME) /DWIN32 \
|
||||||
|
$(__DEBUGINFO) /Fd$(OBJS)\baseclient.pdb $(____DEBUGRUNTIME) \
|
||||||
|
$(__OPTIMIZEFLAG) $(__NO_VC_CRTDBG_p) /D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||||
|
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
|
||||||
|
$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \
|
||||||
|
$(__GFXCTX_DEFINE_p) /I$(SETUPHDIR) /I.\..\..\include /W4 /I. $(__DLLFLAG_p) \
|
||||||
|
/D_CONSOLE /DwxUSE_GUI=0 $(__RTTIFLAG) $(__EXCEPTIONSFLAG) $(CPPFLAGS) \
|
||||||
|
$(CXXFLAGS)
|
||||||
|
BASECLIENT_OBJECTS = \
|
||||||
|
$(OBJS)\baseclient_baseclient.obj
|
||||||
|
BASESERVER_CXXFLAGS = /M$(__RUNTIME_LIBS_50)$(__DEBUGRUNTIME) /DWIN32 \
|
||||||
|
$(__DEBUGINFO) /Fd$(OBJS)\baseserver.pdb $(____DEBUGRUNTIME) \
|
||||||
|
$(__OPTIMIZEFLAG) $(__NO_VC_CRTDBG_p) /D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||||
|
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
|
||||||
|
$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \
|
||||||
|
$(__GFXCTX_DEFINE_p) /I$(SETUPHDIR) /I.\..\..\include /W4 /I. $(__DLLFLAG_p) \
|
||||||
|
/D_CONSOLE /DwxUSE_GUI=0 $(__RTTIFLAG) $(__EXCEPTIONSFLAG) $(CPPFLAGS) \
|
||||||
|
$(CXXFLAGS)
|
||||||
|
BASESERVER_OBJECTS = \
|
||||||
|
$(OBJS)\baseserver_baseserver.obj
|
||||||
|
|
||||||
### Conditionally set variables: ###
|
### Conditionally set variables: ###
|
||||||
|
|
||||||
@@ -102,18 +122,100 @@ EXTRALIBS_FOR_BASE =
|
|||||||
!if "$(MONOLITHIC)" == "1"
|
!if "$(MONOLITHIC)" == "1"
|
||||||
EXTRALIBS_FOR_BASE =
|
EXTRALIBS_FOR_BASE =
|
||||||
!endif
|
!endif
|
||||||
|
!if "$(USE_GUI)" == "1"
|
||||||
|
__client___depname = $(OBJS)\client.exe
|
||||||
|
!endif
|
||||||
!if "$(RUNTIME_LIBS)" == "dynamic"
|
!if "$(RUNTIME_LIBS)" == "dynamic"
|
||||||
__RUNTIME_LIBS_8 = D
|
__RUNTIME_LIBS_8 = D
|
||||||
!endif
|
!endif
|
||||||
!if "$(RUNTIME_LIBS)" == "static"
|
!if "$(RUNTIME_LIBS)" == "static"
|
||||||
__RUNTIME_LIBS_8 = $(__THREADSFLAG)
|
__RUNTIME_LIBS_8 = $(__THREADSFLAG)
|
||||||
!endif
|
!endif
|
||||||
|
!if "$(USE_GUI)" == "1"
|
||||||
|
__server___depname = $(OBJS)\server.exe
|
||||||
|
!endif
|
||||||
!if "$(RUNTIME_LIBS)" == "dynamic"
|
!if "$(RUNTIME_LIBS)" == "dynamic"
|
||||||
__RUNTIME_LIBS_22 = D
|
__RUNTIME_LIBS_22 = D
|
||||||
!endif
|
!endif
|
||||||
!if "$(RUNTIME_LIBS)" == "static"
|
!if "$(RUNTIME_LIBS)" == "static"
|
||||||
__RUNTIME_LIBS_22 = $(__THREADSFLAG)
|
__RUNTIME_LIBS_22 = $(__THREADSFLAG)
|
||||||
!endif
|
!endif
|
||||||
|
!if "$(RUNTIME_LIBS)" == "dynamic"
|
||||||
|
__RUNTIME_LIBS_36 = D
|
||||||
|
!endif
|
||||||
|
!if "$(RUNTIME_LIBS)" == "static"
|
||||||
|
__RUNTIME_LIBS_36 = $(__THREADSFLAG)
|
||||||
|
!endif
|
||||||
|
!if "$(RUNTIME_LIBS)" == "dynamic"
|
||||||
|
__RUNTIME_LIBS_50 = D
|
||||||
|
!endif
|
||||||
|
!if "$(RUNTIME_LIBS)" == "static"
|
||||||
|
__RUNTIME_LIBS_50 = $(__THREADSFLAG)
|
||||||
|
!endif
|
||||||
|
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default"
|
||||||
|
____DEBUGRUNTIME_0 = /d _DEBUG
|
||||||
|
!endif
|
||||||
|
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
|
||||||
|
____DEBUGRUNTIME_0 =
|
||||||
|
!endif
|
||||||
|
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
|
||||||
|
____DEBUGRUNTIME_0 =
|
||||||
|
!endif
|
||||||
|
!if "$(DEBUG_RUNTIME_LIBS)" == "1"
|
||||||
|
____DEBUGRUNTIME_0 = /d _DEBUG
|
||||||
|
!endif
|
||||||
|
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "0"
|
||||||
|
__NO_VC_CRTDBG_p_0 = /d __NO_VC_CRTDBG__
|
||||||
|
!endif
|
||||||
|
!if "$(BUILD)" == "release" && "$(DEBUG_FLAG)" == "1"
|
||||||
|
__NO_VC_CRTDBG_p_0 = /d __NO_VC_CRTDBG__
|
||||||
|
!endif
|
||||||
|
!if "$(WXUNIV)" == "1"
|
||||||
|
__WXUNIV_DEFINE_p_0 = /d __WXUNIVERSAL__
|
||||||
|
!endif
|
||||||
|
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
|
||||||
|
__DEBUG_DEFINE_p_0 = /d __WXDEBUG__
|
||||||
|
!endif
|
||||||
|
!if "$(DEBUG_FLAG)" == "1"
|
||||||
|
__DEBUG_DEFINE_p_0 = /d __WXDEBUG__
|
||||||
|
!endif
|
||||||
|
!if "$(USE_EXCEPTIONS)" == "0"
|
||||||
|
__EXCEPTIONS_DEFINE_p_0 = /d wxNO_EXCEPTIONS
|
||||||
|
!endif
|
||||||
|
!if "$(USE_RTTI)" == "0"
|
||||||
|
__RTTI_DEFINE_p_0 = /d wxNO_RTTI
|
||||||
|
!endif
|
||||||
|
!if "$(USE_THREADS)" == "0"
|
||||||
|
__THREAD_DEFINE_p_0 = /d wxNO_THREADS
|
||||||
|
!endif
|
||||||
|
!if "$(UNICODE)" == "0"
|
||||||
|
__UNICODE_DEFINE_p_0 = /d wxUSE_UNICODE=0
|
||||||
|
!endif
|
||||||
|
!if "$(UNICODE)" == "1"
|
||||||
|
__UNICODE_DEFINE_p_0 = /d _UNICODE
|
||||||
|
!endif
|
||||||
|
!if "$(MSLU)" == "1"
|
||||||
|
__MSLU_DEFINE_p_0 = /d wxUSE_UNICODE_MSLU=1
|
||||||
|
!endif
|
||||||
|
!if "$(USE_GDIPLUS)" == "1"
|
||||||
|
__GFXCTX_DEFINE_p_0 = /d wxUSE_GRAPHICS_CONTEXT=1
|
||||||
|
!endif
|
||||||
|
!if "$(SHARED)" == "1"
|
||||||
|
__DLLFLAG_p_0 = /d WXUSINGDLL
|
||||||
|
!endif
|
||||||
|
!if "$(MONOLITHIC)" == "0"
|
||||||
|
__WXLIB_CORE_p = \
|
||||||
|
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib
|
||||||
|
!endif
|
||||||
|
!if "$(USE_GUI)" == "1"
|
||||||
|
__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib
|
||||||
|
!endif
|
||||||
|
!if "$(USE_GUI)" == "1"
|
||||||
|
__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib
|
||||||
|
!endif
|
||||||
|
!if "$(USE_GUI)" == "1"
|
||||||
|
__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib
|
||||||
|
!endif
|
||||||
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
|
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
|
||||||
__DEBUGINFO = /Zi
|
__DEBUGINFO = /Zi
|
||||||
!endif
|
!endif
|
||||||
@@ -127,16 +229,16 @@ __DEBUGINFO =
|
|||||||
__DEBUGINFO = /Zi
|
__DEBUGINFO = /Zi
|
||||||
!endif
|
!endif
|
||||||
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
|
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
|
||||||
__DEBUGINFO_1 = /DEBUG
|
__DEBUGINFO_3 = /DEBUG
|
||||||
!endif
|
!endif
|
||||||
!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default"
|
!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default"
|
||||||
__DEBUGINFO_1 =
|
__DEBUGINFO_3 =
|
||||||
!endif
|
!endif
|
||||||
!if "$(DEBUG_INFO)" == "0"
|
!if "$(DEBUG_INFO)" == "0"
|
||||||
__DEBUGINFO_1 =
|
__DEBUGINFO_3 =
|
||||||
!endif
|
!endif
|
||||||
!if "$(DEBUG_INFO)" == "1"
|
!if "$(DEBUG_INFO)" == "1"
|
||||||
__DEBUGINFO_1 = /DEBUG
|
__DEBUGINFO_3 = /DEBUG
|
||||||
!endif
|
!endif
|
||||||
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default"
|
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default"
|
||||||
____DEBUGRUNTIME = /D_DEBUG
|
____DEBUGRUNTIME = /D_DEBUG
|
||||||
@@ -151,18 +253,6 @@ ____DEBUGRUNTIME =
|
|||||||
____DEBUGRUNTIME = /D_DEBUG
|
____DEBUGRUNTIME = /D_DEBUG
|
||||||
!endif
|
!endif
|
||||||
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default"
|
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default"
|
||||||
____DEBUGRUNTIME_0 = /d _DEBUG
|
|
||||||
!endif
|
|
||||||
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
|
|
||||||
____DEBUGRUNTIME_0 =
|
|
||||||
!endif
|
|
||||||
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
|
|
||||||
____DEBUGRUNTIME_0 =
|
|
||||||
!endif
|
|
||||||
!if "$(DEBUG_RUNTIME_LIBS)" == "1"
|
|
||||||
____DEBUGRUNTIME_0 = /d _DEBUG
|
|
||||||
!endif
|
|
||||||
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default"
|
|
||||||
__DEBUGRUNTIME = d
|
__DEBUGRUNTIME = d
|
||||||
!endif
|
!endif
|
||||||
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
|
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
|
||||||
@@ -204,82 +294,39 @@ __NO_VC_CRTDBG_p = /D__NO_VC_CRTDBG__
|
|||||||
!if "$(BUILD)" == "release" && "$(DEBUG_FLAG)" == "1"
|
!if "$(BUILD)" == "release" && "$(DEBUG_FLAG)" == "1"
|
||||||
__NO_VC_CRTDBG_p = /D__NO_VC_CRTDBG__
|
__NO_VC_CRTDBG_p = /D__NO_VC_CRTDBG__
|
||||||
!endif
|
!endif
|
||||||
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "0"
|
|
||||||
__NO_VC_CRTDBG_p_0 = /d __NO_VC_CRTDBG__
|
|
||||||
!endif
|
|
||||||
!if "$(BUILD)" == "release" && "$(DEBUG_FLAG)" == "1"
|
|
||||||
__NO_VC_CRTDBG_p_0 = /d __NO_VC_CRTDBG__
|
|
||||||
!endif
|
|
||||||
!if "$(WXUNIV)" == "1"
|
!if "$(WXUNIV)" == "1"
|
||||||
__WXUNIV_DEFINE_p = /D__WXUNIVERSAL__
|
__WXUNIV_DEFINE_p = /D__WXUNIVERSAL__
|
||||||
!endif
|
!endif
|
||||||
!if "$(WXUNIV)" == "1"
|
|
||||||
__WXUNIV_DEFINE_p_0 = /d __WXUNIVERSAL__
|
|
||||||
!endif
|
|
||||||
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
|
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
|
||||||
__DEBUG_DEFINE_p = /D__WXDEBUG__
|
__DEBUG_DEFINE_p = /D__WXDEBUG__
|
||||||
!endif
|
!endif
|
||||||
!if "$(DEBUG_FLAG)" == "1"
|
!if "$(DEBUG_FLAG)" == "1"
|
||||||
__DEBUG_DEFINE_p = /D__WXDEBUG__
|
__DEBUG_DEFINE_p = /D__WXDEBUG__
|
||||||
!endif
|
!endif
|
||||||
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
|
|
||||||
__DEBUG_DEFINE_p_0 = /d __WXDEBUG__
|
|
||||||
!endif
|
|
||||||
!if "$(DEBUG_FLAG)" == "1"
|
|
||||||
__DEBUG_DEFINE_p_0 = /d __WXDEBUG__
|
|
||||||
!endif
|
|
||||||
!if "$(USE_EXCEPTIONS)" == "0"
|
!if "$(USE_EXCEPTIONS)" == "0"
|
||||||
__EXCEPTIONS_DEFINE_p = /DwxNO_EXCEPTIONS
|
__EXCEPTIONS_DEFINE_p = /DwxNO_EXCEPTIONS
|
||||||
!endif
|
!endif
|
||||||
!if "$(USE_EXCEPTIONS)" == "0"
|
|
||||||
__EXCEPTIONS_DEFINE_p_0 = /d wxNO_EXCEPTIONS
|
|
||||||
!endif
|
|
||||||
!if "$(USE_RTTI)" == "0"
|
!if "$(USE_RTTI)" == "0"
|
||||||
__RTTI_DEFINE_p = /DwxNO_RTTI
|
__RTTI_DEFINE_p = /DwxNO_RTTI
|
||||||
!endif
|
!endif
|
||||||
!if "$(USE_RTTI)" == "0"
|
|
||||||
__RTTI_DEFINE_p_0 = /d wxNO_RTTI
|
|
||||||
!endif
|
|
||||||
!if "$(USE_THREADS)" == "0"
|
!if "$(USE_THREADS)" == "0"
|
||||||
__THREAD_DEFINE_p = /DwxNO_THREADS
|
__THREAD_DEFINE_p = /DwxNO_THREADS
|
||||||
!endif
|
!endif
|
||||||
!if "$(USE_THREADS)" == "0"
|
|
||||||
__THREAD_DEFINE_p_0 = /d wxNO_THREADS
|
|
||||||
!endif
|
|
||||||
!if "$(UNICODE)" == "0"
|
!if "$(UNICODE)" == "0"
|
||||||
__UNICODE_DEFINE_p = /DwxUSE_UNICODE=0
|
__UNICODE_DEFINE_p = /DwxUSE_UNICODE=0
|
||||||
!endif
|
!endif
|
||||||
!if "$(UNICODE)" == "1"
|
!if "$(UNICODE)" == "1"
|
||||||
__UNICODE_DEFINE_p = /D_UNICODE
|
__UNICODE_DEFINE_p = /D_UNICODE
|
||||||
!endif
|
!endif
|
||||||
!if "$(UNICODE)" == "0"
|
|
||||||
__UNICODE_DEFINE_p_0 = /d wxUSE_UNICODE=0
|
|
||||||
!endif
|
|
||||||
!if "$(UNICODE)" == "1"
|
|
||||||
__UNICODE_DEFINE_p_0 = /d _UNICODE
|
|
||||||
!endif
|
|
||||||
!if "$(MSLU)" == "1"
|
!if "$(MSLU)" == "1"
|
||||||
__MSLU_DEFINE_p = /DwxUSE_UNICODE_MSLU=1
|
__MSLU_DEFINE_p = /DwxUSE_UNICODE_MSLU=1
|
||||||
!endif
|
!endif
|
||||||
!if "$(MSLU)" == "1"
|
|
||||||
__MSLU_DEFINE_p_0 = /d wxUSE_UNICODE_MSLU=1
|
|
||||||
!endif
|
|
||||||
!if "$(USE_GDIPLUS)" == "1"
|
!if "$(USE_GDIPLUS)" == "1"
|
||||||
__GFXCTX_DEFINE_p = /DwxUSE_GRAPHICS_CONTEXT=1
|
__GFXCTX_DEFINE_p = /DwxUSE_GRAPHICS_CONTEXT=1
|
||||||
!endif
|
!endif
|
||||||
!if "$(USE_GDIPLUS)" == "1"
|
|
||||||
__GFXCTX_DEFINE_p_0 = /d wxUSE_GRAPHICS_CONTEXT=1
|
|
||||||
!endif
|
|
||||||
!if "$(SHARED)" == "1"
|
!if "$(SHARED)" == "1"
|
||||||
__DLLFLAG_p = /DWXUSINGDLL
|
__DLLFLAG_p = /DWXUSINGDLL
|
||||||
!endif
|
!endif
|
||||||
!if "$(SHARED)" == "1"
|
|
||||||
__DLLFLAG_p_0 = /d WXUSINGDLL
|
|
||||||
!endif
|
|
||||||
!if "$(MONOLITHIC)" == "0"
|
|
||||||
__WXLIB_CORE_p = \
|
|
||||||
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib
|
|
||||||
!endif
|
|
||||||
!if "$(MONOLITHIC)" == "0"
|
!if "$(MONOLITHIC)" == "0"
|
||||||
__WXLIB_NET_p = \
|
__WXLIB_NET_p = \
|
||||||
wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net.lib
|
wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net.lib
|
||||||
@@ -292,15 +339,6 @@ __WXLIB_BASE_p = \
|
|||||||
__WXLIB_MONO_p = \
|
__WXLIB_MONO_p = \
|
||||||
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
|
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
|
||||||
!endif
|
!endif
|
||||||
!if "$(USE_GUI)" == "1"
|
|
||||||
__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib
|
|
||||||
!endif
|
|
||||||
!if "$(USE_GUI)" == "1"
|
|
||||||
__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib
|
|
||||||
!endif
|
|
||||||
!if "$(USE_GUI)" == "1"
|
|
||||||
__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib
|
|
||||||
!endif
|
|
||||||
!if "$(MSLU)" == "1"
|
!if "$(MSLU)" == "1"
|
||||||
__UNICOWS_LIB_p = unicows.lib
|
__UNICOWS_LIB_p = unicows.lib
|
||||||
!endif
|
!endif
|
||||||
@@ -315,7 +353,7 @@ $(OBJS):
|
|||||||
|
|
||||||
### Targets: ###
|
### Targets: ###
|
||||||
|
|
||||||
all: $(OBJS)\client.exe $(OBJS)\server.exe
|
all: $(__client___depname) $(__server___depname) $(OBJS)\baseclient.exe $(OBJS)\baseserver.exe
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-if exist $(OBJS)\*.obj del $(OBJS)\*.obj
|
-if exist $(OBJS)\*.obj del $(OBJS)\*.obj
|
||||||
@@ -327,16 +365,36 @@ clean:
|
|||||||
-if exist $(OBJS)\server.exe del $(OBJS)\server.exe
|
-if exist $(OBJS)\server.exe del $(OBJS)\server.exe
|
||||||
-if exist $(OBJS)\server.ilk del $(OBJS)\server.ilk
|
-if exist $(OBJS)\server.ilk del $(OBJS)\server.ilk
|
||||||
-if exist $(OBJS)\server.pdb del $(OBJS)\server.pdb
|
-if exist $(OBJS)\server.pdb del $(OBJS)\server.pdb
|
||||||
|
-if exist $(OBJS)\baseclient.exe del $(OBJS)\baseclient.exe
|
||||||
|
-if exist $(OBJS)\baseclient.ilk del $(OBJS)\baseclient.ilk
|
||||||
|
-if exist $(OBJS)\baseclient.pdb del $(OBJS)\baseclient.pdb
|
||||||
|
-if exist $(OBJS)\baseserver.exe del $(OBJS)\baseserver.exe
|
||||||
|
-if exist $(OBJS)\baseserver.ilk del $(OBJS)\baseserver.ilk
|
||||||
|
-if exist $(OBJS)\baseserver.pdb del $(OBJS)\baseserver.pdb
|
||||||
|
|
||||||
|
!if "$(USE_GUI)" == "1"
|
||||||
$(OBJS)\client.exe: $(CLIENT_OBJECTS) $(OBJS)\client_client.res
|
$(OBJS)\client.exe: $(CLIENT_OBJECTS) $(OBJS)\client_client.res
|
||||||
link /NOLOGO /OUT:$@ $(LDFLAGS) $(__DEBUGINFO_1) $(LINK_TARGET_CPU) /LIBPATH:$(LIBDIRNAME) /SUBSYSTEM:WINDOWS @<<
|
link /NOLOGO /OUT:$@ $(LDFLAGS) $(__DEBUGINFO_3) $(LINK_TARGET_CPU) /LIBPATH:$(LIBDIRNAME) /SUBSYSTEM:WINDOWS @<<
|
||||||
$(CLIENT_OBJECTS) $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib
|
$(CLIENT_OBJECTS) $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib
|
||||||
<<
|
<<
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!if "$(USE_GUI)" == "1"
|
||||||
$(OBJS)\server.exe: $(SERVER_OBJECTS) $(OBJS)\server_server.res
|
$(OBJS)\server.exe: $(SERVER_OBJECTS) $(OBJS)\server_server.res
|
||||||
link /NOLOGO /OUT:$@ $(LDFLAGS) $(__DEBUGINFO_1) $(LINK_TARGET_CPU) /LIBPATH:$(LIBDIRNAME) /SUBSYSTEM:WINDOWS @<<
|
link /NOLOGO /OUT:$@ $(LDFLAGS) $(__DEBUGINFO_3) $(LINK_TARGET_CPU) /LIBPATH:$(LIBDIRNAME) /SUBSYSTEM:WINDOWS @<<
|
||||||
$(SERVER_OBJECTS) $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib
|
$(SERVER_OBJECTS) $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib
|
||||||
<<
|
<<
|
||||||
|
!endif
|
||||||
|
|
||||||
|
$(OBJS)\baseclient.exe: $(BASECLIENT_OBJECTS)
|
||||||
|
link /NOLOGO /OUT:$@ $(LDFLAGS) $(__DEBUGINFO_3) $(LINK_TARGET_CPU) /LIBPATH:$(LIBDIRNAME) /SUBSYSTEM:CONSOLE @<<
|
||||||
|
$(BASECLIENT_OBJECTS) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib
|
||||||
|
<<
|
||||||
|
|
||||||
|
$(OBJS)\baseserver.exe: $(BASESERVER_OBJECTS)
|
||||||
|
link /NOLOGO /OUT:$@ $(LDFLAGS) $(__DEBUGINFO_3) $(LINK_TARGET_CPU) /LIBPATH:$(LIBDIRNAME) /SUBSYSTEM:CONSOLE @<<
|
||||||
|
$(BASESERVER_OBJECTS) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib
|
||||||
|
<<
|
||||||
|
|
||||||
$(OBJS)\client_client.obj: .\client.cpp
|
$(OBJS)\client_client.obj: .\client.cpp
|
||||||
$(CXX) /c /nologo /TP /Fo$@ $(CLIENT_CXXFLAGS) $**
|
$(CXX) /c /nologo /TP /Fo$@ $(CLIENT_CXXFLAGS) $**
|
||||||
@@ -350,3 +408,9 @@ $(OBJS)\server_server.obj: .\server.cpp
|
|||||||
$(OBJS)\server_server.res: .\server.rc
|
$(OBJS)\server_server.res: .\server.rc
|
||||||
rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_0) $(__NO_VC_CRTDBG_p_0) /d __WXMSW__ $(__WXUNIV_DEFINE_p_0) $(__DEBUG_DEFINE_p_0) $(__EXCEPTIONS_DEFINE_p_0) $(__RTTI_DEFINE_p_0) $(__THREAD_DEFINE_p_0) $(__UNICODE_DEFINE_p_0) $(__MSLU_DEFINE_p_0) $(__GFXCTX_DEFINE_p_0) /i $(SETUPHDIR) /i .\..\..\include /i . $(__DLLFLAG_p_0) /d _WINDOWS /i .\..\..\samples /d NOPCH $**
|
rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_0) $(__NO_VC_CRTDBG_p_0) /d __WXMSW__ $(__WXUNIV_DEFINE_p_0) $(__DEBUG_DEFINE_p_0) $(__EXCEPTIONS_DEFINE_p_0) $(__RTTI_DEFINE_p_0) $(__THREAD_DEFINE_p_0) $(__UNICODE_DEFINE_p_0) $(__MSLU_DEFINE_p_0) $(__GFXCTX_DEFINE_p_0) /i $(SETUPHDIR) /i .\..\..\include /i . $(__DLLFLAG_p_0) /d _WINDOWS /i .\..\..\samples /d NOPCH $**
|
||||||
|
|
||||||
|
$(OBJS)\baseclient_baseclient.obj: .\baseclient.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(BASECLIENT_CXXFLAGS) $**
|
||||||
|
|
||||||
|
$(OBJS)\baseserver_baseserver.obj: .\baseserver.cpp
|
||||||
|
$(CXX) /c /nologo /TP /Fo$@ $(BASESERVER_CXXFLAGS) $**
|
||||||
|
|
||||||
|
@@ -69,6 +69,31 @@ EXTRALIBS_FOR_BASE =
|
|||||||
!ifeq MONOLITHIC 1
|
!ifeq MONOLITHIC 1
|
||||||
EXTRALIBS_FOR_BASE =
|
EXTRALIBS_FOR_BASE =
|
||||||
!endif
|
!endif
|
||||||
|
__client___depname =
|
||||||
|
!ifeq USE_GUI 1
|
||||||
|
__client___depname = $(OBJS)\client.exe
|
||||||
|
!endif
|
||||||
|
__server___depname =
|
||||||
|
!ifeq USE_GUI 1
|
||||||
|
__server___depname = $(OBJS)\server.exe
|
||||||
|
!endif
|
||||||
|
__WXLIB_CORE_p =
|
||||||
|
!ifeq MONOLITHIC 0
|
||||||
|
__WXLIB_CORE_p = &
|
||||||
|
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib
|
||||||
|
!endif
|
||||||
|
__LIB_TIFF_p =
|
||||||
|
!ifeq USE_GUI 1
|
||||||
|
__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib
|
||||||
|
!endif
|
||||||
|
__LIB_JPEG_p =
|
||||||
|
!ifeq USE_GUI 1
|
||||||
|
__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib
|
||||||
|
!endif
|
||||||
|
__LIB_PNG_p =
|
||||||
|
!ifeq USE_GUI 1
|
||||||
|
__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib
|
||||||
|
!endif
|
||||||
__DEBUGINFO =
|
__DEBUGINFO =
|
||||||
!ifeq BUILD debug
|
!ifeq BUILD debug
|
||||||
!ifeq DEBUG_INFO default
|
!ifeq DEBUG_INFO default
|
||||||
@@ -86,22 +111,22 @@ __DEBUGINFO = -d0
|
|||||||
!ifeq DEBUG_INFO 1
|
!ifeq DEBUG_INFO 1
|
||||||
__DEBUGINFO = -d2
|
__DEBUGINFO = -d2
|
||||||
!endif
|
!endif
|
||||||
__DEBUGINFO_1 =
|
__DEBUGINFO_3 =
|
||||||
!ifeq BUILD debug
|
!ifeq BUILD debug
|
||||||
!ifeq DEBUG_INFO default
|
!ifeq DEBUG_INFO default
|
||||||
__DEBUGINFO_1 = debug all
|
__DEBUGINFO_3 = debug all
|
||||||
!endif
|
!endif
|
||||||
!endif
|
!endif
|
||||||
!ifeq BUILD release
|
!ifeq BUILD release
|
||||||
!ifeq DEBUG_INFO default
|
!ifeq DEBUG_INFO default
|
||||||
__DEBUGINFO_1 =
|
__DEBUGINFO_3 =
|
||||||
!endif
|
!endif
|
||||||
!endif
|
!endif
|
||||||
!ifeq DEBUG_INFO 0
|
!ifeq DEBUG_INFO 0
|
||||||
__DEBUGINFO_1 =
|
__DEBUGINFO_3 =
|
||||||
!endif
|
!endif
|
||||||
!ifeq DEBUG_INFO 1
|
!ifeq DEBUG_INFO 1
|
||||||
__DEBUGINFO_1 = debug all
|
__DEBUGINFO_3 = debug all
|
||||||
!endif
|
!endif
|
||||||
__OPTIMIZEFLAG =
|
__OPTIMIZEFLAG =
|
||||||
!ifeq BUILD debug
|
!ifeq BUILD debug
|
||||||
@@ -138,42 +163,6 @@ __EXCEPTIONSFLAG =
|
|||||||
!ifeq USE_EXCEPTIONS 1
|
!ifeq USE_EXCEPTIONS 1
|
||||||
__EXCEPTIONSFLAG = -xs
|
__EXCEPTIONSFLAG = -xs
|
||||||
!endif
|
!endif
|
||||||
__WXLIB_CORE_p =
|
|
||||||
!ifeq MONOLITHIC 0
|
|
||||||
__WXLIB_CORE_p = &
|
|
||||||
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib
|
|
||||||
!endif
|
|
||||||
__WXLIB_NET_p =
|
|
||||||
!ifeq MONOLITHIC 0
|
|
||||||
__WXLIB_NET_p = &
|
|
||||||
wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net.lib
|
|
||||||
!endif
|
|
||||||
__WXLIB_BASE_p =
|
|
||||||
!ifeq MONOLITHIC 0
|
|
||||||
__WXLIB_BASE_p = &
|
|
||||||
wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
|
|
||||||
!endif
|
|
||||||
__WXLIB_MONO_p =
|
|
||||||
!ifeq MONOLITHIC 1
|
|
||||||
__WXLIB_MONO_p = &
|
|
||||||
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
|
|
||||||
!endif
|
|
||||||
__LIB_TIFF_p =
|
|
||||||
!ifeq USE_GUI 1
|
|
||||||
__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib
|
|
||||||
!endif
|
|
||||||
__LIB_JPEG_p =
|
|
||||||
!ifeq USE_GUI 1
|
|
||||||
__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib
|
|
||||||
!endif
|
|
||||||
__LIB_PNG_p =
|
|
||||||
!ifeq USE_GUI 1
|
|
||||||
__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib
|
|
||||||
!endif
|
|
||||||
__GDIPLUS_LIB_p =
|
|
||||||
!ifeq USE_GDIPLUS 1
|
|
||||||
__GDIPLUS_LIB_p = gdiplus.lib
|
|
||||||
!endif
|
|
||||||
__WXUNIV_DEFINE_p =
|
__WXUNIV_DEFINE_p =
|
||||||
!ifeq WXUNIV 1
|
!ifeq WXUNIV 1
|
||||||
__WXUNIV_DEFINE_p = -d__WXUNIVERSAL__
|
__WXUNIV_DEFINE_p = -d__WXUNIVERSAL__
|
||||||
@@ -214,6 +203,25 @@ __DLLFLAG_p =
|
|||||||
!ifeq SHARED 1
|
!ifeq SHARED 1
|
||||||
__DLLFLAG_p = -dWXUSINGDLL
|
__DLLFLAG_p = -dWXUSINGDLL
|
||||||
!endif
|
!endif
|
||||||
|
__WXLIB_NET_p =
|
||||||
|
!ifeq MONOLITHIC 0
|
||||||
|
__WXLIB_NET_p = &
|
||||||
|
wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net.lib
|
||||||
|
!endif
|
||||||
|
__WXLIB_BASE_p =
|
||||||
|
!ifeq MONOLITHIC 0
|
||||||
|
__WXLIB_BASE_p = &
|
||||||
|
wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
|
||||||
|
!endif
|
||||||
|
__WXLIB_MONO_p =
|
||||||
|
!ifeq MONOLITHIC 1
|
||||||
|
__WXLIB_MONO_p = &
|
||||||
|
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
|
||||||
|
!endif
|
||||||
|
__GDIPLUS_LIB_p =
|
||||||
|
!ifeq USE_GDIPLUS 1
|
||||||
|
__GDIPLUS_LIB_p = gdiplus.lib
|
||||||
|
!endif
|
||||||
|
|
||||||
### Variables: ###
|
### Variables: ###
|
||||||
|
|
||||||
@@ -242,6 +250,22 @@ SERVER_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
|
|||||||
$(CXXFLAGS)
|
$(CXXFLAGS)
|
||||||
SERVER_OBJECTS = &
|
SERVER_OBJECTS = &
|
||||||
$(OBJS)\server_server.obj
|
$(OBJS)\server_server.obj
|
||||||
|
BASECLIENT_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
|
||||||
|
$(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) &
|
||||||
|
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) &
|
||||||
|
$(__UNICODE_DEFINE_p) $(__GFXCTX_DEFINE_p) -i=$(SETUPHDIR) &
|
||||||
|
-i=.\..\..\include -wx -wcd=549 -wcd=656 -wcd=657 -wcd=667 -i=. $(__DLLFLAG_p) &
|
||||||
|
-dwxUSE_GUI=0 $(__RTTIFLAG) $(__EXCEPTIONSFLAG) $(CPPFLAGS) $(CXXFLAGS)
|
||||||
|
BASECLIENT_OBJECTS = &
|
||||||
|
$(OBJS)\baseclient_baseclient.obj
|
||||||
|
BASESERVER_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
|
||||||
|
$(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) &
|
||||||
|
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) &
|
||||||
|
$(__UNICODE_DEFINE_p) $(__GFXCTX_DEFINE_p) -i=$(SETUPHDIR) &
|
||||||
|
-i=.\..\..\include -wx -wcd=549 -wcd=656 -wcd=657 -wcd=667 -i=. $(__DLLFLAG_p) &
|
||||||
|
-dwxUSE_GUI=0 $(__RTTIFLAG) $(__EXCEPTIONSFLAG) $(CPPFLAGS) $(CXXFLAGS)
|
||||||
|
BASESERVER_OBJECTS = &
|
||||||
|
$(OBJS)\baseserver_baseserver.obj
|
||||||
|
|
||||||
|
|
||||||
all : $(OBJS)
|
all : $(OBJS)
|
||||||
@@ -250,7 +274,7 @@ $(OBJS) :
|
|||||||
|
|
||||||
### Targets: ###
|
### Targets: ###
|
||||||
|
|
||||||
all : .SYMBOLIC $(OBJS)\client.exe $(OBJS)\server.exe
|
all : .SYMBOLIC $(__client___depname) $(__server___depname) $(OBJS)\baseclient.exe $(OBJS)\baseserver.exe
|
||||||
|
|
||||||
clean : .SYMBOLIC
|
clean : .SYMBOLIC
|
||||||
-if exist $(OBJS)\*.obj del $(OBJS)\*.obj
|
-if exist $(OBJS)\*.obj del $(OBJS)\*.obj
|
||||||
@@ -260,30 +284,60 @@ clean : .SYMBOLIC
|
|||||||
-if exist $(OBJS)\*.pch del $(OBJS)\*.pch
|
-if exist $(OBJS)\*.pch del $(OBJS)\*.pch
|
||||||
-if exist $(OBJS)\client.exe del $(OBJS)\client.exe
|
-if exist $(OBJS)\client.exe del $(OBJS)\client.exe
|
||||||
-if exist $(OBJS)\server.exe del $(OBJS)\server.exe
|
-if exist $(OBJS)\server.exe del $(OBJS)\server.exe
|
||||||
|
-if exist $(OBJS)\baseclient.exe del $(OBJS)\baseclient.exe
|
||||||
|
-if exist $(OBJS)\baseserver.exe del $(OBJS)\baseserver.exe
|
||||||
|
|
||||||
|
!ifeq USE_GUI 1
|
||||||
$(OBJS)\client.exe : $(CLIENT_OBJECTS) $(OBJS)\client_client.res
|
$(OBJS)\client.exe : $(CLIENT_OBJECTS) $(OBJS)\client_client.res
|
||||||
@%create $(OBJS)\client.lbc
|
@%create $(OBJS)\client.lbc
|
||||||
@%append $(OBJS)\client.lbc option quiet
|
@%append $(OBJS)\client.lbc option quiet
|
||||||
@%append $(OBJS)\client.lbc name $^@
|
@%append $(OBJS)\client.lbc name $^@
|
||||||
@%append $(OBJS)\client.lbc option caseexact
|
@%append $(OBJS)\client.lbc option caseexact
|
||||||
@%append $(OBJS)\client.lbc $(LDFLAGS) $(__DEBUGINFO_1) libpath $(LIBDIRNAME) system nt_win ref '_WinMain@16'
|
@%append $(OBJS)\client.lbc $(LDFLAGS) $(__DEBUGINFO_3) libpath $(LIBDIRNAME) system nt_win ref '_WinMain@16'
|
||||||
@for %i in ($(CLIENT_OBJECTS)) do @%append $(OBJS)\client.lbc file %i
|
@for %i in ($(CLIENT_OBJECTS)) do @%append $(OBJS)\client.lbc file %i
|
||||||
@for %i in ( $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib) do @%append $(OBJS)\client.lbc library %i
|
@for %i in ( $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib) do @%append $(OBJS)\client.lbc library %i
|
||||||
@%append $(OBJS)\client.lbc option resource=$(OBJS)\client_client.res
|
@%append $(OBJS)\client.lbc option resource=$(OBJS)\client_client.res
|
||||||
@for %i in () do @%append $(OBJS)\client.lbc option stack=%i
|
@for %i in () do @%append $(OBJS)\client.lbc option stack=%i
|
||||||
wlink @$(OBJS)\client.lbc
|
wlink @$(OBJS)\client.lbc
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!ifeq USE_GUI 1
|
||||||
$(OBJS)\server.exe : $(SERVER_OBJECTS) $(OBJS)\server_server.res
|
$(OBJS)\server.exe : $(SERVER_OBJECTS) $(OBJS)\server_server.res
|
||||||
@%create $(OBJS)\server.lbc
|
@%create $(OBJS)\server.lbc
|
||||||
@%append $(OBJS)\server.lbc option quiet
|
@%append $(OBJS)\server.lbc option quiet
|
||||||
@%append $(OBJS)\server.lbc name $^@
|
@%append $(OBJS)\server.lbc name $^@
|
||||||
@%append $(OBJS)\server.lbc option caseexact
|
@%append $(OBJS)\server.lbc option caseexact
|
||||||
@%append $(OBJS)\server.lbc $(LDFLAGS) $(__DEBUGINFO_1) libpath $(LIBDIRNAME) system nt_win ref '_WinMain@16'
|
@%append $(OBJS)\server.lbc $(LDFLAGS) $(__DEBUGINFO_3) libpath $(LIBDIRNAME) system nt_win ref '_WinMain@16'
|
||||||
@for %i in ($(SERVER_OBJECTS)) do @%append $(OBJS)\server.lbc file %i
|
@for %i in ($(SERVER_OBJECTS)) do @%append $(OBJS)\server.lbc file %i
|
||||||
@for %i in ( $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib) do @%append $(OBJS)\server.lbc library %i
|
@for %i in ( $(__WXLIB_CORE_p) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib) do @%append $(OBJS)\server.lbc library %i
|
||||||
@%append $(OBJS)\server.lbc option resource=$(OBJS)\server_server.res
|
@%append $(OBJS)\server.lbc option resource=$(OBJS)\server_server.res
|
||||||
@for %i in () do @%append $(OBJS)\server.lbc option stack=%i
|
@for %i in () do @%append $(OBJS)\server.lbc option stack=%i
|
||||||
wlink @$(OBJS)\server.lbc
|
wlink @$(OBJS)\server.lbc
|
||||||
|
!endif
|
||||||
|
|
||||||
|
$(OBJS)\baseclient.exe : $(BASECLIENT_OBJECTS)
|
||||||
|
@%create $(OBJS)\baseclient.lbc
|
||||||
|
@%append $(OBJS)\baseclient.lbc option quiet
|
||||||
|
@%append $(OBJS)\baseclient.lbc name $^@
|
||||||
|
@%append $(OBJS)\baseclient.lbc option caseexact
|
||||||
|
@%append $(OBJS)\baseclient.lbc $(LDFLAGS) $(__DEBUGINFO_3) libpath $(LIBDIRNAME) system nt ref 'main_'
|
||||||
|
@for %i in ($(BASECLIENT_OBJECTS)) do @%append $(OBJS)\baseclient.lbc file %i
|
||||||
|
@for %i in ( $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib) do @%append $(OBJS)\baseclient.lbc library %i
|
||||||
|
@%append $(OBJS)\baseclient.lbc
|
||||||
|
@for %i in () do @%append $(OBJS)\baseclient.lbc option stack=%i
|
||||||
|
wlink @$(OBJS)\baseclient.lbc
|
||||||
|
|
||||||
|
$(OBJS)\baseserver.exe : $(BASESERVER_OBJECTS)
|
||||||
|
@%create $(OBJS)\baseserver.lbc
|
||||||
|
@%append $(OBJS)\baseserver.lbc option quiet
|
||||||
|
@%append $(OBJS)\baseserver.lbc name $^@
|
||||||
|
@%append $(OBJS)\baseserver.lbc option caseexact
|
||||||
|
@%append $(OBJS)\baseserver.lbc $(LDFLAGS) $(__DEBUGINFO_3) libpath $(LIBDIRNAME) system nt ref 'main_'
|
||||||
|
@for %i in ($(BASESERVER_OBJECTS)) do @%append $(OBJS)\baseserver.lbc file %i
|
||||||
|
@for %i in ( $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib) do @%append $(OBJS)\baseserver.lbc library %i
|
||||||
|
@%append $(OBJS)\baseserver.lbc
|
||||||
|
@for %i in () do @%append $(OBJS)\baseserver.lbc option stack=%i
|
||||||
|
wlink @$(OBJS)\baseserver.lbc
|
||||||
|
|
||||||
$(OBJS)\client_client.obj : .AUTODEPEND .\client.cpp
|
$(OBJS)\client_client.obj : .AUTODEPEND .\client.cpp
|
||||||
$(CXX) -bt=nt -zq -fo=$^@ $(CLIENT_CXXFLAGS) $<
|
$(CXX) -bt=nt -zq -fo=$^@ $(CLIENT_CXXFLAGS) $<
|
||||||
@@ -297,3 +351,9 @@ $(OBJS)\server_server.obj : .AUTODEPEND .\server.cpp
|
|||||||
$(OBJS)\server_server.res : .AUTODEPEND .\server.rc
|
$(OBJS)\server_server.res : .AUTODEPEND .\server.rc
|
||||||
wrc -q -ad -bt=nt -r -fo=$^@ -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__GFXCTX_DEFINE_p) -i=$(SETUPHDIR) -i=.\..\..\include -i=. $(__DLLFLAG_p) -i=.\..\..\samples -dNOPCH $<
|
wrc -q -ad -bt=nt -r -fo=$^@ -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__GFXCTX_DEFINE_p) -i=$(SETUPHDIR) -i=.\..\..\include -i=. $(__DLLFLAG_p) -i=.\..\..\samples -dNOPCH $<
|
||||||
|
|
||||||
|
$(OBJS)\baseclient_baseclient.obj : .AUTODEPEND .\baseclient.cpp
|
||||||
|
$(CXX) -bt=nt -zq -fo=$^@ $(BASECLIENT_CXXFLAGS) $<
|
||||||
|
|
||||||
|
$(OBJS)\baseserver_baseserver.obj : .AUTODEPEND .\baseserver.cpp
|
||||||
|
$(CXX) -bt=nt -zq -fo=$^@ $(BASESERVER_CXXFLAGS) $<
|
||||||
|
|
||||||
|
@@ -36,9 +36,7 @@
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
// the application icon
|
// the application icon
|
||||||
#if defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__) || defined(__WXMAC__)
|
#include "mondrian.xpm"
|
||||||
# include "mondrian.xpm"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// classes
|
// classes
|
||||||
|
@@ -3,7 +3,15 @@
|
|||||||
|
|
||||||
<include file="../../build/bakefiles/common_samples.bkl"/>
|
<include file="../../build/bakefiles/common_samples.bkl"/>
|
||||||
|
|
||||||
<exe id="client" template="wx_sample" template_append="wx_append">
|
<if cond="FORMAT=='gnu'">
|
||||||
|
<!-- as we can't (easily) test for GUI, build them always -->
|
||||||
|
<set var="cond_build_gui">1</set>
|
||||||
|
</if>
|
||||||
|
<if cond="FORMAT!='gnu'">
|
||||||
|
<set var="cond_build_gui">USE_GUI=='1'</set>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<exe id="client" template="wx_sample" template_append="wx_append" cond="$(cond_build_gui)">
|
||||||
<sources>client.cpp</sources>
|
<sources>client.cpp</sources>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
<wx-lib>net</wx-lib>
|
<wx-lib>net</wx-lib>
|
||||||
@@ -11,7 +19,7 @@
|
|||||||
<win32-res>client.rc</win32-res>
|
<win32-res>client.rc</win32-res>
|
||||||
</exe>
|
</exe>
|
||||||
|
|
||||||
<exe id="server" template="wx_sample" template_append="wx_append">
|
<exe id="server" template="wx_sample" template_append="wx_append" cond="$(cond_build_gui)">
|
||||||
<sources>server.cpp</sources>
|
<sources>server.cpp</sources>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
<wx-lib>net</wx-lib>
|
<wx-lib>net</wx-lib>
|
||||||
@@ -19,4 +27,18 @@
|
|||||||
<win32-res>server.rc</win32-res>
|
<win32-res>server.rc</win32-res>
|
||||||
</exe>
|
</exe>
|
||||||
|
|
||||||
|
<exe id="baseclient" template="wx_sample_console"
|
||||||
|
template_append="wx_append_base">
|
||||||
|
<sources>baseclient.cpp</sources>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
|
<wx-lib>base</wx-lib>
|
||||||
|
</exe>
|
||||||
|
|
||||||
|
<exe id="baseserver" template="wx_sample_console"
|
||||||
|
template_append="wx_append_base">
|
||||||
|
<sources>baseserver.cpp</sources>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
|
<wx-lib>base</wx-lib>
|
||||||
|
</exe>
|
||||||
|
|
||||||
</makefile>
|
</makefile>
|
||||||
|
243
samples/sockets/sockets_baseclient.dsp
Normal file
243
samples/sockets/sockets_baseclient.dsp
Normal file
@@ -0,0 +1,243 @@
|
|||||||
|
# Microsoft Developer Studio Project File - Name="sockets_baseclient" - Package Owner=<4>
|
||||||
|
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||||
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
|
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||||
|
|
||||||
|
CFG=baseclient - Win32 Debug
|
||||||
|
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||||
|
!MESSAGE use the Export Makefile command and run
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "sockets_baseclient.mak".
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE You can specify a configuration when running NMAKE
|
||||||
|
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "sockets_baseclient.mak" CFG="baseclient - Win32 Debug"
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE Possible choices for configuration are:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE "baseclient - Win32 DLL Universal Release" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE "baseclient - Win32 DLL Universal Debug" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE "baseclient - Win32 DLL Release" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE "baseclient - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE "baseclient - Win32 Universal Release" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE "baseclient - Win32 Universal Debug" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE "baseclient - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE "baseclient - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE
|
||||||
|
|
||||||
|
# Begin Project
|
||||||
|
# PROP AllowPerConfigDependencies 0
|
||||||
|
# PROP Scc_ProjName ""
|
||||||
|
# PROP Scc_LocalPath ""
|
||||||
|
CPP=cl.exe
|
||||||
|
RSC=rc.exe
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "baseclient - Win32 DLL Universal Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "vc_mswunivudll"
|
||||||
|
# PROP BASE Intermediate_Dir "vc_mswunivudll\baseclient"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "vc_mswunivudll"
|
||||||
|
# PROP Intermediate_Dir "vc_mswunivudll\baseclient"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /FD /MD /Fdvc_mswunivudll\baseclient.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivu" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD CPP /nologo /FD /MD /Fdvc_mswunivudll\baseclient.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivu" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswunivu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
# ADD RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswunivu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivudll\baseclient.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:console
|
||||||
|
# ADD LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivudll\baseclient.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:console
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "baseclient - Win32 DLL Universal Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "vc_mswunivuddll"
|
||||||
|
# PROP BASE Intermediate_Dir "vc_mswunivuddll\baseclient"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "vc_mswunivuddll"
|
||||||
|
# PROP Intermediate_Dir "vc_mswunivuddll\baseclient"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswunivuddll\baseclient.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivud" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswunivuddll\baseclient.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivud" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswunivud" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswunivud" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivuddll\baseclient.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:console
|
||||||
|
# ADD LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivuddll\baseclient.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:console
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "baseclient - Win32 DLL Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "vc_mswudll"
|
||||||
|
# PROP BASE Intermediate_Dir "vc_mswudll\baseclient"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "vc_mswudll"
|
||||||
|
# PROP Intermediate_Dir "vc_mswudll\baseclient"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /FD /MD /Fdvc_mswudll\baseclient.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswu" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD CPP /nologo /FD /MD /Fdvc_mswudll\baseclient.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswu" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
# ADD RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswudll\baseclient.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:console
|
||||||
|
# ADD LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswudll\baseclient.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:console
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "baseclient - Win32 DLL Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "vc_mswuddll"
|
||||||
|
# PROP BASE Intermediate_Dir "vc_mswuddll\baseclient"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "vc_mswuddll"
|
||||||
|
# PROP Intermediate_Dir "vc_mswuddll\baseclient"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswuddll\baseclient.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_dll\mswud" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswuddll\baseclient.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_dll\mswud" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswud" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswud" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswuddll\baseclient.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:console
|
||||||
|
# ADD LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswuddll\baseclient.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:console
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "baseclient - Win32 Universal Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "vc_mswunivu"
|
||||||
|
# PROP BASE Intermediate_Dir "vc_mswunivu\baseclient"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "vc_mswunivu"
|
||||||
|
# PROP Intermediate_Dir "vc_mswunivu\baseclient"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /FD /MD /Fdvc_mswunivu\baseclient.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivu" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD CPP /nologo /FD /MD /Fdvc_mswunivu\baseclient.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivu" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivu" /i ".\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
# ADD RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivu" /i ".\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivu\baseclient.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:console
|
||||||
|
# ADD LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivu\baseclient.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:console
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "baseclient - Win32 Universal Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "vc_mswunivud"
|
||||||
|
# PROP BASE Intermediate_Dir "vc_mswunivud\baseclient"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "vc_mswunivud"
|
||||||
|
# PROP Intermediate_Dir "vc_mswunivud\baseclient"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswunivud\baseclient.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivud" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswunivud\baseclient.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivud" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivud" /i ".\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivud" /i ".\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivud\baseclient.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:console
|
||||||
|
# ADD LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivud\baseclient.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:console
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "baseclient - Win32 Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "vc_mswu"
|
||||||
|
# PROP BASE Intermediate_Dir "vc_mswu\baseclient"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "vc_mswu"
|
||||||
|
# PROP Intermediate_Dir "vc_mswu\baseclient"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /FD /MD /Fdvc_mswu\baseclient.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswu" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD CPP /nologo /FD /MD /Fdvc_mswu\baseclient.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswu" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswu" /i ".\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
# ADD RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswu" /i ".\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswu\baseclient.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:console
|
||||||
|
# ADD LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswu\baseclient.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:console
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "baseclient - Win32 Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "vc_mswud"
|
||||||
|
# PROP BASE Intermediate_Dir "vc_mswud\baseclient"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "vc_mswud"
|
||||||
|
# PROP Intermediate_Dir "vc_mswud\baseclient"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswud\baseclient.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_lib\mswud" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswud\baseclient.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_lib\mswud" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswud" /i ".\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswud" /i ".\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswud\baseclient.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:console
|
||||||
|
# ADD LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswud\baseclient.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:console
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# Begin Target
|
||||||
|
|
||||||
|
# Name "baseclient - Win32 DLL Universal Release"
|
||||||
|
# Name "baseclient - Win32 DLL Universal Debug"
|
||||||
|
# Name "baseclient - Win32 DLL Release"
|
||||||
|
# Name "baseclient - Win32 DLL Debug"
|
||||||
|
# Name "baseclient - Win32 Universal Release"
|
||||||
|
# Name "baseclient - Win32 Universal Debug"
|
||||||
|
# Name "baseclient - Win32 Release"
|
||||||
|
# Name "baseclient - Win32 Debug"
|
||||||
|
# Begin Group "Source Files"
|
||||||
|
|
||||||
|
# PROP Default_Filter ""
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\baseclient.cpp
|
||||||
|
# End Source File
|
||||||
|
# End Group
|
||||||
|
# End Target
|
||||||
|
# End Project
|
||||||
|
|
243
samples/sockets/sockets_baseserver.dsp
Normal file
243
samples/sockets/sockets_baseserver.dsp
Normal file
@@ -0,0 +1,243 @@
|
|||||||
|
# Microsoft Developer Studio Project File - Name="sockets_baseserver" - Package Owner=<4>
|
||||||
|
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||||
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
|
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||||
|
|
||||||
|
CFG=baseserver - Win32 Debug
|
||||||
|
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||||
|
!MESSAGE use the Export Makefile command and run
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "sockets_baseserver.mak".
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE You can specify a configuration when running NMAKE
|
||||||
|
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "sockets_baseserver.mak" CFG="baseserver - Win32 Debug"
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE Possible choices for configuration are:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE "baseserver - Win32 DLL Universal Release" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE "baseserver - Win32 DLL Universal Debug" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE "baseserver - Win32 DLL Release" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE "baseserver - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE "baseserver - Win32 Universal Release" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE "baseserver - Win32 Universal Debug" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE "baseserver - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE "baseserver - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||||
|
!MESSAGE
|
||||||
|
|
||||||
|
# Begin Project
|
||||||
|
# PROP AllowPerConfigDependencies 0
|
||||||
|
# PROP Scc_ProjName ""
|
||||||
|
# PROP Scc_LocalPath ""
|
||||||
|
CPP=cl.exe
|
||||||
|
RSC=rc.exe
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "baseserver - Win32 DLL Universal Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "vc_mswunivudll"
|
||||||
|
# PROP BASE Intermediate_Dir "vc_mswunivudll\baseserver"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "vc_mswunivudll"
|
||||||
|
# PROP Intermediate_Dir "vc_mswunivudll\baseserver"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /FD /MD /Fdvc_mswunivudll\baseserver.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivu" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD CPP /nologo /FD /MD /Fdvc_mswunivudll\baseserver.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivu" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswunivu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
# ADD RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswunivu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivudll\baseserver.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:console
|
||||||
|
# ADD LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivudll\baseserver.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:console
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "baseserver - Win32 DLL Universal Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "vc_mswunivuddll"
|
||||||
|
# PROP BASE Intermediate_Dir "vc_mswunivuddll\baseserver"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "vc_mswunivuddll"
|
||||||
|
# PROP Intermediate_Dir "vc_mswunivuddll\baseserver"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswunivuddll\baseserver.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivud" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswunivuddll\baseserver.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivud" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswunivud" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswunivud" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivuddll\baseserver.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:console
|
||||||
|
# ADD LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivuddll\baseserver.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:console
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "baseserver - Win32 DLL Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "vc_mswudll"
|
||||||
|
# PROP BASE Intermediate_Dir "vc_mswudll\baseserver"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "vc_mswudll"
|
||||||
|
# PROP Intermediate_Dir "vc_mswudll\baseserver"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /FD /MD /Fdvc_mswudll\baseserver.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswu" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD CPP /nologo /FD /MD /Fdvc_mswudll\baseserver.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswu" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
# ADD RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswudll\baseserver.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:console
|
||||||
|
# ADD LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswudll\baseserver.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:console
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "baseserver - Win32 DLL Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "vc_mswuddll"
|
||||||
|
# PROP BASE Intermediate_Dir "vc_mswuddll\baseserver"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "vc_mswuddll"
|
||||||
|
# PROP Intermediate_Dir "vc_mswuddll\baseserver"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswuddll\baseserver.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_dll\mswud" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswuddll\baseserver.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_dll\mswud" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswud" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswud" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswuddll\baseserver.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:console
|
||||||
|
# ADD LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswuddll\baseserver.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:console
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "baseserver - Win32 Universal Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "vc_mswunivu"
|
||||||
|
# PROP BASE Intermediate_Dir "vc_mswunivu\baseserver"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "vc_mswunivu"
|
||||||
|
# PROP Intermediate_Dir "vc_mswunivu\baseserver"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /FD /MD /Fdvc_mswunivu\baseserver.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivu" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD CPP /nologo /FD /MD /Fdvc_mswunivu\baseserver.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivu" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivu" /i ".\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
# ADD RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivu" /i ".\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivu\baseserver.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:console
|
||||||
|
# ADD LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivu\baseserver.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:console
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "baseserver - Win32 Universal Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "vc_mswunivud"
|
||||||
|
# PROP BASE Intermediate_Dir "vc_mswunivud\baseserver"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "vc_mswunivud"
|
||||||
|
# PROP Intermediate_Dir "vc_mswunivud\baseserver"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswunivud\baseserver.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivud" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswunivud\baseserver.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivud" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivud" /i ".\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivud" /i ".\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivud\baseserver.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:console
|
||||||
|
# ADD LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivud\baseserver.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:console
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "baseserver - Win32 Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "vc_mswu"
|
||||||
|
# PROP BASE Intermediate_Dir "vc_mswu\baseserver"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "vc_mswu"
|
||||||
|
# PROP Intermediate_Dir "vc_mswu\baseserver"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /FD /MD /Fdvc_mswu\baseserver.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswu" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD CPP /nologo /FD /MD /Fdvc_mswu\baseserver.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswu" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswu" /i ".\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
# ADD RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswu" /i ".\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswu\baseserver.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:console
|
||||||
|
# ADD LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswu\baseserver.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:console
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "baseserver - Win32 Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "vc_mswud"
|
||||||
|
# PROP BASE Intermediate_Dir "vc_mswud\baseserver"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "vc_mswud"
|
||||||
|
# PROP Intermediate_Dir "vc_mswud\baseserver"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswud\baseserver.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_lib\mswud" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswud\baseserver.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_lib\mswud" /I ".\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
|
||||||
|
# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswud" /i ".\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswud" /i ".\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LINK32=link.exe
|
||||||
|
# ADD BASE LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswud\baseserver.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:console
|
||||||
|
# ADD LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswud\baseserver.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:console
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# Begin Target
|
||||||
|
|
||||||
|
# Name "baseserver - Win32 DLL Universal Release"
|
||||||
|
# Name "baseserver - Win32 DLL Universal Debug"
|
||||||
|
# Name "baseserver - Win32 DLL Release"
|
||||||
|
# Name "baseserver - Win32 DLL Debug"
|
||||||
|
# Name "baseserver - Win32 Universal Release"
|
||||||
|
# Name "baseserver - Win32 Universal Debug"
|
||||||
|
# Name "baseserver - Win32 Release"
|
||||||
|
# Name "baseserver - Win32 Debug"
|
||||||
|
# Begin Group "Source Files"
|
||||||
|
|
||||||
|
# PROP Default_Filter ""
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\baseserver.cpp
|
||||||
|
# End Source File
|
||||||
|
# End Group
|
||||||
|
# End Target
|
||||||
|
# End Project
|
||||||
|
|
@@ -645,13 +645,6 @@ void wxConsoleAppTraitsBase::RemoveFromPendingDelete(wxObject * WXUNUSED(object)
|
|||||||
// nothing to do
|
// nothing to do
|
||||||
}
|
}
|
||||||
|
|
||||||
#if wxUSE_SOCKETS
|
|
||||||
GSocketGUIFunctionsTable* wxConsoleAppTraitsBase::GetSocketGUIFunctionsTable()
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxAppTraits
|
// wxAppTraits
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@@ -545,28 +545,3 @@ void wxGUIAppTraitsBase::RemoveFromPendingDelete(wxObject *object)
|
|||||||
wxPendingDelete.DeleteObject(object);
|
wxPendingDelete.DeleteObject(object);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if wxUSE_SOCKETS
|
|
||||||
|
|
||||||
#if defined(__WINDOWS__)
|
|
||||||
#include "wx/msw/gsockmsw.h"
|
|
||||||
#elif defined(__UNIX__) || defined(__DARWIN__) || defined(__OS2__)
|
|
||||||
#include "wx/unix/gsockunx.h"
|
|
||||||
#elif defined(__WXMAC__)
|
|
||||||
#include <MacHeaders.c>
|
|
||||||
#define OTUNIXERRORS 1
|
|
||||||
#include <OpenTransport.h>
|
|
||||||
#include <OpenTransportProviders.h>
|
|
||||||
#include <OpenTptInternet.h>
|
|
||||||
|
|
||||||
#include "wx/mac/gsockmac.h"
|
|
||||||
#else
|
|
||||||
#error "Must include correct GSocket header here"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
GSocketGUIFunctionsTable* wxGUIAppTraitsBase::GetSocketGUIFunctionsTable()
|
|
||||||
{
|
|
||||||
static GSocketGUIFunctionsTableConcrete table;
|
|
||||||
return &table;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@@ -55,7 +55,7 @@ wxFDIODispatcher *wxFDIODispatcher::Get()
|
|||||||
#endif // wxUSE_EPOLL_DISPATCHER
|
#endif // wxUSE_EPOLL_DISPATCHER
|
||||||
#if wxUSE_SELECT_DISPATCHER
|
#if wxUSE_SELECT_DISPATCHER
|
||||||
gs_dispatcher = wxSelectDispatcher::Create();
|
gs_dispatcher = wxSelectDispatcher::Create();
|
||||||
#endif // wxUSE_WCHAR_T
|
#endif // wxUSE_SELECT_DISPATCHER
|
||||||
}
|
}
|
||||||
|
|
||||||
wxASSERT_MSG( gs_dispatcher, _T("failed to create any IO dispatchers") );
|
wxASSERT_MSG( gs_dispatcher, _T("failed to create any IO dispatchers") );
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
// Created: 08.24.06
|
// Created: 08.24.06
|
||||||
// RCS-ID: $Id$
|
// RCS-ID: $Id$
|
||||||
// Copyright: (c) 2006 Angel vidal
|
// Copyright: (c) 2006 Angel vidal
|
||||||
|
// (c) 2007 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||||
// License: wxWindows licence
|
// License: wxWindows licence
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
@@ -21,205 +22,114 @@
|
|||||||
|
|
||||||
#if wxUSE_SOCKETS && wxUSE_SELECT_DISPATCHER
|
#if wxUSE_SOCKETS && wxUSE_SELECT_DISPATCHER
|
||||||
|
|
||||||
#include "wx/private/gsocketiohandler.h"
|
#include "wx/apptrait.h"
|
||||||
#include "wx/unix/private.h"
|
#include "wx/unix/private.h"
|
||||||
#include "wx/gsocket.h"
|
#include "wx/private/gsocketiohandler.h"
|
||||||
#include "wx/unix/gsockunx.h"
|
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// implementation
|
// implementation
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxGSocketIOHandler
|
// GSocketSelectManager
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
wxGSocketIOHandler::wxGSocketIOHandler(GSocket* socket)
|
class GSocketSelectManager : public GSocketFDBasedManager
|
||||||
: m_socket(socket),
|
|
||||||
m_flags(0)
|
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
virtual void Install_Callback(GSocket *socket, GSocketEvent event);
|
||||||
|
virtual void Uninstall_Callback(GSocket *socket, GSocketEvent event);
|
||||||
|
};
|
||||||
|
|
||||||
|
void GSocketSelectManager::Install_Callback(GSocket *socket,
|
||||||
|
GSocketEvent event)
|
||||||
|
{
|
||||||
|
const int fd = socket->m_fd;
|
||||||
|
|
||||||
|
if ( fd == -1 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
const SocketDir d = GetDirForEvent(socket, event);
|
||||||
|
|
||||||
|
wxFDIODispatcher * const dispatcher = wxFDIODispatcher::Get();
|
||||||
|
if ( !dispatcher )
|
||||||
|
return;
|
||||||
|
|
||||||
|
wxGSocketIOHandler *& handler = socket->m_handler;
|
||||||
|
|
||||||
|
// we should register the new handlers but modify the existing ones in place
|
||||||
|
bool registerHandler;
|
||||||
|
if ( handler )
|
||||||
|
{
|
||||||
|
registerHandler = false;
|
||||||
|
}
|
||||||
|
else // no existing handler
|
||||||
|
{
|
||||||
|
registerHandler = true;
|
||||||
|
handler = new wxGSocketIOHandler(socket);
|
||||||
|
}
|
||||||
|
|
||||||
|
FD(socket, d) = fd;
|
||||||
|
if (d == FD_INPUT)
|
||||||
|
{
|
||||||
|
handler->AddFlag(wxFDIO_INPUT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
handler->AddFlag(wxFDIO_OUTPUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( registerHandler )
|
||||||
|
dispatcher->RegisterFD(fd, handler, handler->GetFlags());
|
||||||
|
else
|
||||||
|
dispatcher->ModifyFD(fd, handler, handler->GetFlags());
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxGSocketIOHandler::OnReadWaiting()
|
void GSocketSelectManager::Uninstall_Callback(GSocket *socket,
|
||||||
|
GSocketEvent event)
|
||||||
{
|
{
|
||||||
m_socket->Detected_Read();
|
const SocketDir d = GetDirForEvent(socket, event);
|
||||||
|
|
||||||
|
const int fd = FD(socket, d);
|
||||||
|
if ( fd == -1 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
FD(socket, d) = -1;
|
||||||
|
|
||||||
|
const wxFDIODispatcherEntryFlags
|
||||||
|
flag = d == FD_INPUT ? wxFDIO_INPUT : wxFDIO_OUTPUT;
|
||||||
|
|
||||||
|
wxFDIODispatcher * const dispatcher = wxFDIODispatcher::Get();
|
||||||
|
if ( !dispatcher )
|
||||||
|
return;
|
||||||
|
|
||||||
|
wxGSocketIOHandler *& handler = socket->m_handler;
|
||||||
|
if ( handler )
|
||||||
|
{
|
||||||
|
handler->RemoveFlag(flag);
|
||||||
|
|
||||||
|
if ( !handler->GetFlags() )
|
||||||
|
{
|
||||||
|
dispatcher->UnregisterFD(fd);
|
||||||
|
delete handler;
|
||||||
|
socket->m_handler = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dispatcher->ModifyFD(fd, handler, handler->GetFlags());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dispatcher->UnregisterFD(fd);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxGSocketIOHandler::OnWriteWaiting()
|
GSocketManager *wxAppTraits::GetSocketManager()
|
||||||
{
|
{
|
||||||
m_socket->Detected_Write();
|
static GSocketSelectManager s_manager;
|
||||||
}
|
|
||||||
|
|
||||||
void wxGSocketIOHandler::OnExceptionWaiting()
|
return &s_manager;
|
||||||
{
|
|
||||||
m_socket->Detected_Read();
|
|
||||||
}
|
|
||||||
|
|
||||||
int wxGSocketIOHandler::GetFlags() const
|
|
||||||
{
|
|
||||||
return m_flags;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void wxGSocketIOHandler::RemoveFlag(wxFDIODispatcherEntryFlags flag)
|
|
||||||
{
|
|
||||||
m_flags &= ~flag;
|
|
||||||
}
|
|
||||||
|
|
||||||
void wxGSocketIOHandler::AddFlag(wxFDIODispatcherEntryFlags flag)
|
|
||||||
{
|
|
||||||
m_flags |= flag;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
// GSocket interface
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::CanUseEventLoop()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::OnInit()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::OnExit()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::Init_Socket(GSocket *socket)
|
|
||||||
{
|
|
||||||
int *m_id;
|
|
||||||
|
|
||||||
socket->m_gui_dependent = (char *)malloc(sizeof(int)*2);
|
|
||||||
m_id = (int *)(socket->m_gui_dependent);
|
|
||||||
|
|
||||||
m_id[0] = -1;
|
|
||||||
m_id[1] = -1;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Destroy_Socket(GSocket *socket)
|
|
||||||
{
|
|
||||||
free(socket->m_gui_dependent);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Install_Callback(GSocket *socket,
|
|
||||||
GSocketEvent event)
|
|
||||||
{
|
|
||||||
int *m_id = (int *)(socket->m_gui_dependent);
|
|
||||||
const int fd = socket->m_fd;
|
|
||||||
|
|
||||||
if ( fd == -1 )
|
|
||||||
return;
|
|
||||||
|
|
||||||
int c;
|
|
||||||
switch (event)
|
|
||||||
{
|
|
||||||
case GSOCK_LOST: /* fall-through */
|
|
||||||
case GSOCK_INPUT: c = 0; break;
|
|
||||||
case GSOCK_OUTPUT: c = 1; break;
|
|
||||||
case GSOCK_CONNECTION: c = ((socket->m_server) ? 0 : 1); break;
|
|
||||||
default: return;
|
|
||||||
}
|
|
||||||
|
|
||||||
wxFDIODispatcher * const dispatcher = wxFDIODispatcher::Get();
|
|
||||||
if ( !dispatcher )
|
|
||||||
return;
|
|
||||||
|
|
||||||
wxGSocketIOHandler *& handler = socket->m_handler;
|
|
||||||
|
|
||||||
// we should register the new handlers but modify the existing ones in place
|
|
||||||
bool registerHandler;
|
|
||||||
if ( handler )
|
|
||||||
{
|
|
||||||
registerHandler = false;
|
|
||||||
}
|
|
||||||
else // no existing handler
|
|
||||||
{
|
|
||||||
registerHandler = true;
|
|
||||||
handler = new wxGSocketIOHandler(socket);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (c == 0)
|
|
||||||
{
|
|
||||||
m_id[0] = fd;
|
|
||||||
handler->AddFlag(wxFDIO_INPUT);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_id[1] = fd;
|
|
||||||
handler->AddFlag(wxFDIO_OUTPUT);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( registerHandler )
|
|
||||||
dispatcher->RegisterFD(fd, handler, handler->GetFlags());
|
|
||||||
else
|
|
||||||
dispatcher->ModifyFD(fd, handler, handler->GetFlags());
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Uninstall_Callback(GSocket *socket,
|
|
||||||
GSocketEvent event)
|
|
||||||
{
|
|
||||||
int *m_id = (int *)(socket->m_gui_dependent);
|
|
||||||
int c;
|
|
||||||
|
|
||||||
switch (event)
|
|
||||||
{
|
|
||||||
case GSOCK_LOST: /* fall-through */
|
|
||||||
case GSOCK_INPUT: c = 0; break;
|
|
||||||
case GSOCK_OUTPUT: c = 1; break;
|
|
||||||
case GSOCK_CONNECTION: c = ((socket->m_server) ? 0 : 1); break;
|
|
||||||
default: return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( m_id[c] == -1 )
|
|
||||||
return;
|
|
||||||
|
|
||||||
int fd = m_id[c];
|
|
||||||
m_id[c] = -1;
|
|
||||||
|
|
||||||
const wxFDIODispatcherEntryFlags flag = c == 0 ? wxFDIO_INPUT : wxFDIO_OUTPUT;
|
|
||||||
|
|
||||||
wxFDIODispatcher * const dispatcher = wxFDIODispatcher::Get();
|
|
||||||
if ( !dispatcher )
|
|
||||||
return;
|
|
||||||
|
|
||||||
wxGSocketIOHandler *& handler = socket->m_handler;
|
|
||||||
if ( handler )
|
|
||||||
{
|
|
||||||
handler->RemoveFlag(flag);
|
|
||||||
|
|
||||||
if ( !handler->GetFlags() )
|
|
||||||
{
|
|
||||||
dispatcher->UnregisterFD(fd);
|
|
||||||
delete handler;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dispatcher->ModifyFD(fd, handler, handler->GetFlags());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dispatcher->UnregisterFD(fd);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Enable_Events(GSocket *socket)
|
|
||||||
{
|
|
||||||
Install_Callback(socket, GSOCK_INPUT);
|
|
||||||
Install_Callback(socket, GSOCK_OUTPUT);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Disable_Events(GSocket *socket)
|
|
||||||
{
|
|
||||||
Uninstall_Callback(socket, GSOCK_INPUT);
|
|
||||||
Uninstall_Callback(socket, GSOCK_OUTPUT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // wxUSE_SOCKETS
|
#endif // wxUSE_SOCKETS
|
||||||
|
@@ -96,14 +96,10 @@ bool wxSelectSets::SetFD(int fd, int flags)
|
|||||||
if ( flags & ms_flags[n] )
|
if ( flags & ms_flags[n] )
|
||||||
{
|
{
|
||||||
wxFD_SET(fd, &m_fds[n]);
|
wxFD_SET(fd, &m_fds[n]);
|
||||||
wxLogTrace(wxSelectDispatcher_Trace,
|
|
||||||
_T("Registered fd %d for %s events"), fd, ms_names[n]);
|
|
||||||
}
|
}
|
||||||
else if ( wxFD_ISSET(fd, (fd_set*) &m_fds[n]) )
|
else if ( wxFD_ISSET(fd, (fd_set*) &m_fds[n]) )
|
||||||
{
|
{
|
||||||
wxFD_CLR(fd, &m_fds[n]);
|
wxFD_CLR(fd, &m_fds[n]);
|
||||||
wxLogTrace(wxSelectDispatcher_Trace,
|
|
||||||
_T("Unregistered fd %d from %s events"), fd, ms_names[n]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,6 +120,9 @@ void wxSelectSets::Handle(int fd, wxFDIOHandler& handler) const
|
|||||||
wxLogTrace(wxSelectDispatcher_Trace,
|
wxLogTrace(wxSelectDispatcher_Trace,
|
||||||
_T("Got %s event on fd %d"), ms_names[n], fd);
|
_T("Got %s event on fd %d"), ms_names[n], fd);
|
||||||
(handler.*ms_handlers[n])();
|
(handler.*ms_handlers[n])();
|
||||||
|
// callback can modify sets and destroy handler
|
||||||
|
// this forces that one event can be processed at one time
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -154,6 +153,8 @@ bool wxSelectDispatcher::RegisterFD(int fd, wxFDIOHandler *handler, int flags)
|
|||||||
if ( fd > m_maxFD )
|
if ( fd > m_maxFD )
|
||||||
m_maxFD = fd;
|
m_maxFD = fd;
|
||||||
|
|
||||||
|
wxLogTrace(wxSelectDispatcher_Trace,
|
||||||
|
_T("Registered fd %d: input:%d, output:%d, exceptional:%d"), fd, (flags & wxFDIO_INPUT) == wxFDIO_INPUT, (flags & wxFDIO_OUTPUT), (flags & wxFDIO_EXCEPTION) == wxFDIO_EXCEPTION);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,6 +165,8 @@ bool wxSelectDispatcher::ModifyFD(int fd, wxFDIOHandler *handler, int flags)
|
|||||||
|
|
||||||
wxASSERT_MSG( fd <= m_maxFD, _T("logic error: registered fd > m_maxFD?") );
|
wxASSERT_MSG( fd <= m_maxFD, _T("logic error: registered fd > m_maxFD?") );
|
||||||
|
|
||||||
|
wxLogTrace(wxSelectDispatcher_Trace,
|
||||||
|
_T("Modified fd %d: input:%d, output:%d, exceptional:%d"), fd, (flags & wxFDIO_INPUT) == wxFDIO_INPUT, (flags & wxFDIO_OUTPUT) == wxFDIO_OUTPUT, (flags & wxFDIO_EXCEPTION) == wxFDIO_EXCEPTION);
|
||||||
return m_sets.SetFD(fd, flags);
|
return m_sets.SetFD(fd, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,11 +189,15 @@ bool wxSelectDispatcher::UnregisterFD(int fd)
|
|||||||
++it )
|
++it )
|
||||||
{
|
{
|
||||||
if ( it->first > m_maxFD )
|
if ( it->first > m_maxFD )
|
||||||
|
{
|
||||||
m_maxFD = it->first;
|
m_maxFD = it->first;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxLogTrace(wxSelectDispatcher_Trace,
|
||||||
|
_T("Removed fd %d, current max: %d"), fd, m_maxFD);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -40,6 +40,7 @@
|
|||||||
#include "wx/sckaddr.h"
|
#include "wx/sckaddr.h"
|
||||||
#include "wx/stopwatch.h"
|
#include "wx/stopwatch.h"
|
||||||
#include "wx/thread.h"
|
#include "wx/thread.h"
|
||||||
|
#include "wx/evtloop.h"
|
||||||
|
|
||||||
// DLL options compatibility check:
|
// DLL options compatibility check:
|
||||||
#include "wx/build.h"
|
#include "wx/build.h"
|
||||||
@@ -101,6 +102,50 @@ public:
|
|||||||
DECLARE_NO_COPY_CLASS(wxSocketState)
|
DECLARE_NO_COPY_CLASS(wxSocketState)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// GSocketManager
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
GSocketManager *GSocketManager::ms_manager = NULL;
|
||||||
|
|
||||||
|
/* static */
|
||||||
|
void GSocketManager::Set(GSocketManager *manager)
|
||||||
|
{
|
||||||
|
wxASSERT_MSG( !ms_manager, "too late to set manager now" );
|
||||||
|
|
||||||
|
ms_manager = manager;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* static */
|
||||||
|
void GSocketManager::Init()
|
||||||
|
{
|
||||||
|
wxASSERT_MSG( !ms_manager, "shouldn't be initialized twice" );
|
||||||
|
|
||||||
|
/*
|
||||||
|
Details: Initialize() creates a hidden window as a sink for socket
|
||||||
|
events, such as 'read completed'. wxMSW has only one message loop
|
||||||
|
for the main thread. If Initialize is called in a secondary thread,
|
||||||
|
the socket window will be created for the secondary thread, but
|
||||||
|
since there is no message loop on this thread, it will never
|
||||||
|
receive events and all socket operations will time out.
|
||||||
|
BTW, the main thread must not be stopped using sleep or block
|
||||||
|
on a semaphore (a bad idea in any case) or socket operations
|
||||||
|
will time out.
|
||||||
|
|
||||||
|
On the Mac side, Initialize() stores a pointer to the CFRunLoop for
|
||||||
|
the main thread. Because secondary threads do not have run loops,
|
||||||
|
adding event notifications to the "Current" loop would have no
|
||||||
|
effect at all, events would never fire.
|
||||||
|
*/
|
||||||
|
wxASSERT_MSG( wxIsMainThread(),
|
||||||
|
"sockets must be initialized from the main thread" );
|
||||||
|
|
||||||
|
wxAppConsole * const app = wxAppConsole::GetInstance();
|
||||||
|
wxCHECK_RET( app, "sockets can't be initialized without wxApp" );
|
||||||
|
|
||||||
|
ms_manager = app->GetTraits()->GetSocketManager();
|
||||||
|
}
|
||||||
|
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
// wxSocketBase
|
// wxSocketBase
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
@@ -122,31 +167,6 @@ bool wxSocketBase::Initialize()
|
|||||||
{
|
{
|
||||||
if ( !m_countInit++ )
|
if ( !m_countInit++ )
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
Details: Initialize() creates a hidden window as a sink for socket
|
|
||||||
events, such as 'read completed'. wxMSW has only one message loop
|
|
||||||
for the main thread. If Initialize is called in a secondary thread,
|
|
||||||
the socket window will be created for the secondary thread, but
|
|
||||||
since there is no message loop on this thread, it will never
|
|
||||||
receive events and all socket operations will time out.
|
|
||||||
BTW, the main thread must not be stopped using sleep or block
|
|
||||||
on a semaphore (a bad idea in any case) or socket operations
|
|
||||||
will time out.
|
|
||||||
|
|
||||||
On the Mac side, Initialize() stores a pointer to the CFRunLoop for
|
|
||||||
the main thread. Because secondary threads do not have run loops,
|
|
||||||
adding event notifications to the "Current" loop would have no
|
|
||||||
effect at all, events would never fire.
|
|
||||||
*/
|
|
||||||
wxASSERT_MSG( wxIsMainThread(),
|
|
||||||
wxT("Call wxSocketBase::Initialize() from the main thread first!"));
|
|
||||||
|
|
||||||
wxAppTraits *traits = wxAppConsole::GetInstance() ?
|
|
||||||
wxAppConsole::GetInstance()->GetTraits() : NULL;
|
|
||||||
GSocketGUIFunctionsTable *functions =
|
|
||||||
traits ? traits->GetSocketGUIFunctionsTable() : NULL;
|
|
||||||
GSocket_SetGUIFunctions(functions);
|
|
||||||
|
|
||||||
if ( !GSocket_Init() )
|
if ( !GSocket_Init() )
|
||||||
{
|
{
|
||||||
m_countInit--;
|
m_countInit--;
|
||||||
@@ -161,7 +181,7 @@ bool wxSocketBase::Initialize()
|
|||||||
void wxSocketBase::Shutdown()
|
void wxSocketBase::Shutdown()
|
||||||
{
|
{
|
||||||
// we should be initialized
|
// we should be initialized
|
||||||
wxASSERT_MSG( m_countInit, _T("extra call to Shutdown()") );
|
wxASSERT_MSG( m_countInit > 0, _T("extra call to Shutdown()") );
|
||||||
if ( --m_countInit == 0 )
|
if ( --m_countInit == 0 )
|
||||||
{
|
{
|
||||||
GSocket_Cleanup();
|
GSocket_Cleanup();
|
||||||
@@ -695,7 +715,9 @@ bool wxSocketBase::_Wait(long seconds,
|
|||||||
else
|
else
|
||||||
timeout = m_timeout * 1000;
|
timeout = m_timeout * 1000;
|
||||||
|
|
||||||
bool has_event_loop = wxTheApp->GetTraits() ? (wxTheApp->GetTraits()->GetSocketGUIFunctionsTable() ? true : false) : false;
|
// check if we are using event loop or not: normally we do in GUI but not in
|
||||||
|
// console applications but this can be overridden
|
||||||
|
const bool has_event_loop = wxEventLoop::GetActive() != NULL;
|
||||||
|
|
||||||
// Wait in an active polling loop.
|
// Wait in an active polling loop.
|
||||||
//
|
//
|
||||||
@@ -1009,6 +1031,8 @@ void wxSocketBase::OnRequest(wxSocketNotify notification)
|
|||||||
void wxSocketBase::Notify(bool notify)
|
void wxSocketBase::Notify(bool notify)
|
||||||
{
|
{
|
||||||
m_notify = notify;
|
m_notify = notify;
|
||||||
|
if (m_socket)
|
||||||
|
m_socket->Notify(notify);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxSocketBase::SetNotify(wxSocketEventFlags flags)
|
void wxSocketBase::SetNotify(wxSocketEventFlags flags)
|
||||||
@@ -1096,8 +1120,8 @@ wxSocketServer::wxSocketServer(const wxSockAddress& addr_man,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setup the socket as server
|
// Setup the socket as server
|
||||||
|
m_socket->Notify(m_notify);
|
||||||
m_socket->SetLocal(addr_man.GetAddress());
|
m_socket->SetLocal(addr_man.GetAddress());
|
||||||
|
|
||||||
if (GetFlags() & wxSOCKET_REUSEADDR) {
|
if (GetFlags() & wxSOCKET_REUSEADDR) {
|
||||||
@@ -1123,6 +1147,8 @@ wxSocketServer::wxSocketServer(const wxSockAddress& addr_man,
|
|||||||
m_socket->SetCallback(GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
m_socket->SetCallback(GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
|
||||||
GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG,
|
GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG,
|
||||||
wx_socket_callback, (char *)this);
|
wx_socket_callback, (char *)this);
|
||||||
|
|
||||||
|
wxLogTrace( wxTRACE_Socket, _T("wxSocketServer on fd %d"), m_socket->m_fd );
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
@@ -1310,6 +1336,9 @@ bool wxSocketClient::DoConnect(wxSockAddress& addr_man, wxSockAddress* local, bo
|
|||||||
m_socket->SetPeer(addr_man.GetAddress());
|
m_socket->SetPeer(addr_man.GetAddress());
|
||||||
err = m_socket->Connect(GSOCK_STREAMED);
|
err = m_socket->Connect(GSOCK_STREAMED);
|
||||||
|
|
||||||
|
//this will register for callbacks - must be called after m_socket->m_fd was initialized
|
||||||
|
m_socket->Notify(m_notify);
|
||||||
|
|
||||||
if (!wait)
|
if (!wait)
|
||||||
m_socket->SetNonBlocking(0);
|
m_socket->SetNonBlocking(0);
|
||||||
|
|
||||||
@@ -1365,6 +1394,7 @@ wxDatagramSocket::wxDatagramSocket( const wxSockAddress& addr,
|
|||||||
wxFAIL_MSG( _T("datagram socket not new'd") );
|
wxFAIL_MSG( _T("datagram socket not new'd") );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
m_socket->Notify(m_notify);
|
||||||
// Setup the socket as non connection oriented
|
// Setup the socket as non connection oriented
|
||||||
m_socket->SetLocal(addr.GetAddress());
|
m_socket->SetLocal(addr.GetAddress());
|
||||||
if (flags & wxSOCKET_REUSEADDR)
|
if (flags & wxSOCKET_REUSEADDR)
|
||||||
|
@@ -1,17 +1,18 @@
|
|||||||
/* -------------------------------------------------------------------------
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
* Project: GSocket (Generic Socket) for WX
|
// Name: gtk/gsockgtk.cpp
|
||||||
* Name: src/gtk/gsockgtk.cpp
|
// Purpose: implementation of wxGTK-specific socket event handling
|
||||||
* Purpose: GSocket: GTK part
|
// Author: Guilhem Lavaux, Vadim Zeitlin
|
||||||
* Licence: The wxWindows licence
|
// Created: 1999
|
||||||
* CVSID: $Id$
|
// RCS-ID: $Id$
|
||||||
* -------------------------------------------------------------------------
|
// Copyright: (c) 1999, 2007 wxWidgets dev team
|
||||||
*/
|
// Licence: wxWindows licence
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// For compilers that support precompilation, includes "wx.h".
|
// For compilers that support precompilation, includes "wx.h".
|
||||||
#include "wx/wxprec.h"
|
#include "wx/wxprec.h"
|
||||||
|
|
||||||
#if wxUSE_SOCKETS
|
#if wxUSE_SOCKETS
|
||||||
|
|
||||||
#include <assert.h>
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
@@ -19,8 +20,7 @@
|
|||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
#include "wx/gsocket.h"
|
#include "wx/gsocket.h"
|
||||||
#include "wx/unix/gsockunx.h"
|
#include "wx/apptrait.h"
|
||||||
|
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
static
|
static
|
||||||
@@ -37,95 +37,30 @@ void _GSocket_GDK_Input(gpointer data,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::CanUseEventLoop()
|
class GTKSocketManager : public GSocketInputBasedManager
|
||||||
{ return true; }
|
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::OnInit(void)
|
|
||||||
{
|
{
|
||||||
return 1;
|
public:
|
||||||
}
|
virtual int AddInput(GSocket *socket, SocketDir d)
|
||||||
|
{
|
||||||
|
return gdk_input_add
|
||||||
|
(
|
||||||
|
socket->m_fd,
|
||||||
|
d == FD_OUTPUT ? GDK_INPUT_WRITE : GDK_INPUT_READ,
|
||||||
|
_GSocket_GDK_Input,
|
||||||
|
socket
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::OnExit(void)
|
virtual void RemoveInput(int fd)
|
||||||
|
{
|
||||||
|
gdk_input_remove(fd);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
GSocketManager *wxGUIAppTraits::GetSocketManager()
|
||||||
{
|
{
|
||||||
}
|
static GTKSocketManager s_manager;
|
||||||
|
return &s_manager;
|
||||||
bool GSocketGUIFunctionsTableConcrete::Init_Socket(GSocket *socket)
|
|
||||||
{
|
|
||||||
gint *m_id;
|
|
||||||
|
|
||||||
socket->m_gui_dependent = (char *)malloc(sizeof(gint)*2);
|
|
||||||
m_id = (gint *)(socket->m_gui_dependent);
|
|
||||||
|
|
||||||
m_id[0] = -1;
|
|
||||||
m_id[1] = -1;
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Destroy_Socket(GSocket *socket)
|
|
||||||
{
|
|
||||||
free(socket->m_gui_dependent);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Install_Callback(GSocket *socket, GSocketEvent event)
|
|
||||||
{
|
|
||||||
gint *m_id = (gint *)(socket->m_gui_dependent);
|
|
||||||
int c;
|
|
||||||
|
|
||||||
if (socket->m_fd == -1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (event)
|
|
||||||
{
|
|
||||||
case GSOCK_LOST: /* fall-through */
|
|
||||||
case GSOCK_INPUT: c = 0; break;
|
|
||||||
case GSOCK_OUTPUT: c = 1; break;
|
|
||||||
case GSOCK_CONNECTION: c = ((socket->m_server) ? 0 : 1); break;
|
|
||||||
default: return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_id[c] != -1)
|
|
||||||
gdk_input_remove(m_id[c]);
|
|
||||||
|
|
||||||
m_id[c] = gdk_input_add(socket->m_fd,
|
|
||||||
(c ? GDK_INPUT_WRITE : GDK_INPUT_READ),
|
|
||||||
_GSocket_GDK_Input,
|
|
||||||
(gpointer)socket);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Uninstall_Callback(GSocket *socket, GSocketEvent event)
|
|
||||||
{
|
|
||||||
gint *m_id = (gint *)(socket->m_gui_dependent);
|
|
||||||
int c;
|
|
||||||
|
|
||||||
assert( m_id != NULL );
|
|
||||||
|
|
||||||
switch (event)
|
|
||||||
{
|
|
||||||
case GSOCK_LOST: /* fall-through */
|
|
||||||
case GSOCK_INPUT: c = 0; break;
|
|
||||||
case GSOCK_OUTPUT: c = 1; break;
|
|
||||||
case GSOCK_CONNECTION: c = ((socket->m_server) ? 0 : 1); break;
|
|
||||||
default: return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_id[c] != -1)
|
|
||||||
{
|
|
||||||
gdk_input_remove(m_id[c]);
|
|
||||||
m_id[c] = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Enable_Events(GSocket *socket)
|
|
||||||
{
|
|
||||||
Install_Callback(socket, GSOCK_INPUT);
|
|
||||||
Install_Callback(socket, GSOCK_OUTPUT);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Disable_Events(GSocket *socket)
|
|
||||||
{
|
|
||||||
Uninstall_Callback(socket, GSOCK_INPUT);
|
|
||||||
Uninstall_Callback(socket, GSOCK_OUTPUT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // wxUSE_SOCKETS
|
#endif // wxUSE_SOCKETS
|
||||||
|
@@ -1,17 +1,18 @@
|
|||||||
/* -------------------------------------------------------------------------
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
* Project: GSocket (Generic Socket) for WX
|
// Name: gtk/gsockgtk.cpp
|
||||||
* Name: src/gtk1/gsockgtk.cpp
|
// Purpose: implementation of wxGTK-specific socket event handling
|
||||||
* Purpose: GSocket: GTK part
|
// Author: Guilhem Lavaux, Vadim Zeitlin
|
||||||
* Licence: The wxWindows licence
|
// Created: 1999
|
||||||
* CVSID: $Id$
|
// RCS-ID: $Id$
|
||||||
* -------------------------------------------------------------------------
|
// Copyright: (c) 1999, 2007 wxWidgets dev team
|
||||||
*/
|
// Licence: wxWindows licence
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// For compilers that support precompilation, includes "wx.h".
|
// For compilers that support precompilation, includes "wx.h".
|
||||||
#include "wx/wxprec.h"
|
#include "wx/wxprec.h"
|
||||||
|
|
||||||
#if wxUSE_SOCKETS
|
#if wxUSE_SOCKETS
|
||||||
|
|
||||||
#include <assert.h>
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
@@ -19,8 +20,7 @@
|
|||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
#include "wx/gsocket.h"
|
#include "wx/gsocket.h"
|
||||||
#include "wx/unix/gsockunx.h"
|
#include "wx/apptrait.h"
|
||||||
|
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
static
|
static
|
||||||
@@ -37,100 +37,30 @@ void _GSocket_GDK_Input(gpointer data,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::CanUseEventLoop()
|
class GTKSocketManager : public GSocketInputBasedManager
|
||||||
{ return true; }
|
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::OnInit(void)
|
|
||||||
{
|
{
|
||||||
return 1;
|
public:
|
||||||
|
virtual int AddInput(GSocket *socket, SocketDir d)
|
||||||
|
{
|
||||||
|
return gdk_input_add
|
||||||
|
(
|
||||||
|
socket->m_fd,
|
||||||
|
d == FD_OUTPUT ? GDK_INPUT_WRITE : GDK_INPUT_READ,
|
||||||
|
_GSocket_GDK_Input,
|
||||||
|
socket
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void RemoveInput(int fd)
|
||||||
|
{
|
||||||
|
gdk_input_remove(fd);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
GSocketManager *wxGUIAppTraits::GetSocketManager()
|
||||||
|
{
|
||||||
|
static GTKSocketManager s_manager;
|
||||||
|
return &s_manager;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::OnExit(void)
|
#endif // wxUSE_SOCKETS
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::Init_Socket(GSocket *socket)
|
|
||||||
{
|
|
||||||
gint *m_id;
|
|
||||||
|
|
||||||
socket->m_gui_dependent = (char *)malloc(sizeof(gint)*2);
|
|
||||||
m_id = (gint *)(socket->m_gui_dependent);
|
|
||||||
|
|
||||||
m_id[0] = -1;
|
|
||||||
m_id[1] = -1;
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Destroy_Socket(GSocket *socket)
|
|
||||||
{
|
|
||||||
free(socket->m_gui_dependent);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Install_Callback(GSocket *socket, GSocketEvent event)
|
|
||||||
{
|
|
||||||
gint *m_id = (gint *)(socket->m_gui_dependent);
|
|
||||||
int c;
|
|
||||||
|
|
||||||
if (socket->m_fd == -1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (event)
|
|
||||||
{
|
|
||||||
case GSOCK_LOST: /* fall-through */
|
|
||||||
case GSOCK_INPUT: c = 0; break;
|
|
||||||
case GSOCK_OUTPUT: c = 1; break;
|
|
||||||
case GSOCK_CONNECTION: c = ((socket->m_server) ? 0 : 1); break;
|
|
||||||
default: return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_id[c] != -1)
|
|
||||||
gdk_input_remove(m_id[c]);
|
|
||||||
|
|
||||||
m_id[c] = gdk_input_add(socket->m_fd,
|
|
||||||
(c ? GDK_INPUT_WRITE : GDK_INPUT_READ),
|
|
||||||
_GSocket_GDK_Input,
|
|
||||||
(gpointer)socket);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Uninstall_Callback(GSocket *socket, GSocketEvent event)
|
|
||||||
{
|
|
||||||
gint *m_id = (gint *)(socket->m_gui_dependent);
|
|
||||||
int c;
|
|
||||||
|
|
||||||
assert( m_id != NULL );
|
|
||||||
|
|
||||||
switch (event)
|
|
||||||
{
|
|
||||||
case GSOCK_LOST: /* fall-through */
|
|
||||||
case GSOCK_INPUT: c = 0; break;
|
|
||||||
case GSOCK_OUTPUT: c = 1; break;
|
|
||||||
case GSOCK_CONNECTION: c = ((socket->m_server) ? 0 : 1); break;
|
|
||||||
default: return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_id[c] != -1)
|
|
||||||
{
|
|
||||||
gdk_input_remove(m_id[c]);
|
|
||||||
m_id[c] = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Enable_Events(GSocket *socket)
|
|
||||||
{
|
|
||||||
Install_Callback(socket, GSOCK_INPUT);
|
|
||||||
Install_Callback(socket, GSOCK_OUTPUT);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Disable_Events(GSocket *socket)
|
|
||||||
{
|
|
||||||
Uninstall_Callback(socket, GSOCK_INPUT);
|
|
||||||
Uninstall_Callback(socket, GSOCK_OUTPUT);
|
|
||||||
}
|
|
||||||
|
|
||||||
#else /* !wxUSE_SOCKETS */
|
|
||||||
|
|
||||||
/* some compilers don't like having empty source files */
|
|
||||||
static int wxDummyGsockVar = 0;
|
|
||||||
|
|
||||||
#endif /* wxUSE_SOCKETS/!wxUSE_SOCKETS */
|
|
||||||
|
@@ -194,19 +194,11 @@ static void SetDefaultEndpointModes(EndpointRef ep , void *data )
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Global initialisers */
|
bool GSocket_Init()
|
||||||
|
|
||||||
void GSocket_SetGUIFunctions(GSocketGUIFunctionsTable *table)
|
|
||||||
{
|
{
|
||||||
// do nothing, wxMac doesn't have wxBase-GUI separation yet
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int GSocket_Init()
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GSocket_Verify_Inited() ;
|
|
||||||
bool GSocket_Verify_Inited()
|
bool GSocket_Verify_Inited()
|
||||||
{
|
{
|
||||||
OSStatus err ;
|
OSStatus err ;
|
||||||
|
@@ -10,205 +10,309 @@
|
|||||||
|
|
||||||
#if wxUSE_SOCKETS
|
#if wxUSE_SOCKETS
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include "wx/gsocket.h"
|
#include "wx/gsocket.h"
|
||||||
#include "wx/unix/gsockunx.h"
|
#include "wx/apptrait.h"
|
||||||
|
|
||||||
#include <CoreFoundation/CoreFoundation.h>
|
#include <CoreFoundation/CoreFoundation.h>
|
||||||
|
|
||||||
#define ALL_CALLBACK_TYPES (kCFSocketReadCallBack | kCFSocketWriteCallBack | kCFSocketConnectCallBack)
|
// ----------------------------------------------------------------------------
|
||||||
|
// Mac-specific data associated with each socket by GSocketCFManager
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
struct MacGSocketData
|
class MacGSocketData
|
||||||
{
|
{
|
||||||
CFSocketRef socket;
|
public:
|
||||||
CFRunLoopSourceRef source;
|
// default ctor creates the object in uninitialized state, use Initialize()
|
||||||
|
// later to make it usable
|
||||||
|
MacGSocketData()
|
||||||
|
{
|
||||||
|
m_socket = NULL;
|
||||||
|
m_source = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// initialize the data associated with the given socket
|
||||||
|
bool Initialize(GSocket *socket)
|
||||||
|
{
|
||||||
|
wxASSERT_MSG( !IsInitialized(), "shouldn't be called twice" );
|
||||||
|
|
||||||
|
// we need a valid Unix socket to create a CFSocket
|
||||||
|
if ( socket->m_fd < 0 )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
CFSocketContext cont;
|
||||||
|
cont.version = 0; // this currently must be 0
|
||||||
|
cont.info = socket; // pointer passed to our callback
|
||||||
|
cont.retain = NULL; // no need to retain/release/copy the
|
||||||
|
cont.release = NULL; // socket pointer, so all callbacks
|
||||||
|
cont.copyDescription = NULL; // can be left NULL
|
||||||
|
|
||||||
|
m_socket = CFSocketCreateWithNative
|
||||||
|
(
|
||||||
|
NULL, // default allocator
|
||||||
|
socket->m_fd,
|
||||||
|
kCFSocketReadCallBack |
|
||||||
|
kCFSocketWriteCallBack |
|
||||||
|
kCFSocketConnectCallBack,
|
||||||
|
SocketCallback,
|
||||||
|
&cont
|
||||||
|
);
|
||||||
|
if ( !m_socket )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
m_source = CFSocketCreateRunLoopSource(NULL, m_socket, 0);
|
||||||
|
|
||||||
|
return m_source != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// free the objects created by Initialize()
|
||||||
|
~MacGSocketData()
|
||||||
|
{
|
||||||
|
if ( m_source )
|
||||||
|
CFRelease(m_source);
|
||||||
|
if ( m_socket )
|
||||||
|
CFRelease(m_socket);
|
||||||
|
}
|
||||||
|
|
||||||
|
// return true if Initialize() had already been called successfully
|
||||||
|
bool IsInitialized() const { return m_source && m_socket; }
|
||||||
|
|
||||||
|
|
||||||
|
// accessors: should only be called if IsInitialized()
|
||||||
|
CFSocketRef GetSocket() const
|
||||||
|
{
|
||||||
|
wxASSERT( IsInitialized() );
|
||||||
|
|
||||||
|
return m_socket;
|
||||||
|
}
|
||||||
|
|
||||||
|
CFRunLoopSourceRef GetSource() const
|
||||||
|
{
|
||||||
|
wxASSERT( IsInitialized() );
|
||||||
|
|
||||||
|
return m_source;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
static void SocketCallback(CFSocketRef WXUNUSED(s),
|
||||||
|
CFSocketCallBackType callbackType,
|
||||||
|
CFDataRef WXUNUSED(address),
|
||||||
|
const void* data,
|
||||||
|
void* info)
|
||||||
|
{
|
||||||
|
GSocket * const socket = wx_static_cast(GSocket *, info);
|
||||||
|
MacGSocketData * const
|
||||||
|
macdata = wx_static_cast(MacGSocketData *, socket->m_gui_dependent);
|
||||||
|
if ( !macdata )
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch (callbackType)
|
||||||
|
{
|
||||||
|
case kCFSocketConnectCallBack:
|
||||||
|
wxASSERT(!socket->m_server);
|
||||||
|
// KH: If data is non-NULL, the connect failed, do not call Detected_Write,
|
||||||
|
// which will only end up creating a spurious connect event because the
|
||||||
|
// call to getsocketopt SO_ERROR inexplicably returns no error.
|
||||||
|
// The change in behavior cannot be traced to any particular commit or
|
||||||
|
// timeframe so I'm not sure what to think, but after so many hours,
|
||||||
|
// this seems to address the issue and it's time to move on.
|
||||||
|
if (data == NULL)
|
||||||
|
socket->Detected_Write();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case kCFSocketReadCallBack:
|
||||||
|
socket->Detected_Read();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case kCFSocketWriteCallBack:
|
||||||
|
socket->Detected_Write();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
wxFAIL_MSG( "unexpected socket callback" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CFSocketRef m_socket;
|
||||||
|
CFRunLoopSourceRef m_source;
|
||||||
|
|
||||||
|
DECLARE_NO_COPY_CLASS(MacGSocketData);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Sockets must use the event loop on the main thread
|
// ----------------------------------------------------------------------------
|
||||||
// We will store the main loop's reference when Initialize is called
|
// CoreFoundation implementation of GSocketManager
|
||||||
static CFRunLoopRef s_mainRunLoop = NULL;
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
void Mac_Socket_Callback(CFSocketRef WXUNUSED(s), CFSocketCallBackType callbackType,
|
class GSocketCFManager : public GSocketManager
|
||||||
CFDataRef WXUNUSED(address), const void* data, void* info)
|
|
||||||
{
|
{
|
||||||
GSocket* socket = (GSocket*)info;
|
public:
|
||||||
struct MacGSocketData* macdata;
|
virtual bool OnInit();
|
||||||
macdata = (struct MacGSocketData*)socket->m_gui_dependent;
|
virtual void OnExit();
|
||||||
if (!macdata) return;
|
|
||||||
switch (callbackType)
|
|
||||||
{
|
|
||||||
case kCFSocketConnectCallBack:
|
|
||||||
assert(!socket->m_server);
|
|
||||||
// KH: If data is non-NULL, the connect failed, do not call Detected_Write,
|
|
||||||
// which will only end up creating a spurious connect event because the
|
|
||||||
// call to getsocketopt SO_ERROR inexplicably returns no error.
|
|
||||||
// The change in behavior cannot be traced to any particular commit or
|
|
||||||
// timeframe so I'm not sure what to think, but after so many hours,
|
|
||||||
// this seems to address the issue and it's time to move on.
|
|
||||||
if (data == NULL)
|
|
||||||
socket->Detected_Write();
|
|
||||||
break;
|
|
||||||
case kCFSocketReadCallBack:
|
|
||||||
socket->Detected_Read();
|
|
||||||
break;
|
|
||||||
case kCFSocketWriteCallBack:
|
|
||||||
socket->Detected_Write();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break; /* We shouldn't get here. */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct MacGSocketData* _GSocket_Get_Mac_Socket(GSocket *socket)
|
virtual bool Init_Socket(GSocket *socket);
|
||||||
{
|
virtual void Destroy_Socket(GSocket *socket);
|
||||||
/* If socket is already created, returns a pointer to the data */
|
|
||||||
/* Otherwise, creates socket and returns the pointer */
|
|
||||||
CFSocketContext cont;
|
|
||||||
struct MacGSocketData* data = (struct MacGSocketData*)socket->m_gui_dependent;
|
|
||||||
|
|
||||||
if (data && data->source) return data;
|
virtual void Install_Callback(GSocket *socket, GSocketEvent event);
|
||||||
|
virtual void Uninstall_Callback(GSocket *socket, GSocketEvent event);
|
||||||
|
|
||||||
/* CFSocket has not been created, create it: */
|
virtual void Enable_Events(GSocket *socket);
|
||||||
if (socket->m_fd < 0 || !data) return NULL;
|
virtual void Disable_Events(GSocket *socket);
|
||||||
cont.version = 0; cont.retain = NULL;
|
|
||||||
cont.release = NULL; cont.copyDescription = NULL;
|
|
||||||
cont.info = socket;
|
|
||||||
|
|
||||||
CFSocketRef cf = CFSocketCreateWithNative(NULL, socket->m_fd,
|
private:
|
||||||
ALL_CALLBACK_TYPES, Mac_Socket_Callback, &cont);
|
// retrieve our custom data associated with the given socket
|
||||||
CFRunLoopSourceRef source = CFSocketCreateRunLoopSource(NULL, cf, 0);
|
//
|
||||||
assert(source);
|
// this is a low level function, use GetInitializedData() instead if the
|
||||||
socket->m_gui_dependent = (char*)data;
|
// data pointer should also be correctly initialized if it hadn't been done
|
||||||
|
// yet
|
||||||
|
//
|
||||||
|
// may return NULL if we hadn't created the data for this socket yet
|
||||||
|
MacGSocketData *GetData(GSocket *socket) const
|
||||||
|
{
|
||||||
|
return wx_static_cast(MacGSocketData *, socket->m_gui_dependent);
|
||||||
|
}
|
||||||
|
|
||||||
/* Keep the source and the socket around. */
|
// return the custom data pointer initializing it if it hadn't been done
|
||||||
data->source = source;
|
// yet
|
||||||
data->socket = cf;
|
//
|
||||||
|
// may return NULL if there is no associated data
|
||||||
|
MacGSocketData *GetInitializedData(GSocket *socket) const
|
||||||
|
{
|
||||||
|
MacGSocketData * const data = GetData(socket);
|
||||||
|
if ( data && !data->IsInitialized() )
|
||||||
|
{
|
||||||
|
if ( !data->Initialize(socket) )
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::CanUseEventLoop()
|
// return CFSocket callback mask corresponding to the given event (the
|
||||||
{ return true; }
|
// socket parameter is needed because some events are interpreted
|
||||||
|
// differently depending on whether they happen on a server or on a client
|
||||||
|
// socket)
|
||||||
|
static int GetCFCallback(GSocket *socket, GSocketEvent event);
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::OnInit(void)
|
|
||||||
|
// Sockets must use the event loop on the main thread so we store a
|
||||||
|
// reference to the main loop here in OnInit()
|
||||||
|
static CFRunLoopRef ms_mainRunLoop;
|
||||||
|
};
|
||||||
|
|
||||||
|
CFRunLoopRef GSocketCFManager::ms_mainRunLoop = NULL;
|
||||||
|
|
||||||
|
bool GSocketCFManager::OnInit()
|
||||||
{
|
{
|
||||||
// No need to store the main loop again
|
// No need to store the main loop again
|
||||||
if (s_mainRunLoop != NULL)
|
if (ms_mainRunLoop != NULL)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// Get the loop for the main thread so our events will actually fire.
|
// Get the loop for the main thread so our events will actually fire.
|
||||||
// The common socket.cpp code will assert if initialize is called from a
|
// The common socket.cpp code will assert if initialize is called from a
|
||||||
// secondary thread, otherwise Mac would have the same problems as MSW
|
// secondary thread, otherwise Mac would have the same problems as MSW
|
||||||
s_mainRunLoop = CFRunLoopGetCurrent();
|
ms_mainRunLoop = CFRunLoopGetCurrent();
|
||||||
CFRetain(s_mainRunLoop);
|
if ( !ms_mainRunLoop )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
CFRetain(ms_mainRunLoop);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::OnExit(void)
|
void GSocketCFManager::OnExit()
|
||||||
{
|
{
|
||||||
// Release the reference count, and set the reference back to NULL
|
// Release the reference count, and set the reference back to NULL
|
||||||
CFRelease(s_mainRunLoop);
|
CFRelease(ms_mainRunLoop);
|
||||||
s_mainRunLoop = NULL;
|
ms_mainRunLoop = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::Init_Socket(GSocket *socket)
|
bool GSocketCFManager::Init_Socket(GSocket *socket)
|
||||||
{
|
{
|
||||||
struct MacGSocketData *data = (struct MacGSocketData *)malloc(sizeof(struct MacGSocketData));
|
socket->m_gui_dependent = new MacGSocketData;
|
||||||
if (data)
|
return true;
|
||||||
{
|
|
||||||
socket->m_gui_dependent = (char*)data;
|
|
||||||
data->socket = NULL;
|
|
||||||
data->source = NULL;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Destroy_Socket(GSocket *socket)
|
void GSocketCFManager::Destroy_Socket(GSocket *socket)
|
||||||
{
|
{
|
||||||
struct MacGSocketData *data = (struct MacGSocketData*)(socket->m_gui_dependent);
|
MacGSocketData * const data = GetData(socket);
|
||||||
if (data)
|
if ( data )
|
||||||
{
|
{
|
||||||
if ( data->source )
|
delete data;
|
||||||
CFRelease(data->source);
|
socket->m_gui_dependent = NULL;
|
||||||
if ( data->socket )
|
|
||||||
CFRelease(data->socket);
|
|
||||||
free(data);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Install_Callback(GSocket *socket, GSocketEvent event)
|
/* static */
|
||||||
|
int GSocketCFManager::GetCFCallback(GSocket *socket, GSocketEvent event)
|
||||||
{
|
{
|
||||||
int c;
|
switch ( event )
|
||||||
struct MacGSocketData* data = _GSocket_Get_Mac_Socket(socket);
|
|
||||||
if (!data) return;
|
|
||||||
switch (event)
|
|
||||||
{
|
{
|
||||||
case GSOCK_CONNECTION:
|
case GSOCK_CONNECTION:
|
||||||
if(socket->m_server)
|
return socket->m_server ? kCFSocketReadCallBack
|
||||||
c = kCFSocketReadCallBack;
|
: kCFSocketConnectCallBack;
|
||||||
else
|
|
||||||
c = kCFSocketConnectCallBack;
|
case GSOCK_LOST:
|
||||||
break;
|
case GSOCK_INPUT:
|
||||||
case GSOCK_LOST:
|
return kCFSocketReadCallBack;
|
||||||
case GSOCK_INPUT:
|
|
||||||
c = kCFSocketReadCallBack;
|
case GSOCK_OUTPUT:
|
||||||
break;
|
return kCFSocketWriteCallBack;
|
||||||
case GSOCK_OUTPUT:
|
|
||||||
c = kCFSocketWriteCallBack;
|
case GSOCK_MAX_EVENT:
|
||||||
break;
|
wxFAIL_MSG( "invalid GSocketEvent" );
|
||||||
default:
|
return 0;
|
||||||
c = 0;
|
|
||||||
|
default:
|
||||||
|
wxFAIL_MSG( "unknown GSocketEvent" );
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
CFSocketEnableCallBacks(data->socket, c);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Uninstall_Callback(GSocket *socket, GSocketEvent event)
|
void GSocketCFManager::Install_Callback(GSocket *socket, GSocketEvent event)
|
||||||
{
|
{
|
||||||
int c;
|
const MacGSocketData * const data = GetInitializedData(socket);
|
||||||
struct MacGSocketData* data = _GSocket_Get_Mac_Socket(socket);
|
if ( !data )
|
||||||
if (!data) return;
|
return;
|
||||||
switch (event)
|
|
||||||
{
|
CFSocketEnableCallBacks(data->GetSocket(), GetCFCallback(socket, event));
|
||||||
case GSOCK_CONNECTION:
|
|
||||||
if(socket->m_server)
|
|
||||||
c = kCFSocketReadCallBack;
|
|
||||||
else
|
|
||||||
c = kCFSocketConnectCallBack;
|
|
||||||
break;
|
|
||||||
case GSOCK_LOST:
|
|
||||||
case GSOCK_INPUT:
|
|
||||||
c = kCFSocketReadCallBack;
|
|
||||||
break;
|
|
||||||
case GSOCK_OUTPUT:
|
|
||||||
c = kCFSocketWriteCallBack;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
c = 0;
|
|
||||||
}
|
|
||||||
CFSocketDisableCallBacks(data->socket, c);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Enable_Events(GSocket *socket)
|
void GSocketCFManager::Uninstall_Callback(GSocket *socket, GSocketEvent event)
|
||||||
{
|
{
|
||||||
struct MacGSocketData* data = _GSocket_Get_Mac_Socket(socket);
|
const MacGSocketData * const data = GetInitializedData(socket);
|
||||||
if (!data) return;
|
if ( !data )
|
||||||
|
return;
|
||||||
|
|
||||||
CFRunLoopAddSource(s_mainRunLoop, data->source, kCFRunLoopCommonModes);
|
CFSocketDisableCallBacks(data->GetSocket(), GetCFCallback(socket, event));
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Disable_Events(GSocket *socket)
|
void GSocketCFManager::Enable_Events(GSocket *socket)
|
||||||
{
|
{
|
||||||
struct MacGSocketData* data = _GSocket_Get_Mac_Socket(socket);
|
const MacGSocketData * const data = GetInitializedData(socket);
|
||||||
if (!data) return;
|
if ( !data )
|
||||||
|
return;
|
||||||
|
|
||||||
/* CFSocketInvalidate does CFRunLoopRemoveSource anyway */
|
CFRunLoopAddSource(ms_mainRunLoop, data->GetSource(), kCFRunLoopCommonModes);
|
||||||
CFRunLoopRemoveSource(s_mainRunLoop, data->source, kCFRunLoopCommonModes);
|
}
|
||||||
CFSocketInvalidate(data->socket);
|
|
||||||
|
void GSocketCFManager::Disable_Events(GSocket *socket)
|
||||||
|
{
|
||||||
|
const MacGSocketData * const data = GetInitializedData(socket);
|
||||||
|
if ( !data )
|
||||||
|
return;
|
||||||
|
|
||||||
|
// CFSocketInvalidate does CFRunLoopRemoveSource anyway
|
||||||
|
CFRunLoopRemoveSource(ms_mainRunLoop, data->GetSource(), kCFRunLoopCommonModes);
|
||||||
|
CFSocketInvalidate(data->GetSocket());
|
||||||
|
|
||||||
// CFSocketInvalidate has closed the socket so we want to make sure GSocket knows this
|
// CFSocketInvalidate has closed the socket so we want to make sure GSocket knows this
|
||||||
socket->m_fd = -1 /*INVALID_SOCKET*/;
|
socket->m_fd = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GSocketManager *wxAppTraits::GetSocketManager()
|
||||||
|
{
|
||||||
|
static GSocketCFManager s_manager;
|
||||||
|
|
||||||
|
return &s_manager;
|
||||||
|
};
|
||||||
|
|
||||||
#endif // wxUSE_SOCKETS
|
#endif // wxUSE_SOCKETS
|
||||||
|
@@ -1,22 +1,24 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// Name: src/motif/gsockmot.cpp
|
// Name: motif/gsockmot.cpp
|
||||||
// Project: GSocket (Generic Socket) for WX
|
// Purpose: implementation of wxMotif-specific socket event handling
|
||||||
// Purpose: GSocket: Motif part
|
// Author: Guilhem Lavaux, Vadim Zeitlin
|
||||||
// CVSID: $Id$
|
// Created: 1999
|
||||||
// Licence: wxWindows licence
|
// RCS-ID: $Id$
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
// Copyright: (c) 1999, 2007 wxWidgets dev team
|
||||||
|
// Licence: wxWindows licence
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// For compilers that support precompilation, includes "wx.h".
|
// For compilers that support precompilation, includes "wx.h".
|
||||||
#include "wx/wxprec.h"
|
#include "wx/wxprec.h"
|
||||||
|
|
||||||
#if wxUSE_SOCKETS
|
#if wxUSE_SOCKETS
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <X11/Intrinsic.h> // XtAppAdd/RemoveInput()
|
||||||
#include <X11/Intrinsic.h>
|
#include "wx/motif/private.h" // wxGetAppContext()
|
||||||
#include "wx/gsocket.h"
|
#include "wx/gsocket.h"
|
||||||
#include "wx/unix/gsockunx.h"
|
#include "wx/apptrait.h"
|
||||||
|
|
||||||
extern "C" XtAppContext wxGetAppContext();
|
extern "C" {
|
||||||
|
|
||||||
static void _GSocket_Motif_Input(XtPointer data, int *WXUNUSED(fid),
|
static void _GSocket_Motif_Input(XtPointer data, int *WXUNUSED(fid),
|
||||||
XtInputId *WXUNUSED(id))
|
XtInputId *WXUNUSED(id))
|
||||||
@@ -34,109 +36,35 @@ static void _GSocket_Motif_Output(XtPointer data, int *WXUNUSED(fid),
|
|||||||
socket->Detected_Write();
|
socket->Detected_Write();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::CanUseEventLoop()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::OnInit(void)
|
class MotifSocketManager : public GSocketInputBasedManager
|
||||||
{
|
{
|
||||||
return 1;
|
public:
|
||||||
}
|
virtual int AddInput(GSocket *socket, SocketDir d)
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::OnExit(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::Init_Socket(GSocket *socket)
|
|
||||||
{
|
|
||||||
int *m_id;
|
|
||||||
|
|
||||||
socket->m_gui_dependent = (char *)malloc(sizeof(int)*2);
|
|
||||||
m_id = (int *)(socket->m_gui_dependent);
|
|
||||||
|
|
||||||
m_id[0] = -1;
|
|
||||||
m_id[1] = -1;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Destroy_Socket(GSocket *socket)
|
|
||||||
{
|
|
||||||
free(socket->m_gui_dependent);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Install_Callback(GSocket *socket, GSocketEvent event)
|
|
||||||
{
|
|
||||||
int *m_id = (int *)(socket->m_gui_dependent);
|
|
||||||
int c;
|
|
||||||
|
|
||||||
if (socket->m_fd == -1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (event)
|
|
||||||
{
|
{
|
||||||
case GSOCK_LOST: /* fall-through */
|
return XtAppAddInput
|
||||||
case GSOCK_INPUT: c = 0; break;
|
(
|
||||||
case GSOCK_OUTPUT: c = 1; break;
|
wxGetAppContext(),
|
||||||
case GSOCK_CONNECTION: c = ((socket->m_server) ? 0 : 1); break;
|
socket->m_fd,
|
||||||
default: return;
|
(XtPointer)(d == FD_OUTPUT ? XtInputWriteMask
|
||||||
|
: XtInputReadMask),
|
||||||
|
d == FD_OUTPUT ? _GSocket_Motif_Output
|
||||||
|
: _GSocket_Motif_Input,
|
||||||
|
socket
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_id[c] != -1)
|
virtual void RemoveInput(int fd)
|
||||||
XtRemoveInput(m_id[c]);
|
|
||||||
|
|
||||||
if (c == 0)
|
|
||||||
{
|
{
|
||||||
m_id[0] = XtAppAddInput(wxGetAppContext(), socket->m_fd,
|
XtRemoveInput(fd);
|
||||||
(XtPointer *)XtInputReadMask,
|
|
||||||
(XtInputCallbackProc) _GSocket_Motif_Input,
|
|
||||||
(XtPointer) socket);
|
|
||||||
}
|
}
|
||||||
else
|
};
|
||||||
{
|
|
||||||
m_id[1] = XtAppAddInput(wxGetAppContext(), socket->m_fd,
|
|
||||||
(XtPointer *)XtInputWriteMask,
|
|
||||||
(XtInputCallbackProc) _GSocket_Motif_Output,
|
|
||||||
(XtPointer) socket);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Uninstall_Callback(GSocket *socket, GSocketEvent event)
|
GSocketManager *wxGUIAppTraits::GetSocketManager()
|
||||||
{
|
{
|
||||||
int *m_id = (int *)(socket->m_gui_dependent);
|
static MotifSocketManager s_manager;
|
||||||
int c;
|
return &s_manager;
|
||||||
|
|
||||||
switch (event)
|
|
||||||
{
|
|
||||||
case GSOCK_LOST: /* fall-through */
|
|
||||||
case GSOCK_INPUT: c = 0; break;
|
|
||||||
case GSOCK_OUTPUT: c = 1; break;
|
|
||||||
case GSOCK_CONNECTION: c = ((socket->m_server) ? 0 : 1); break;
|
|
||||||
default: return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_id[c] != -1)
|
|
||||||
XtRemoveInput(m_id[c]);
|
|
||||||
|
|
||||||
m_id[c] = -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Enable_Events(GSocket *socket)
|
#endif // wxUSE_SOCKETS
|
||||||
{
|
|
||||||
Install_Callback(socket, GSOCK_INPUT);
|
|
||||||
Install_Callback(socket, GSOCK_OUTPUT);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Disable_Events(GSocket *socket)
|
|
||||||
{
|
|
||||||
Uninstall_Callback(socket, GSOCK_INPUT);
|
|
||||||
Uninstall_Callback(socket, GSOCK_OUTPUT);
|
|
||||||
}
|
|
||||||
|
|
||||||
#else /* !wxUSE_SOCKETS */
|
|
||||||
|
|
||||||
/* some compilers don't like having empty source files */
|
|
||||||
static int wxDummyGsockVar = 0;
|
|
||||||
|
|
||||||
#endif /* wxUSE_SOCKETS/!wxUSE_SOCKETS */
|
|
||||||
|
@@ -41,6 +41,8 @@
|
|||||||
// wxAppTraits implementation
|
// wxAppTraits implementation
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
|
GSocketManager *wxAppTraits::ms_manager = NULL;
|
||||||
|
|
||||||
WXDWORD wxAppTraits::DoSimpleWaitForThread(WXHANDLE hThread)
|
WXDWORD wxAppTraits::DoSimpleWaitForThread(WXHANDLE hThread)
|
||||||
{
|
{
|
||||||
return ::WaitForSingleObject((HANDLE)hThread, INFINITE);
|
return ::WaitForSingleObject((HANDLE)hThread, INFINITE);
|
||||||
|
@@ -332,7 +332,7 @@ bool wxConsoleEventLoop::Dispatch()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
wxLogDebug(_T("Ignoring unexpected message %d"), msg.message);
|
::DispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
return !m_shouldExit;
|
return !m_shouldExit;
|
||||||
|
@@ -53,24 +53,13 @@
|
|||||||
|
|
||||||
#include <winsock.h>
|
#include <winsock.h>
|
||||||
|
|
||||||
#ifndef __GSOCKET_STANDALONE__
|
#include "wx/platform.h"
|
||||||
# include "wx/platform.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__)
|
#if wxUSE_SOCKETS
|
||||||
|
|
||||||
#ifndef __GSOCKET_STANDALONE__
|
#include "wx/gsocket.h"
|
||||||
# include "wx/msw/gsockmsw.h"
|
|
||||||
# include "wx/gsocket.h"
|
|
||||||
#else
|
|
||||||
# include "gsockmsw.h"
|
|
||||||
# include "gsocket.h"
|
|
||||||
#endif /* __GSOCKET_STANDALONE__ */
|
|
||||||
|
|
||||||
#ifndef __WXWINCE__
|
#ifdef __WXWINCE__
|
||||||
#include <assert.h>
|
|
||||||
#else
|
|
||||||
#define assert(x)
|
|
||||||
#ifndef isdigit
|
#ifndef isdigit
|
||||||
#define isdigit(x) (x > 47 && x < 58)
|
#define isdigit(x) (x > 47 && x < 58)
|
||||||
#endif
|
#endif
|
||||||
@@ -94,69 +83,23 @@ typedef struct sockaddr_storage wxSockAddr;
|
|||||||
typedef struct sockaddr wxSockAddr;
|
typedef struct sockaddr wxSockAddr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
bool GSocket_Init()
|
||||||
/* Table of GUI-related functions. We must call them indirectly because
|
|
||||||
* of wxBase and GUI separation: */
|
|
||||||
|
|
||||||
static GSocketGUIFunctionsTable *gs_gui_functions;
|
|
||||||
|
|
||||||
class GSocketGUIFunctionsTableNull: public GSocketGUIFunctionsTable
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual bool OnInit();
|
|
||||||
virtual void OnExit();
|
|
||||||
virtual bool CanUseEventLoop();
|
|
||||||
virtual bool Init_Socket(GSocket *socket);
|
|
||||||
virtual void Destroy_Socket(GSocket *socket);
|
|
||||||
virtual void Enable_Events(GSocket *socket);
|
|
||||||
virtual void Disable_Events(GSocket *socket);
|
|
||||||
};
|
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableNull::OnInit()
|
|
||||||
{ return true; }
|
|
||||||
void GSocketGUIFunctionsTableNull::OnExit()
|
|
||||||
{}
|
|
||||||
bool GSocketGUIFunctionsTableNull::CanUseEventLoop()
|
|
||||||
{ return false; }
|
|
||||||
bool GSocketGUIFunctionsTableNull::Init_Socket(GSocket *WXUNUSED(socket))
|
|
||||||
{ return true; }
|
|
||||||
void GSocketGUIFunctionsTableNull::Destroy_Socket(GSocket *WXUNUSED(socket))
|
|
||||||
{}
|
|
||||||
void GSocketGUIFunctionsTableNull::Enable_Events(GSocket *WXUNUSED(socket))
|
|
||||||
{}
|
|
||||||
void GSocketGUIFunctionsTableNull::Disable_Events(GSocket *WXUNUSED(socket))
|
|
||||||
{}
|
|
||||||
/* Global initialisers */
|
|
||||||
|
|
||||||
void GSocket_SetGUIFunctions(GSocketGUIFunctionsTable *guifunc)
|
|
||||||
{
|
|
||||||
gs_gui_functions = guifunc;
|
|
||||||
}
|
|
||||||
|
|
||||||
int GSocket_Init(void)
|
|
||||||
{
|
{
|
||||||
WSADATA wsaData;
|
WSADATA wsaData;
|
||||||
|
|
||||||
if (!gs_gui_functions)
|
GSocketManager * const manager = GSocketManager::Get();
|
||||||
{
|
if ( !manager || !manager->OnInit() )
|
||||||
static GSocketGUIFunctionsTableNull table;
|
return false;
|
||||||
gs_gui_functions = &table;
|
|
||||||
}
|
|
||||||
if ( !gs_gui_functions->OnInit() )
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Initialize WinSocket */
|
/* Initialize WinSocket */
|
||||||
return (WSAStartup((1 << 8) | 1, &wsaData) == 0);
|
return WSAStartup((1 << 8) | 1, &wsaData) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSocket_Cleanup(void)
|
void GSocket_Cleanup()
|
||||||
{
|
{
|
||||||
if (gs_gui_functions)
|
GSocketManager * const manager = GSocketManager::Get();
|
||||||
{
|
if ( manager )
|
||||||
gs_gui_functions->OnExit();
|
manager->OnExit();
|
||||||
}
|
|
||||||
|
|
||||||
/* Cleanup WinSocket */
|
/* Cleanup WinSocket */
|
||||||
WSACleanup();
|
WSACleanup();
|
||||||
@@ -184,29 +127,24 @@ GSocket::GSocket()
|
|||||||
m_timeout.tv_usec = 0;
|
m_timeout.tv_usec = 0;
|
||||||
m_establishing = false;
|
m_establishing = false;
|
||||||
m_reusable = false;
|
m_reusable = false;
|
||||||
m_broadcast = false;
|
m_broadcast = false;
|
||||||
m_dobind = true;
|
m_dobind = true;
|
||||||
m_initialRecvBufferSize = -1;
|
m_initialRecvBufferSize = -1;
|
||||||
m_initialSendBufferSize = -1;
|
m_initialSendBufferSize = -1;
|
||||||
|
|
||||||
assert(gs_gui_functions);
|
m_ok = GSocketManager::Get()->Init_Socket(this);
|
||||||
/* Per-socket GUI-specific initialization */
|
|
||||||
m_ok = gs_gui_functions->Init_Socket(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSocket::Close()
|
void GSocket::Close()
|
||||||
{
|
{
|
||||||
gs_gui_functions->Disable_Events(this);
|
GSocketManager::Get()->Disable_Events(this);
|
||||||
closesocket(m_fd);
|
closesocket(m_fd);
|
||||||
m_fd = INVALID_SOCKET;
|
m_fd = INVALID_SOCKET;
|
||||||
}
|
}
|
||||||
|
|
||||||
GSocket::~GSocket()
|
GSocket::~GSocket()
|
||||||
{
|
{
|
||||||
assert(this);
|
GSocketManager::Get()->Destroy_Socket(this);
|
||||||
|
|
||||||
/* Per-socket GUI-specific cleanup */
|
|
||||||
gs_gui_functions->Destroy_Socket(this);
|
|
||||||
|
|
||||||
/* Check that the socket is really shutdowned */
|
/* Check that the socket is really shutdowned */
|
||||||
if (m_fd != INVALID_SOCKET)
|
if (m_fd != INVALID_SOCKET)
|
||||||
@@ -228,8 +166,6 @@ void GSocket::Shutdown()
|
|||||||
{
|
{
|
||||||
int evt;
|
int evt;
|
||||||
|
|
||||||
assert(this);
|
|
||||||
|
|
||||||
/* If socket has been created, shutdown it */
|
/* If socket has been created, shutdown it */
|
||||||
if (m_fd != INVALID_SOCKET)
|
if (m_fd != INVALID_SOCKET)
|
||||||
{
|
{
|
||||||
@@ -262,8 +198,6 @@ void GSocket::Shutdown()
|
|||||||
*/
|
*/
|
||||||
GSocketError GSocket::SetLocal(GAddress *address)
|
GSocketError GSocket::SetLocal(GAddress *address)
|
||||||
{
|
{
|
||||||
assert(this);
|
|
||||||
|
|
||||||
/* the socket must be initialized, or it must be a server */
|
/* the socket must be initialized, or it must be a server */
|
||||||
if (m_fd != INVALID_SOCKET && !m_server)
|
if (m_fd != INVALID_SOCKET && !m_server)
|
||||||
{
|
{
|
||||||
@@ -288,8 +222,6 @@ GSocketError GSocket::SetLocal(GAddress *address)
|
|||||||
|
|
||||||
GSocketError GSocket::SetPeer(GAddress *address)
|
GSocketError GSocket::SetPeer(GAddress *address)
|
||||||
{
|
{
|
||||||
assert(this);
|
|
||||||
|
|
||||||
/* check address */
|
/* check address */
|
||||||
if (address == NULL || address->m_family == GSOCK_NOFAMILY)
|
if (address == NULL || address->m_family == GSOCK_NOFAMILY)
|
||||||
{
|
{
|
||||||
@@ -312,8 +244,6 @@ GAddress *GSocket::GetLocal()
|
|||||||
WX_SOCKLEN_T size = sizeof(addr);
|
WX_SOCKLEN_T size = sizeof(addr);
|
||||||
GSocketError err;
|
GSocketError err;
|
||||||
|
|
||||||
assert(this);
|
|
||||||
|
|
||||||
/* try to get it from the m_local var first */
|
/* try to get it from the m_local var first */
|
||||||
if (m_local)
|
if (m_local)
|
||||||
return GAddress_copy(m_local);
|
return GAddress_copy(m_local);
|
||||||
@@ -350,8 +280,6 @@ GAddress *GSocket::GetLocal()
|
|||||||
|
|
||||||
GAddress *GSocket::GetPeer()
|
GAddress *GSocket::GetPeer()
|
||||||
{
|
{
|
||||||
assert(this);
|
|
||||||
|
|
||||||
/* try to get it from the m_peer var */
|
/* try to get it from the m_peer var */
|
||||||
if (m_peer)
|
if (m_peer)
|
||||||
return GAddress_copy(m_peer);
|
return GAddress_copy(m_peer);
|
||||||
@@ -375,8 +303,6 @@ GSocketError GSocket::SetServer()
|
|||||||
{
|
{
|
||||||
u_long arg = 1;
|
u_long arg = 1;
|
||||||
|
|
||||||
assert(this);
|
|
||||||
|
|
||||||
/* must not be in use */
|
/* must not be in use */
|
||||||
if (m_fd != INVALID_SOCKET)
|
if (m_fd != INVALID_SOCKET)
|
||||||
{
|
{
|
||||||
@@ -405,7 +331,7 @@ GSocketError GSocket::SetServer()
|
|||||||
}
|
}
|
||||||
|
|
||||||
ioctlsocket(m_fd, FIONBIO, (u_long FAR *) &arg);
|
ioctlsocket(m_fd, FIONBIO, (u_long FAR *) &arg);
|
||||||
gs_gui_functions->Enable_Events(this);
|
GSocketManager::Get()->Enable_Events(this);
|
||||||
|
|
||||||
/* allow a socket to re-bind if the socket is in the TIME_WAIT
|
/* allow a socket to re-bind if the socket is in the TIME_WAIT
|
||||||
state after being previously closed.
|
state after being previously closed.
|
||||||
@@ -453,8 +379,6 @@ GSocket *GSocket::WaitConnection()
|
|||||||
GSocketError err;
|
GSocketError err;
|
||||||
u_long arg = 1;
|
u_long arg = 1;
|
||||||
|
|
||||||
assert(this);
|
|
||||||
|
|
||||||
/* Reenable CONNECTION events */
|
/* Reenable CONNECTION events */
|
||||||
m_detected &= ~GSOCK_CONNECTION_FLAG;
|
m_detected &= ~GSOCK_CONNECTION_FLAG;
|
||||||
|
|
||||||
@@ -517,7 +441,7 @@ GSocket *GSocket::WaitConnection()
|
|||||||
}
|
}
|
||||||
|
|
||||||
ioctlsocket(connection->m_fd, FIONBIO, (u_long FAR *) &arg);
|
ioctlsocket(connection->m_fd, FIONBIO, (u_long FAR *) &arg);
|
||||||
gs_gui_functions->Enable_Events(connection);
|
GSocketManager::Get()->Enable_Events(connection);
|
||||||
|
|
||||||
return connection;
|
return connection;
|
||||||
}
|
}
|
||||||
@@ -598,8 +522,6 @@ GSocketError GSocket::Connect(GSocketStream stream)
|
|||||||
int ret, err;
|
int ret, err;
|
||||||
u_long arg = 1;
|
u_long arg = 1;
|
||||||
|
|
||||||
assert(this);
|
|
||||||
|
|
||||||
/* Enable CONNECTION events (needed for nonblocking connections) */
|
/* Enable CONNECTION events (needed for nonblocking connections) */
|
||||||
m_detected &= ~GSOCK_CONNECTION_FLAG;
|
m_detected &= ~GSOCK_CONNECTION_FLAG;
|
||||||
|
|
||||||
@@ -631,7 +553,7 @@ GSocketError GSocket::Connect(GSocketStream stream)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ioctlsocket(m_fd, FIONBIO, (u_long FAR *) &arg);
|
ioctlsocket(m_fd, FIONBIO, (u_long FAR *) &arg);
|
||||||
gs_gui_functions->Enable_Events(this);
|
GSocketManager::Get()->Enable_Events(this);
|
||||||
|
|
||||||
// If the reuse flag is set, use the applicable socket reuse flag
|
// If the reuse flag is set, use the applicable socket reuse flag
|
||||||
if (m_reusable)
|
if (m_reusable)
|
||||||
@@ -716,8 +638,6 @@ GSocketError GSocket::SetNonOriented()
|
|||||||
{
|
{
|
||||||
u_long arg = 1;
|
u_long arg = 1;
|
||||||
|
|
||||||
assert(this);
|
|
||||||
|
|
||||||
if (m_fd != INVALID_SOCKET)
|
if (m_fd != INVALID_SOCKET)
|
||||||
{
|
{
|
||||||
m_error = GSOCK_INVSOCK;
|
m_error = GSOCK_INVSOCK;
|
||||||
@@ -744,7 +664,7 @@ GSocketError GSocket::SetNonOriented()
|
|||||||
}
|
}
|
||||||
|
|
||||||
ioctlsocket(m_fd, FIONBIO, (u_long FAR *) &arg);
|
ioctlsocket(m_fd, FIONBIO, (u_long FAR *) &arg);
|
||||||
gs_gui_functions->Enable_Events(this);
|
GSocketManager::Get()->Enable_Events(this);
|
||||||
|
|
||||||
if (m_reusable)
|
if (m_reusable)
|
||||||
{
|
{
|
||||||
@@ -780,8 +700,6 @@ int GSocket::Read(char *buffer, int size)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
assert(this);
|
|
||||||
|
|
||||||
/* Reenable INPUT events */
|
/* Reenable INPUT events */
|
||||||
m_detected &= ~GSOCK_INPUT_FLAG;
|
m_detected &= ~GSOCK_INPUT_FLAG;
|
||||||
|
|
||||||
@@ -820,8 +738,6 @@ int GSocket::Write(const char *buffer, int size)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
assert(this);
|
|
||||||
|
|
||||||
if (m_fd == INVALID_SOCKET || m_server)
|
if (m_fd == INVALID_SOCKET || m_server)
|
||||||
{
|
{
|
||||||
m_error = GSOCK_INVSOCK;
|
m_error = GSOCK_INVSOCK;
|
||||||
@@ -866,107 +782,7 @@ int GSocket::Write(const char *buffer, int size)
|
|||||||
*/
|
*/
|
||||||
GSocketEventFlags GSocket::Select(GSocketEventFlags flags)
|
GSocketEventFlags GSocket::Select(GSocketEventFlags flags)
|
||||||
{
|
{
|
||||||
if (!gs_gui_functions->CanUseEventLoop())
|
return flags & m_detected;
|
||||||
{
|
|
||||||
GSocketEventFlags result = 0;
|
|
||||||
fd_set readfds;
|
|
||||||
fd_set writefds;
|
|
||||||
fd_set exceptfds;
|
|
||||||
|
|
||||||
assert(this);
|
|
||||||
|
|
||||||
FD_ZERO(&readfds);
|
|
||||||
FD_ZERO(&writefds);
|
|
||||||
FD_ZERO(&exceptfds);
|
|
||||||
FD_SET(m_fd, &readfds);
|
|
||||||
if (flags & GSOCK_OUTPUT_FLAG || flags & GSOCK_CONNECTION_FLAG)
|
|
||||||
FD_SET(m_fd, &writefds);
|
|
||||||
FD_SET(m_fd, &exceptfds);
|
|
||||||
|
|
||||||
/* Check 'sticky' CONNECTION flag first */
|
|
||||||
result |= (GSOCK_CONNECTION_FLAG & m_detected);
|
|
||||||
|
|
||||||
/* If we have already detected a LOST event, then don't try
|
|
||||||
* to do any further processing.
|
|
||||||
*/
|
|
||||||
if ((m_detected & GSOCK_LOST_FLAG) != 0)
|
|
||||||
{
|
|
||||||
m_establishing = false;
|
|
||||||
|
|
||||||
return (GSOCK_LOST_FLAG & flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Try select now */
|
|
||||||
if (select(m_fd + 1, &readfds, &writefds, &exceptfds,
|
|
||||||
&m_timeout) <= 0)
|
|
||||||
{
|
|
||||||
/* What to do here? */
|
|
||||||
return (result & flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check for exceptions and errors */
|
|
||||||
if (FD_ISSET(m_fd, &exceptfds))
|
|
||||||
{
|
|
||||||
m_establishing = false;
|
|
||||||
m_detected = GSOCK_LOST_FLAG;
|
|
||||||
|
|
||||||
/* LOST event: Abort any further processing */
|
|
||||||
return (GSOCK_LOST_FLAG & flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check for readability */
|
|
||||||
if (FD_ISSET(m_fd, &readfds))
|
|
||||||
{
|
|
||||||
result |= GSOCK_INPUT_FLAG;
|
|
||||||
|
|
||||||
if (m_server && m_stream)
|
|
||||||
{
|
|
||||||
/* This is a TCP server socket that detected a connection.
|
|
||||||
While the INPUT_FLAG is also set, it doesn't matter on
|
|
||||||
this kind of sockets, as we can only Accept() from them. */
|
|
||||||
result |= GSOCK_CONNECTION_FLAG;
|
|
||||||
m_detected |= GSOCK_CONNECTION_FLAG;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check for writability */
|
|
||||||
if (FD_ISSET(m_fd, &writefds))
|
|
||||||
{
|
|
||||||
if (m_establishing && !m_server)
|
|
||||||
{
|
|
||||||
int error;
|
|
||||||
WX_SOCKLEN_T len = sizeof(error);
|
|
||||||
|
|
||||||
m_establishing = false;
|
|
||||||
|
|
||||||
getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (char*)&error, &len);
|
|
||||||
|
|
||||||
if (error)
|
|
||||||
{
|
|
||||||
m_detected = GSOCK_LOST_FLAG;
|
|
||||||
|
|
||||||
/* LOST event: Abort any further processing */
|
|
||||||
return (GSOCK_LOST_FLAG & flags);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result |= GSOCK_CONNECTION_FLAG;
|
|
||||||
m_detected |= GSOCK_CONNECTION_FLAG;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result |= GSOCK_OUTPUT_FLAG;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return (result & flags);
|
|
||||||
}
|
|
||||||
else /* USE_GUI() */
|
|
||||||
{
|
|
||||||
assert(this);
|
|
||||||
return flags & m_detected;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Attributes */
|
/* Attributes */
|
||||||
@@ -977,8 +793,6 @@ GSocketEventFlags GSocket::Select(GSocketEventFlags flags)
|
|||||||
*/
|
*/
|
||||||
void GSocket::SetNonBlocking(bool non_block)
|
void GSocket::SetNonBlocking(bool non_block)
|
||||||
{
|
{
|
||||||
assert(this);
|
|
||||||
|
|
||||||
m_non_blocking = non_block;
|
m_non_blocking = non_block;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -988,8 +802,6 @@ void GSocket::SetNonBlocking(bool non_block)
|
|||||||
*/
|
*/
|
||||||
void GSocket::SetTimeout(unsigned long millis)
|
void GSocket::SetTimeout(unsigned long millis)
|
||||||
{
|
{
|
||||||
assert(this);
|
|
||||||
|
|
||||||
m_timeout.tv_sec = (millis / 1000);
|
m_timeout.tv_sec = (millis / 1000);
|
||||||
m_timeout.tv_usec = (millis % 1000) * 1000;
|
m_timeout.tv_usec = (millis % 1000) * 1000;
|
||||||
}
|
}
|
||||||
@@ -1001,8 +813,6 @@ void GSocket::SetTimeout(unsigned long millis)
|
|||||||
*/
|
*/
|
||||||
GSocketError WXDLLIMPEXP_NET GSocket::GetError()
|
GSocketError WXDLLIMPEXP_NET GSocket::GetError()
|
||||||
{
|
{
|
||||||
assert(this);
|
|
||||||
|
|
||||||
return m_error;
|
return m_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1041,8 +851,6 @@ void GSocket::SetCallback(GSocketEventFlags flags,
|
|||||||
{
|
{
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
assert(this);
|
|
||||||
|
|
||||||
for (count = 0; count < GSOCK_MAX_EVENT; count++)
|
for (count = 0; count < GSOCK_MAX_EVENT; count++)
|
||||||
{
|
{
|
||||||
if ((flags & (1 << count)) != 0)
|
if ((flags & (1 << count)) != 0)
|
||||||
@@ -1061,8 +869,6 @@ void GSocket::UnsetCallback(GSocketEventFlags flags)
|
|||||||
{
|
{
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
assert(this);
|
|
||||||
|
|
||||||
for (count = 0; count < GSOCK_MAX_EVENT; count++)
|
for (count = 0; count < GSOCK_MAX_EVENT; count++)
|
||||||
{
|
{
|
||||||
if ((flags & (1 << count)) != 0)
|
if ((flags & (1 << count)) != 0)
|
||||||
@@ -1236,7 +1042,7 @@ int GSocket::Send_Dgram(const char *buffer, int size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Compatibility functions for GSocket */
|
/* Compatibility functions for GSocket */
|
||||||
GSocket *GSocket_new(void)
|
GSocket *GSocket_new()
|
||||||
{
|
{
|
||||||
GSocket *newsocket = new GSocket();
|
GSocket *newsocket = new GSocket();
|
||||||
if(newsocket->IsOk())
|
if(newsocket->IsOk())
|
||||||
@@ -1284,7 +1090,7 @@ GSocket *GSocket_new(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
GAddress *GAddress_new(void)
|
GAddress *GAddress_new()
|
||||||
{
|
{
|
||||||
GAddress *address;
|
GAddress *address;
|
||||||
|
|
||||||
@@ -1302,8 +1108,6 @@ GAddress *GAddress_copy(GAddress *address)
|
|||||||
{
|
{
|
||||||
GAddress *addr2;
|
GAddress *addr2;
|
||||||
|
|
||||||
assert(address != NULL);
|
|
||||||
|
|
||||||
if ((addr2 = (GAddress *) malloc(sizeof(GAddress))) == NULL)
|
if ((addr2 = (GAddress *) malloc(sizeof(GAddress))) == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@@ -1325,8 +1129,6 @@ GAddress *GAddress_copy(GAddress *address)
|
|||||||
|
|
||||||
void GAddress_destroy(GAddress *address)
|
void GAddress_destroy(GAddress *address)
|
||||||
{
|
{
|
||||||
assert(address != NULL);
|
|
||||||
|
|
||||||
if (address->m_addr)
|
if (address->m_addr)
|
||||||
free(address->m_addr);
|
free(address->m_addr);
|
||||||
|
|
||||||
@@ -1335,15 +1137,11 @@ void GAddress_destroy(GAddress *address)
|
|||||||
|
|
||||||
void GAddress_SetFamily(GAddress *address, GAddressType type)
|
void GAddress_SetFamily(GAddress *address, GAddressType type)
|
||||||
{
|
{
|
||||||
assert(address != NULL);
|
|
||||||
|
|
||||||
address->m_family = type;
|
address->m_family = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
GAddressType GAddress_GetFamily(GAddress *address)
|
GAddressType GAddress_GetFamily(GAddress *address)
|
||||||
{
|
{
|
||||||
assert(address != NULL);
|
|
||||||
|
|
||||||
return address->m_family;
|
return address->m_family;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1437,8 +1235,6 @@ GSocketError GAddress_INET_SetHostName(GAddress *address, const char *hostname)
|
|||||||
struct hostent *he;
|
struct hostent *he;
|
||||||
struct in_addr *addr;
|
struct in_addr *addr;
|
||||||
|
|
||||||
assert(address != NULL);
|
|
||||||
|
|
||||||
CHECK_ADDRESS(address, INET);
|
CHECK_ADDRESS(address, INET);
|
||||||
|
|
||||||
addr = &(((struct sockaddr_in *)address->m_addr)->sin_addr);
|
addr = &(((struct sockaddr_in *)address->m_addr)->sin_addr);
|
||||||
@@ -1478,8 +1274,6 @@ GSocketError GAddress_INET_SetHostAddress(GAddress *address,
|
|||||||
{
|
{
|
||||||
struct in_addr *addr;
|
struct in_addr *addr;
|
||||||
|
|
||||||
assert(address != NULL);
|
|
||||||
|
|
||||||
CHECK_ADDRESS(address, INET);
|
CHECK_ADDRESS(address, INET);
|
||||||
|
|
||||||
addr = &(((struct sockaddr_in *)address->m_addr)->sin_addr);
|
addr = &(((struct sockaddr_in *)address->m_addr)->sin_addr);
|
||||||
@@ -1494,7 +1288,6 @@ GSocketError GAddress_INET_SetPortName(GAddress *address, const char *port,
|
|||||||
struct servent *se;
|
struct servent *se;
|
||||||
struct sockaddr_in *addr;
|
struct sockaddr_in *addr;
|
||||||
|
|
||||||
assert(address != NULL);
|
|
||||||
CHECK_ADDRESS(address, INET);
|
CHECK_ADDRESS(address, INET);
|
||||||
|
|
||||||
if (!port)
|
if (!port)
|
||||||
@@ -1530,7 +1323,6 @@ GSocketError GAddress_INET_SetPort(GAddress *address, unsigned short port)
|
|||||||
{
|
{
|
||||||
struct sockaddr_in *addr;
|
struct sockaddr_in *addr;
|
||||||
|
|
||||||
assert(address != NULL);
|
|
||||||
CHECK_ADDRESS(address, INET);
|
CHECK_ADDRESS(address, INET);
|
||||||
|
|
||||||
addr = (struct sockaddr_in *)address->m_addr;
|
addr = (struct sockaddr_in *)address->m_addr;
|
||||||
@@ -1545,7 +1337,6 @@ GSocketError GAddress_INET_GetHostName(GAddress *address, char *hostname, size_t
|
|||||||
char *addr_buf;
|
char *addr_buf;
|
||||||
struct sockaddr_in *addr;
|
struct sockaddr_in *addr;
|
||||||
|
|
||||||
assert(address != NULL);
|
|
||||||
CHECK_ADDRESS(address, INET);
|
CHECK_ADDRESS(address, INET);
|
||||||
|
|
||||||
addr = (struct sockaddr_in *)address->m_addr;
|
addr = (struct sockaddr_in *)address->m_addr;
|
||||||
@@ -1567,7 +1358,6 @@ unsigned long GAddress_INET_GetHostAddress(GAddress *address)
|
|||||||
{
|
{
|
||||||
struct sockaddr_in *addr;
|
struct sockaddr_in *addr;
|
||||||
|
|
||||||
assert(address != NULL);
|
|
||||||
CHECK_ADDRESS_RETVAL(address, INET, 0);
|
CHECK_ADDRESS_RETVAL(address, INET, 0);
|
||||||
|
|
||||||
addr = (struct sockaddr_in *)address->m_addr;
|
addr = (struct sockaddr_in *)address->m_addr;
|
||||||
@@ -1579,7 +1369,6 @@ unsigned short GAddress_INET_GetPort(GAddress *address)
|
|||||||
{
|
{
|
||||||
struct sockaddr_in *addr;
|
struct sockaddr_in *addr;
|
||||||
|
|
||||||
assert(address != NULL);
|
|
||||||
CHECK_ADDRESS_RETVAL(address, INET, 0);
|
CHECK_ADDRESS_RETVAL(address, INET, 0);
|
||||||
|
|
||||||
addr = (struct sockaddr_in *)address->m_addr;
|
addr = (struct sockaddr_in *)address->m_addr;
|
||||||
@@ -1621,7 +1410,6 @@ GSocketError _GAddress_Init_INET6(GAddress *address)
|
|||||||
|
|
||||||
GSocketError GAddress_INET6_SetHostName(GAddress *address, const char *hostname)
|
GSocketError GAddress_INET6_SetHostName(GAddress *address, const char *hostname)
|
||||||
{
|
{
|
||||||
assert(address != NULL);
|
|
||||||
CHECK_ADDRESS(address, INET6);
|
CHECK_ADDRESS(address, INET6);
|
||||||
|
|
||||||
addrinfo hints;
|
addrinfo hints;
|
||||||
@@ -1641,8 +1429,6 @@ GSocketError GAddress_INET6_SetHostName(GAddress *address, const char *hostname)
|
|||||||
|
|
||||||
GSocketError GAddress_INET6_SetAnyAddress(GAddress *address)
|
GSocketError GAddress_INET6_SetAnyAddress(GAddress *address)
|
||||||
{
|
{
|
||||||
assert(address != NULL);
|
|
||||||
|
|
||||||
CHECK_ADDRESS(address, INET6);
|
CHECK_ADDRESS(address, INET6);
|
||||||
|
|
||||||
struct in6_addr addr;
|
struct in6_addr addr;
|
||||||
@@ -1652,8 +1438,6 @@ GSocketError GAddress_INET6_SetAnyAddress(GAddress *address)
|
|||||||
GSocketError GAddress_INET6_SetHostAddress(GAddress *address,
|
GSocketError GAddress_INET6_SetHostAddress(GAddress *address,
|
||||||
struct in6_addr hostaddr)
|
struct in6_addr hostaddr)
|
||||||
{
|
{
|
||||||
assert(address != NULL);
|
|
||||||
|
|
||||||
CHECK_ADDRESS(address, INET6);
|
CHECK_ADDRESS(address, INET6);
|
||||||
|
|
||||||
((struct sockaddr_in6 *)address->m_addr)->sin6_addr = hostaddr;
|
((struct sockaddr_in6 *)address->m_addr)->sin6_addr = hostaddr;
|
||||||
@@ -1667,7 +1451,6 @@ GSocketError GAddress_INET6_SetPortName(GAddress *address, const char *port,
|
|||||||
struct servent *se;
|
struct servent *se;
|
||||||
struct sockaddr_in6 *addr;
|
struct sockaddr_in6 *addr;
|
||||||
|
|
||||||
assert(address != NULL);
|
|
||||||
CHECK_ADDRESS(address, INET6);
|
CHECK_ADDRESS(address, INET6);
|
||||||
|
|
||||||
if (!port)
|
if (!port)
|
||||||
@@ -1703,7 +1486,6 @@ GSocketError GAddress_INET6_SetPort(GAddress *address, unsigned short port)
|
|||||||
{
|
{
|
||||||
struct sockaddr_in6 *addr;
|
struct sockaddr_in6 *addr;
|
||||||
|
|
||||||
assert(address != NULL);
|
|
||||||
CHECK_ADDRESS(address, INET6);
|
CHECK_ADDRESS(address, INET6);
|
||||||
|
|
||||||
addr = (struct sockaddr_in6 *)address->m_addr;
|
addr = (struct sockaddr_in6 *)address->m_addr;
|
||||||
@@ -1718,7 +1500,6 @@ GSocketError GAddress_INET6_GetHostName(GAddress *address, char *hostname, size_
|
|||||||
char *addr_buf;
|
char *addr_buf;
|
||||||
struct sockaddr_in6 *addr;
|
struct sockaddr_in6 *addr;
|
||||||
|
|
||||||
assert(address != NULL);
|
|
||||||
CHECK_ADDRESS(address, INET6);
|
CHECK_ADDRESS(address, INET6);
|
||||||
|
|
||||||
addr = (struct sockaddr_in6 *)address->m_addr;
|
addr = (struct sockaddr_in6 *)address->m_addr;
|
||||||
@@ -1738,8 +1519,6 @@ GSocketError GAddress_INET6_GetHostName(GAddress *address, char *hostname, size_
|
|||||||
|
|
||||||
GSocketError GAddress_INET6_GetHostAddress(GAddress *address,struct in6_addr *hostaddr)
|
GSocketError GAddress_INET6_GetHostAddress(GAddress *address,struct in6_addr *hostaddr)
|
||||||
{
|
{
|
||||||
assert(address != NULL);
|
|
||||||
assert(hostaddr != NULL);
|
|
||||||
CHECK_ADDRESS_RETVAL(address, INET6, GSOCK_INVADDR);
|
CHECK_ADDRESS_RETVAL(address, INET6, GSOCK_INVADDR);
|
||||||
*hostaddr = ( (struct sockaddr_in6 *)address->m_addr )->sin6_addr;
|
*hostaddr = ( (struct sockaddr_in6 *)address->m_addr )->sin6_addr;
|
||||||
return GSOCK_NOERROR;
|
return GSOCK_NOERROR;
|
||||||
@@ -1747,7 +1526,6 @@ GSocketError GAddress_INET6_GetHostAddress(GAddress *address,struct in6_addr *ho
|
|||||||
|
|
||||||
unsigned short GAddress_INET6_GetPort(GAddress *address)
|
unsigned short GAddress_INET6_GetPort(GAddress *address)
|
||||||
{
|
{
|
||||||
assert(address != NULL);
|
|
||||||
CHECK_ADDRESS_RETVAL(address, INET6, 0);
|
CHECK_ADDRESS_RETVAL(address, INET6, 0);
|
||||||
|
|
||||||
return ntohs( ((struct sockaddr_in6 *)address->m_addr)->sin6_port );
|
return ntohs( ((struct sockaddr_in6 *)address->m_addr)->sin6_port );
|
||||||
@@ -1763,31 +1541,20 @@ unsigned short GAddress_INET6_GetPort(GAddress *address)
|
|||||||
|
|
||||||
GSocketError _GAddress_Init_UNIX(GAddress *address)
|
GSocketError _GAddress_Init_UNIX(GAddress *address)
|
||||||
{
|
{
|
||||||
assert (address != NULL);
|
|
||||||
address->m_error = GSOCK_INVADDR;
|
address->m_error = GSOCK_INVADDR;
|
||||||
return GSOCK_INVADDR;
|
return GSOCK_INVADDR;
|
||||||
}
|
}
|
||||||
|
|
||||||
GSocketError GAddress_UNIX_SetPath(GAddress *address, const char *WXUNUSED(path))
|
GSocketError GAddress_UNIX_SetPath(GAddress *address, const char *WXUNUSED(path))
|
||||||
{
|
{
|
||||||
assert (address != NULL);
|
|
||||||
address->m_error = GSOCK_INVADDR;
|
address->m_error = GSOCK_INVADDR;
|
||||||
return GSOCK_INVADDR;
|
return GSOCK_INVADDR;
|
||||||
}
|
}
|
||||||
|
|
||||||
GSocketError GAddress_UNIX_GetPath(GAddress *address, char *WXUNUSED(path), size_t WXUNUSED(sbuf))
|
GSocketError GAddress_UNIX_GetPath(GAddress *address, char *WXUNUSED(path), size_t WXUNUSED(sbuf))
|
||||||
{
|
{
|
||||||
assert (address != NULL);
|
|
||||||
address->m_error = GSOCK_INVADDR;
|
address->m_error = GSOCK_INVADDR;
|
||||||
return GSOCK_INVADDR;
|
return GSOCK_INVADDR;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* !wxUSE_SOCKETS */
|
#endif // wxUSE_SOCKETS
|
||||||
|
|
||||||
/*
|
|
||||||
* Translation unit shouldn't be empty, so include this typedef to make the
|
|
||||||
* compiler (VC++ 6.0, for example) happy
|
|
||||||
*/
|
|
||||||
typedef void (*wxDummy)();
|
|
||||||
|
|
||||||
#endif /* wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__) */
|
|
||||||
|
@@ -16,6 +16,8 @@
|
|||||||
#pragma hdrstop
|
#pragma hdrstop
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if wxUSE_SOCKETS
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* DONE: for WinCE we need to replace WSAAsyncSelect
|
* DONE: for WinCE we need to replace WSAAsyncSelect
|
||||||
* (Windows message-based notification of network events for a socket)
|
* (Windows message-based notification of network events for a socket)
|
||||||
@@ -34,54 +36,13 @@
|
|||||||
# pragma warning(disable:4115) /* named type definition in parentheses */
|
# pragma warning(disable:4115) /* named type definition in parentheses */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* This needs to be before the wx/defs/h inclusion
|
|
||||||
* for some reason
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef __WXWINCE__
|
|
||||||
/* windows.h results in tons of warnings at max warning level */
|
|
||||||
# ifdef _MSC_VER
|
|
||||||
# pragma warning(push, 1)
|
|
||||||
# endif
|
|
||||||
# include <windows.h>
|
|
||||||
# ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
# pragma warning(disable:4514)
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __GSOCKET_STANDALONE__
|
|
||||||
# include "wx/platform.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__)
|
|
||||||
|
|
||||||
#ifndef __GSOCKET_STANDALONE__
|
|
||||||
|
|
||||||
#include "wx/msw/gsockmsw.h"
|
|
||||||
#include "wx/gsocket.h"
|
#include "wx/gsocket.h"
|
||||||
|
#include "wx/apptrait.h"
|
||||||
|
|
||||||
extern "C" WXDLLIMPEXP_BASE HINSTANCE wxGetInstance(void);
|
extern "C" WXDLLIMPEXP_BASE HINSTANCE wxGetInstance();
|
||||||
#define INSTANCE wxGetInstance()
|
#define INSTANCE wxGetInstance()
|
||||||
|
|
||||||
#else /* __GSOCKET_STANDALONE__ */
|
#ifdef __WXWINCE__
|
||||||
|
|
||||||
#include "gsockmsw.h"
|
|
||||||
#include "gsocket.h"
|
|
||||||
|
|
||||||
/* If not using wxWidgets, a global var called hInst must
|
|
||||||
* be available and it must contain the app's instance
|
|
||||||
* handle.
|
|
||||||
*/
|
|
||||||
extern HINSTANCE hInst;
|
|
||||||
#define INSTANCE hInst
|
|
||||||
|
|
||||||
#endif /* !__GSOCKET_STANDALONE__/__GSOCKET_STANDALONE__ */
|
|
||||||
|
|
||||||
#ifndef __WXWINCE__
|
|
||||||
#include <assert.h>
|
|
||||||
#else
|
|
||||||
#define assert(x)
|
|
||||||
#include <winsock.h>
|
#include <winsock.h>
|
||||||
#include "wx/msw/wince/net.h"
|
#include "wx/msw/wince/net.h"
|
||||||
#include "wx/hashmap.h"
|
#include "wx/hashmap.h"
|
||||||
@@ -125,7 +86,7 @@ typedef struct _WSANETWORKEVENTS {
|
|||||||
long lNetworkEvents;
|
long lNetworkEvents;
|
||||||
int iErrorCode[10];
|
int iErrorCode[10];
|
||||||
} WSANETWORKEVENTS, FAR * LPWSANETWORKEVENTS;
|
} WSANETWORKEVENTS, FAR * LPWSANETWORKEVENTS;
|
||||||
typedef HANDLE (PASCAL *WSACreateEventFunc)(void);
|
typedef HANDLE (PASCAL *WSACreateEventFunc)();
|
||||||
typedef int (PASCAL *WSAEventSelectFunc)(SOCKET,HANDLE,long);
|
typedef int (PASCAL *WSAEventSelectFunc)(SOCKET,HANDLE,long);
|
||||||
typedef int (PASCAL *WSAWaitForMultipleEventsFunc)(long,HANDLE,BOOL,long,BOOL);
|
typedef int (PASCAL *WSAWaitForMultipleEventsFunc)(long,HANDLE,BOOL,long,BOOL);
|
||||||
typedef int (PASCAL *WSAEnumNetworkEventsFunc)(SOCKET,HANDLE,LPWSANETWORKEVENTS);
|
typedef int (PASCAL *WSAEnumNetworkEventsFunc)(SOCKET,HANDLE,LPWSANETWORKEVENTS);
|
||||||
@@ -210,15 +171,29 @@ DWORD WINAPI SocketThread(LPVOID data)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// MSW implementation of GSocketManager
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::CanUseEventLoop()
|
class GSocketMSWManager : public GSocketManager
|
||||||
{
|
{
|
||||||
return true;
|
public:
|
||||||
}
|
virtual bool OnInit();
|
||||||
|
virtual void OnExit();
|
||||||
|
|
||||||
|
virtual bool Init_Socket(GSocket *socket);
|
||||||
|
virtual void Destroy_Socket(GSocket *socket);
|
||||||
|
|
||||||
|
virtual void Install_Callback(GSocket *socket, GSocketEvent event);
|
||||||
|
virtual void Uninstall_Callback(GSocket *socket, GSocketEvent event);
|
||||||
|
|
||||||
|
virtual void Enable_Events(GSocket *socket);
|
||||||
|
virtual void Disable_Events(GSocket *socket);
|
||||||
|
};
|
||||||
|
|
||||||
/* Global initializers */
|
/* Global initializers */
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::OnInit()
|
bool GSocketMSWManager::OnInit()
|
||||||
{
|
{
|
||||||
static LPCTSTR pclassname = NULL;
|
static LPCTSTR pclassname = NULL;
|
||||||
int i;
|
int i;
|
||||||
@@ -280,7 +255,7 @@ bool GSocketGUIFunctionsTableConcrete::OnInit()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::OnExit()
|
void GSocketMSWManager::OnExit()
|
||||||
{
|
{
|
||||||
#ifdef __WXWINCE__
|
#ifdef __WXWINCE__
|
||||||
/* Delete the threads here */
|
/* Delete the threads here */
|
||||||
@@ -304,7 +279,7 @@ void GSocketGUIFunctionsTableConcrete::OnExit()
|
|||||||
|
|
||||||
/* Per-socket GUI initialization / cleanup */
|
/* Per-socket GUI initialization / cleanup */
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::Init_Socket(GSocket *socket)
|
bool GSocketMSWManager::Init_Socket(GSocket *socket)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -331,7 +306,7 @@ bool GSocketGUIFunctionsTableConcrete::Init_Socket(GSocket *socket)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Destroy_Socket(GSocket *socket)
|
void GSocketMSWManager::Destroy_Socket(GSocket *socket)
|
||||||
{
|
{
|
||||||
/* Remove the socket from the list */
|
/* Remove the socket from the list */
|
||||||
EnterCriticalSection(&critical);
|
EnterCriticalSection(&critical);
|
||||||
@@ -340,6 +315,18 @@ void GSocketGUIFunctionsTableConcrete::Destroy_Socket(GSocket *socket)
|
|||||||
LeaveCriticalSection(&critical);
|
LeaveCriticalSection(&critical);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GSocketMSWManager::Install_Callback(GSocket * WXUNUSED(socket),
|
||||||
|
GSocketEvent WXUNUSED(event))
|
||||||
|
{
|
||||||
|
wxFAIL_MSG( _T("not used under MSW") );
|
||||||
|
}
|
||||||
|
|
||||||
|
void GSocketMSWManager::Uninstall_Callback(GSocket * WXUNUSED(socket),
|
||||||
|
GSocketEvent WXUNUSED(event))
|
||||||
|
{
|
||||||
|
wxFAIL_MSG( _T("not used under MSW") );
|
||||||
|
}
|
||||||
|
|
||||||
/* Windows proc for asynchronous event handling */
|
/* Windows proc for asynchronous event handling */
|
||||||
|
|
||||||
LRESULT CALLBACK _GSocket_Internal_WinProc(HWND hWnd,
|
LRESULT CALLBACK _GSocket_Internal_WinProc(HWND hWnd,
|
||||||
@@ -416,10 +403,8 @@ LRESULT CALLBACK _GSocket_Internal_WinProc(HWND hWnd,
|
|||||||
* events for internal processing, but we will only notify users
|
* events for internal processing, but we will only notify users
|
||||||
* when an appropiate callback function has been installed.
|
* when an appropiate callback function has been installed.
|
||||||
*/
|
*/
|
||||||
void GSocketGUIFunctionsTableConcrete::Enable_Events(GSocket *socket)
|
void GSocketMSWManager::Enable_Events(GSocket *socket)
|
||||||
{
|
{
|
||||||
assert (socket != NULL);
|
|
||||||
|
|
||||||
if (socket->m_fd != INVALID_SOCKET)
|
if (socket->m_fd != INVALID_SOCKET)
|
||||||
{
|
{
|
||||||
/* We could probably just subscribe to all events regardless
|
/* We could probably just subscribe to all events regardless
|
||||||
@@ -449,10 +434,8 @@ void GSocketGUIFunctionsTableConcrete::Enable_Events(GSocket *socket)
|
|||||||
/* _GSocket_Disable_Events:
|
/* _GSocket_Disable_Events:
|
||||||
* Disable event notifications (when shutdowning the socket)
|
* Disable event notifications (when shutdowning the socket)
|
||||||
*/
|
*/
|
||||||
void GSocketGUIFunctionsTableConcrete::Disable_Events(GSocket *socket)
|
void GSocketMSWManager::Disable_Events(GSocket *socket)
|
||||||
{
|
{
|
||||||
assert (socket != NULL);
|
|
||||||
|
|
||||||
if (socket->m_fd != INVALID_SOCKET)
|
if (socket->m_fd != INVALID_SOCKET)
|
||||||
{
|
{
|
||||||
#ifndef __WXWINCE__
|
#ifndef __WXWINCE__
|
||||||
@@ -464,12 +447,17 @@ void GSocketGUIFunctionsTableConcrete::Disable_Events(GSocket *socket)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* !wxUSE_SOCKETS */
|
// set the wxBase variable to point to our GSocketManager implementation
|
||||||
|
//
|
||||||
|
// see comments in wx/msw/apptbase.h for the explanation of why do we do it
|
||||||
|
// like this
|
||||||
|
static struct ManagerSetter
|
||||||
|
{
|
||||||
|
ManagerSetter()
|
||||||
|
{
|
||||||
|
static GSocketMSWManager s_manager;
|
||||||
|
wxAppTraits::SetDefaultSocketManager(&s_manager);
|
||||||
|
}
|
||||||
|
} gsm_managerSetter;
|
||||||
|
|
||||||
/*
|
#endif // wxUSE_SOCKETS
|
||||||
* Translation unit shouldn't be empty, so include this typedef to make the
|
|
||||||
* compiler (VC++ 6.0, for example) happy
|
|
||||||
*/
|
|
||||||
typedef void (*wxDummy)();
|
|
||||||
|
|
||||||
#endif /* wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__) */
|
|
||||||
|
@@ -31,34 +31,6 @@ static void _GSocket_PM_Output(void *data)
|
|||||||
socket->Detected_Write();
|
socket->Detected_Write();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::CanUseEventLoop()
|
|
||||||
{ return true; }
|
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::OnInit(void)
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::OnExit(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableConcrete::Init_Socket(GSocket *socket)
|
|
||||||
{
|
|
||||||
int *m_id;
|
|
||||||
socket->m_gui_dependent = (char *)malloc(sizeof(int)*2);
|
|
||||||
m_id = (int *)(socket->m_gui_dependent);
|
|
||||||
|
|
||||||
m_id[0] = -1;
|
|
||||||
m_id[1] = -1;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Destroy_Socket(GSocket *socket)
|
|
||||||
{
|
|
||||||
free(socket->m_gui_dependent);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocketGUIFunctionsTableConcrete::Install_Callback(GSocket *socket, GSocketEvent event)
|
void GSocketGUIFunctionsTableConcrete::Install_Callback(GSocket *socket, GSocketEvent event)
|
||||||
{
|
{
|
||||||
int *m_id = (int *)(socket->m_gui_dependent);
|
int *m_id = (int *)(socket->m_gui_dependent);
|
||||||
|
@@ -33,6 +33,7 @@
|
|||||||
#include "wx/apptrait.h"
|
#include "wx/apptrait.h"
|
||||||
#include "wx/unix/execute.h"
|
#include "wx/unix/execute.h"
|
||||||
#include "wx/evtloop.h"
|
#include "wx/evtloop.h"
|
||||||
|
#include "wx/gsocket.h"
|
||||||
|
|
||||||
#include "wx/unix/private/timer.h"
|
#include "wx/unix/private/timer.h"
|
||||||
|
|
||||||
|
@@ -82,7 +82,8 @@ wxEpollDispatcher *wxEpollDispatcher::Create()
|
|||||||
wxLogSysError(_("Failed to create epoll descriptor"));
|
wxLogSysError(_("Failed to create epoll descriptor"));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
wxLogTrace(wxEpollDispatcher_Trace,
|
||||||
|
_T("Epoll fd %d created"), epollDescriptor);
|
||||||
return new wxEpollDispatcher(epollDescriptor);
|
return new wxEpollDispatcher(epollDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,6 +116,8 @@ bool wxEpollDispatcher::RegisterFD(int fd, wxFDIOHandler* handler, int flags)
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
wxLogTrace(wxEpollDispatcher_Trace,
|
||||||
|
_T("Added fd %d (handler %p) to epoll %d"), fd, handler, m_epollDescriptor);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -134,6 +137,8 @@ bool wxEpollDispatcher::ModifyFD(int fd, wxFDIOHandler* handler, int flags)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxLogTrace(wxEpollDispatcher_Trace,
|
||||||
|
_T("Modified fd %d (handler: %p) on epoll %d"), fd, handler, m_epollDescriptor);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,7 +153,8 @@ bool wxEpollDispatcher::UnregisterFD(int fd)
|
|||||||
wxLogSysError(_("Failed to unregister descriptor %d from epoll descriptor %d"),
|
wxLogSysError(_("Failed to unregister descriptor %d from epoll descriptor %d"),
|
||||||
fd, m_epollDescriptor);
|
fd, m_epollDescriptor);
|
||||||
}
|
}
|
||||||
|
wxLogTrace(wxEpollDispatcher_Trace,
|
||||||
|
_T("removed fd %d from %d"), fd, m_epollDescriptor);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
#ifndef __GSOCKET_STANDALONE__
|
#ifndef __GSOCKET_STANDALONE__
|
||||||
#include "wx/defs.h"
|
#include "wx/defs.h"
|
||||||
#include "wx/private/gsocketiohandler.h"
|
#include "wx/private/gsocketiohandler.h"
|
||||||
|
#include "wx/thread.h" // for wxThread::IsMain() used in assert
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__VISAGECPP__)
|
#if defined(__VISAGECPP__)
|
||||||
@@ -459,65 +460,17 @@ typedef struct sockaddr wxSockAddr;
|
|||||||
/* Table of GUI-related functions. We must call them indirectly because
|
/* Table of GUI-related functions. We must call them indirectly because
|
||||||
* of wxBase and GUI separation: */
|
* of wxBase and GUI separation: */
|
||||||
|
|
||||||
static GSocketGUIFunctionsTable *gs_gui_functions;
|
bool GSocket_Init()
|
||||||
|
|
||||||
class GSocketGUIFunctionsTableNull: public GSocketGUIFunctionsTable
|
|
||||||
{
|
{
|
||||||
public:
|
GSocketManager * const manager = GSocketManager::Get();
|
||||||
virtual bool OnInit();
|
return manager && manager->OnInit();
|
||||||
virtual void OnExit();
|
|
||||||
virtual bool CanUseEventLoop();
|
|
||||||
virtual bool Init_Socket(GSocket *socket);
|
|
||||||
virtual void Destroy_Socket(GSocket *socket);
|
|
||||||
virtual void Install_Callback(GSocket *socket, GSocketEvent event);
|
|
||||||
virtual void Uninstall_Callback(GSocket *socket, GSocketEvent event);
|
|
||||||
virtual void Enable_Events(GSocket *socket);
|
|
||||||
virtual void Disable_Events(GSocket *socket);
|
|
||||||
};
|
|
||||||
|
|
||||||
bool GSocketGUIFunctionsTableNull::OnInit()
|
|
||||||
{ return true; }
|
|
||||||
void GSocketGUIFunctionsTableNull::OnExit()
|
|
||||||
{}
|
|
||||||
bool GSocketGUIFunctionsTableNull::CanUseEventLoop()
|
|
||||||
{ return false; }
|
|
||||||
bool GSocketGUIFunctionsTableNull::Init_Socket(GSocket *WXUNUSED(socket))
|
|
||||||
{ return true; }
|
|
||||||
void GSocketGUIFunctionsTableNull::Destroy_Socket(GSocket *WXUNUSED(socket))
|
|
||||||
{}
|
|
||||||
void GSocketGUIFunctionsTableNull::Install_Callback(GSocket *WXUNUSED(socket), GSocketEvent WXUNUSED(event))
|
|
||||||
{}
|
|
||||||
void GSocketGUIFunctionsTableNull::Uninstall_Callback(GSocket *WXUNUSED(socket), GSocketEvent WXUNUSED(event))
|
|
||||||
{}
|
|
||||||
void GSocketGUIFunctionsTableNull::Enable_Events(GSocket *WXUNUSED(socket))
|
|
||||||
{}
|
|
||||||
void GSocketGUIFunctionsTableNull::Disable_Events(GSocket *WXUNUSED(socket))
|
|
||||||
{}
|
|
||||||
/* Global initialisers */
|
|
||||||
|
|
||||||
void GSocket_SetGUIFunctions(GSocketGUIFunctionsTable *guifunc)
|
|
||||||
{
|
|
||||||
gs_gui_functions = guifunc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int GSocket_Init(void)
|
void GSocket_Cleanup()
|
||||||
{
|
{
|
||||||
if (!gs_gui_functions)
|
GSocketManager * const manager = GSocketManager::Get();
|
||||||
{
|
if ( manager )
|
||||||
static GSocketGUIFunctionsTableNull table;
|
manager->OnExit();
|
||||||
gs_gui_functions = &table;
|
|
||||||
}
|
|
||||||
if ( !gs_gui_functions->OnInit() )
|
|
||||||
return 0;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GSocket_Cleanup(void)
|
|
||||||
{
|
|
||||||
if (gs_gui_functions)
|
|
||||||
{
|
|
||||||
gs_gui_functions->OnExit();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Constructors / Destructors for GSocket */
|
/* Constructors / Destructors for GSocket */
|
||||||
@@ -547,17 +500,17 @@ GSocket::GSocket()
|
|||||||
m_timeout = 10*60*1000;
|
m_timeout = 10*60*1000;
|
||||||
/* 10 minutes * 60 sec * 1000 millisec */
|
/* 10 minutes * 60 sec * 1000 millisec */
|
||||||
m_establishing = false;
|
m_establishing = false;
|
||||||
|
m_use_events = false;
|
||||||
m_initialRecvBufferSize = -1;
|
m_initialRecvBufferSize = -1;
|
||||||
m_initialSendBufferSize = -1;
|
m_initialSendBufferSize = -1;
|
||||||
|
|
||||||
assert(gs_gui_functions);
|
m_ok = GSocketManager::Get()->Init_Socket(this);
|
||||||
/* Per-socket GUI-specific initialization */
|
|
||||||
m_ok = gs_gui_functions->Init_Socket(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSocket::Close()
|
void GSocket::Close()
|
||||||
{
|
{
|
||||||
gs_gui_functions->Disable_Events(this);
|
if (m_use_events)
|
||||||
|
DisableEvents();
|
||||||
|
|
||||||
/* When running on OS X, the gsockosx implementation of GSocketGUIFunctionsTable
|
/* When running on OS X, the gsockosx implementation of GSocketGUIFunctionsTable
|
||||||
will close the socket during Disable_Events. However, it will only do this
|
will close the socket during Disable_Events. However, it will only do this
|
||||||
@@ -580,8 +533,7 @@ GSocket::~GSocket()
|
|||||||
if (m_fd != INVALID_SOCKET)
|
if (m_fd != INVALID_SOCKET)
|
||||||
Shutdown();
|
Shutdown();
|
||||||
|
|
||||||
/* Per-socket GUI-specific cleanup */
|
GSocketManager::Get()->Destroy_Socket(this);
|
||||||
gs_gui_functions->Destroy_Socket(this);
|
|
||||||
|
|
||||||
delete m_handler;
|
delete m_handler;
|
||||||
|
|
||||||
@@ -591,6 +543,7 @@ GSocket::~GSocket()
|
|||||||
|
|
||||||
if (m_peer)
|
if (m_peer)
|
||||||
GAddress_destroy(m_peer);
|
GAddress_destroy(m_peer);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* GSocket_Shutdown:
|
/* GSocket_Shutdown:
|
||||||
@@ -604,7 +557,8 @@ void GSocket::Shutdown()
|
|||||||
assert(this);
|
assert(this);
|
||||||
|
|
||||||
/* Don't allow events to fire after socket has been closed */
|
/* Don't allow events to fire after socket has been closed */
|
||||||
gs_gui_functions->Disable_Events(this);
|
if (m_use_events)
|
||||||
|
DisableEvents();
|
||||||
|
|
||||||
/* If socket has been created, shutdown it */
|
/* If socket has been created, shutdown it */
|
||||||
if (m_fd != INVALID_SOCKET)
|
if (m_fd != INVALID_SOCKET)
|
||||||
@@ -788,7 +742,8 @@ GSocketError GSocket::SetServer()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
ioctl(m_fd, FIONBIO, &arg);
|
ioctl(m_fd, FIONBIO, &arg);
|
||||||
gs_gui_functions->Enable_Events(this);
|
if (m_use_events)
|
||||||
|
EnableEvents();
|
||||||
|
|
||||||
/* allow a socket to re-bind if the socket is in the TIME_WAIT
|
/* allow a socket to re-bind if the socket is in the TIME_WAIT
|
||||||
state after being previously closed.
|
state after being previously closed.
|
||||||
@@ -907,11 +862,30 @@ GSocket *GSocket::WaitConnection()
|
|||||||
#else
|
#else
|
||||||
ioctl(connection->m_fd, FIONBIO, &arg);
|
ioctl(connection->m_fd, FIONBIO, &arg);
|
||||||
#endif
|
#endif
|
||||||
gs_gui_functions->Enable_Events(connection);
|
if (m_use_events)
|
||||||
|
connection->Notify(true);
|
||||||
|
|
||||||
return connection;
|
return connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GSocket::Notify(bool flag)
|
||||||
|
{
|
||||||
|
if (flag == m_use_events)
|
||||||
|
return;
|
||||||
|
// it is not safe to attach or detach i/o descriptor in child thread
|
||||||
|
wxASSERT_MSG( wxThread::IsMain(), "should be called in main thread only" );
|
||||||
|
m_use_events = flag;
|
||||||
|
EnableEvents(flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GSocket::EnableEvents(bool flag)
|
||||||
|
{
|
||||||
|
if (flag)
|
||||||
|
GSocketManager::Get()->Enable_Events(this);
|
||||||
|
else
|
||||||
|
GSocketManager::Get()->Disable_Events(this);
|
||||||
|
}
|
||||||
|
|
||||||
bool GSocket::SetReusable()
|
bool GSocket::SetReusable()
|
||||||
{
|
{
|
||||||
/* socket must not be null, and must not be in use/already bound */
|
/* socket must not be null, and must not be in use/already bound */
|
||||||
@@ -1049,8 +1023,8 @@ GSocketError GSocket::Connect(GSocketStream stream)
|
|||||||
* call to Enable_Events now.
|
* call to Enable_Events now.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (m_non_blocking || ret == 0)
|
if (m_use_events && (m_non_blocking || ret == 0))
|
||||||
gs_gui_functions->Enable_Events(this);
|
EnableEvents();
|
||||||
|
|
||||||
if (ret == -1)
|
if (ret == -1)
|
||||||
{
|
{
|
||||||
@@ -1075,8 +1049,8 @@ GSocketError GSocket::Connect(GSocketStream stream)
|
|||||||
SOCKOPTLEN_T len = sizeof(error);
|
SOCKOPTLEN_T len = sizeof(error);
|
||||||
|
|
||||||
getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (char*) &error, &len);
|
getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (char*) &error, &len);
|
||||||
|
if (m_use_events)
|
||||||
gs_gui_functions->Enable_Events(this);
|
EnableEvents();
|
||||||
|
|
||||||
if (!error)
|
if (!error)
|
||||||
return GSOCK_NOERROR;
|
return GSOCK_NOERROR;
|
||||||
@@ -1156,7 +1130,8 @@ GSocketError GSocket::SetNonOriented()
|
|||||||
#else
|
#else
|
||||||
ioctl(m_fd, FIONBIO, &arg);
|
ioctl(m_fd, FIONBIO, &arg);
|
||||||
#endif
|
#endif
|
||||||
gs_gui_functions->Enable_Events(this);
|
if (m_use_events)
|
||||||
|
EnableEvents();
|
||||||
|
|
||||||
if (m_reusable)
|
if (m_reusable)
|
||||||
{
|
{
|
||||||
@@ -1228,9 +1203,12 @@ int GSocket::Read(char *buffer, int size)
|
|||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
{
|
{
|
||||||
/* Make sure wxSOCKET_LOST event gets sent and shut down the socket */
|
/* Make sure wxSOCKET_LOST event gets sent and shut down the socket */
|
||||||
m_detected = GSOCK_LOST_FLAG;
|
if (m_use_events)
|
||||||
Detected_Read();
|
{
|
||||||
return 0;
|
m_detected = GSOCK_LOST_FLAG;
|
||||||
|
Detected_Read();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (ret == -1)
|
else if (ret == -1)
|
||||||
{
|
{
|
||||||
@@ -1314,116 +1292,9 @@ int GSocket::Write(const char *buffer, int size)
|
|||||||
*/
|
*/
|
||||||
GSocketEventFlags GSocket::Select(GSocketEventFlags flags)
|
GSocketEventFlags GSocket::Select(GSocketEventFlags flags)
|
||||||
{
|
{
|
||||||
if (!gs_gui_functions->CanUseEventLoop())
|
assert(this);
|
||||||
{
|
|
||||||
|
|
||||||
GSocketEventFlags result = 0;
|
return flags & m_detected;
|
||||||
fd_set readfds;
|
|
||||||
fd_set writefds;
|
|
||||||
fd_set exceptfds;
|
|
||||||
struct timeval tv;
|
|
||||||
|
|
||||||
assert(this);
|
|
||||||
|
|
||||||
if (m_fd == -1)
|
|
||||||
return (GSOCK_LOST_FLAG & flags);
|
|
||||||
|
|
||||||
/* Do not use a static struct, Linux can garble it */
|
|
||||||
tv.tv_sec = m_timeout / 1000;
|
|
||||||
tv.tv_usec = (m_timeout % 1000) * 1000;
|
|
||||||
|
|
||||||
wxFD_ZERO(&readfds);
|
|
||||||
wxFD_ZERO(&writefds);
|
|
||||||
wxFD_ZERO(&exceptfds);
|
|
||||||
wxFD_SET(m_fd, &readfds);
|
|
||||||
if (flags & GSOCK_OUTPUT_FLAG || flags & GSOCK_CONNECTION_FLAG)
|
|
||||||
wxFD_SET(m_fd, &writefds);
|
|
||||||
wxFD_SET(m_fd, &exceptfds);
|
|
||||||
|
|
||||||
/* Check 'sticky' CONNECTION flag first */
|
|
||||||
result |= (GSOCK_CONNECTION_FLAG & m_detected);
|
|
||||||
|
|
||||||
/* If we have already detected a LOST event, then don't try
|
|
||||||
* to do any further processing.
|
|
||||||
*/
|
|
||||||
if ((m_detected & GSOCK_LOST_FLAG) != 0)
|
|
||||||
{
|
|
||||||
m_establishing = false;
|
|
||||||
|
|
||||||
return (GSOCK_LOST_FLAG & flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Try select now */
|
|
||||||
if (select(m_fd + 1, &readfds, &writefds, &exceptfds, &tv) <= 0)
|
|
||||||
{
|
|
||||||
/* What to do here? */
|
|
||||||
return (result & flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check for exceptions and errors */
|
|
||||||
if (wxFD_ISSET(m_fd, &exceptfds))
|
|
||||||
{
|
|
||||||
m_establishing = false;
|
|
||||||
m_detected = GSOCK_LOST_FLAG;
|
|
||||||
|
|
||||||
/* LOST event: Abort any further processing */
|
|
||||||
return (GSOCK_LOST_FLAG & flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check for readability */
|
|
||||||
if (wxFD_ISSET(m_fd, &readfds))
|
|
||||||
{
|
|
||||||
result |= GSOCK_INPUT_FLAG;
|
|
||||||
|
|
||||||
if (m_server && m_stream)
|
|
||||||
{
|
|
||||||
/* This is a TCP server socket that detected a connection.
|
|
||||||
While the INPUT_FLAG is also set, it doesn't matter on
|
|
||||||
this kind of sockets, as we can only Accept() from them. */
|
|
||||||
result |= GSOCK_CONNECTION_FLAG;
|
|
||||||
m_detected |= GSOCK_CONNECTION_FLAG;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check for writability */
|
|
||||||
if (wxFD_ISSET(m_fd, &writefds))
|
|
||||||
{
|
|
||||||
if (m_establishing && !m_server)
|
|
||||||
{
|
|
||||||
int error;
|
|
||||||
SOCKOPTLEN_T len = sizeof(error);
|
|
||||||
|
|
||||||
m_establishing = false;
|
|
||||||
|
|
||||||
getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (char*)&error, &len);
|
|
||||||
|
|
||||||
if (error)
|
|
||||||
{
|
|
||||||
m_detected = GSOCK_LOST_FLAG;
|
|
||||||
|
|
||||||
/* LOST event: Abort any further processing */
|
|
||||||
return (GSOCK_LOST_FLAG & flags);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result |= GSOCK_CONNECTION_FLAG;
|
|
||||||
m_detected |= GSOCK_CONNECTION_FLAG;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result |= GSOCK_OUTPUT_FLAG;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return (result & flags);
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
assert(this);
|
|
||||||
return flags & m_detected;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Flags */
|
/* Flags */
|
||||||
@@ -1558,14 +1429,20 @@ GSocketError GSocket::SetSockOpt(int level, int optname,
|
|||||||
|
|
||||||
void GSocket::Enable(GSocketEvent event)
|
void GSocket::Enable(GSocketEvent event)
|
||||||
{
|
{
|
||||||
m_detected &= ~(1 << event);
|
if (m_use_events)
|
||||||
gs_gui_functions->Install_Callback(this, event);
|
{
|
||||||
|
m_detected &= ~(1 << event);
|
||||||
|
GSocketManager::Get()->Install_Callback(this, event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSocket::Disable(GSocketEvent event)
|
void GSocket::Disable(GSocketEvent event)
|
||||||
{
|
{
|
||||||
m_detected |= (1 << event);
|
if (m_use_events)
|
||||||
gs_gui_functions->Uninstall_Callback(this, event);
|
{
|
||||||
|
m_detected |= (1 << event);
|
||||||
|
GSocketManager::Get()->Uninstall_Callback(this, event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* _GSocket_Input_Timeout:
|
/* _GSocket_Input_Timeout:
|
||||||
|
@@ -329,6 +329,7 @@ wx/xtistrm.h
|
|||||||
wx/zipstrm.h
|
wx/zipstrm.h
|
||||||
wx/zstream.h
|
wx/zstream.h
|
||||||
wx/private/fdiodispatcher.h
|
wx/private/fdiodispatcher.h
|
||||||
|
wx/private/gsocketiohandler.h
|
||||||
wx/private/selectdispatcher.h
|
wx/private/selectdispatcher.h
|
||||||
wx/unix/app.h
|
wx/unix/app.h
|
||||||
wx/unix/apptbase.h
|
wx/unix/apptbase.h
|
||||||
|
@@ -234,6 +234,7 @@ wx/xtistrm.h
|
|||||||
wx/zipstrm.h
|
wx/zipstrm.h
|
||||||
wx/zstream.h
|
wx/zstream.h
|
||||||
wx/private/fdiodispatcher.h
|
wx/private/fdiodispatcher.h
|
||||||
|
wx/private/gsocketiohandler.h
|
||||||
wx/private/selectdispatcher.h
|
wx/private/selectdispatcher.h
|
||||||
wx/unix/app.h
|
wx/unix/app.h
|
||||||
wx/unix/apptbase.h
|
wx/unix/apptbase.h
|
||||||
|
@@ -258,6 +258,7 @@ wx/xtistrm.h
|
|||||||
wx/zipstrm.h
|
wx/zipstrm.h
|
||||||
wx/zstream.h
|
wx/zstream.h
|
||||||
wx/private/fdiodispatcher.h
|
wx/private/fdiodispatcher.h
|
||||||
|
wx/private/gsocketiohandler.h
|
||||||
wx/private/selectdispatcher.h
|
wx/private/selectdispatcher.h
|
||||||
wx/unix/app.h
|
wx/unix/app.h
|
||||||
wx/unix/apptbase.h
|
wx/unix/apptbase.h
|
||||||
|
Reference in New Issue
Block a user