diff --git a/Essentials/pAntler/Antler.cpp b/Essentials/pAntler/Antler.cpp index 8f9b80f..a1e6524 100644 --- a/Essentials/pAntler/Antler.cpp +++ b/Essentials/pAntler/Antler.cpp @@ -659,7 +659,7 @@ bool CAntler::MakeConsoleLaunchParams(std::string sParam,STRING_LIST & LaunchLis CAntler::MOOSProc* CAntler::CreateMOOSProcess(string sConfiguration) { - + MOOSRemoveChars(sConfiguration," \t\r"); //what tis its name? (if no @ symbol we just get the name and no cmdline) string sProcName = MOOSChomp(sConfiguration,"@"); diff --git a/Essentials/pAntler/CMakeLists.txt b/Essentials/pAntler/CMakeLists.txt index 624d8cc..0410e76 100644 --- a/Essentials/pAntler/CMakeLists.txt +++ b/Essentials/pAntler/CMakeLists.txt @@ -6,6 +6,11 @@ find_package(MOOS 10) #what files are needed? SET(SRCS AntlerMain.cpp Antler.cpp) +IF (WIN32) + SET(SRCS ${SRCS} XPCProcess.cpp XPCProcessAttrib.cpp) +ENDIF(WIN32) + + include_directories( ${${EXECNAME}_INCLUDE_DIRS} ${MOOS_INCLUDE_DIRS} ${MOOS_DEPEND_INCLUDE_DIRS}) add_executable(${EXECNAME} ${SRCS} ) target_link_libraries(${EXECNAME} ${MOOS_LIBRARIES} ${MOOS_DEPEND_LIBRARIES}) diff --git a/Essentials/pLogger/MOOSLogger.cpp b/Essentials/pLogger/MOOSLogger.cpp index bf3f19c..f9eeb9d 100644 --- a/Essentials/pLogger/MOOSLogger.cpp +++ b/Essentials/pLogger/MOOSLogger.cpp @@ -1032,7 +1032,7 @@ bool CMOOSLogger::CreateDirectory(const std::string & sDirectory) { #if _WIN32 - int bOK = ::CreateDirectory(sDirectory.c_str(),NULL); + int bOK = ::CreateDirectoryA(sDirectory.c_str(),NULL); if(!bOK) { @@ -1042,7 +1042,7 @@ bool CMOOSLogger::CreateDirectory(const std::string & sDirectory) { LPVOID lpMsgBuf; - FormatMessage( + FormatMessageA( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, diff --git a/Essentials/pLogger/MOOSLogger.h b/Essentials/pLogger/MOOSLogger.h index 4f07814..f58efd5 100644 --- a/Essentials/pLogger/MOOSLogger.h +++ b/Essentials/pLogger/MOOSLogger.h @@ -39,6 +39,11 @@ #include #include "Zipper.h" +#if _WIN32 + #include + #include +#endif // windows + typedef std::vector STRING_VECTOR; class CMOOSLogger : public CMOOSApp diff --git a/Essentials/pMOOSBridge/MOOSCommunity.cpp b/Essentials/pMOOSBridge/MOOSCommunity.cpp index 0f88809..79cb36d 100644 --- a/Essentials/pMOOSBridge/MOOSCommunity.cpp +++ b/Essentials/pMOOSBridge/MOOSCommunity.cpp @@ -30,6 +30,12 @@ // MOOSCommunity.cpp: implementation of the CMOOSCommunity class. // ////////////////////////////////////////////////////////////////////// + +// JLBC: Avoid winsock2 conflict by including it now: +#ifdef _WIN32 + #include +#endif + #include "MOOSCommunity.h" #include "MOOS/libMOOS/MOOSLib.h" diff --git a/Essentials/pScheduler/MOOSScheduler.cpp b/Essentials/pScheduler/MOOSScheduler.cpp index ee95471..7d0720f 100644 --- a/Essentials/pScheduler/MOOSScheduler.cpp +++ b/Essentials/pScheduler/MOOSScheduler.cpp @@ -372,11 +372,29 @@ bool CMOOSScheduler::CEvent::GetOutput(double dfTimeNow, MOOSMSG_LIST &Out) //set up next fire time m_dfFireTime+=m_dfPeriod; - CMOOSMsg Msg( MOOS_NOTIFY, + CMOOSMsg *msg = NULL; + double fVal=0; + if ( ::sscanf(m_sVal.c_str(),"%lf",&fVal)==1) + { + // It's a double: + msg = new CMOOSMsg(MOOS_NOTIFY, + m_sName.c_str(), + fVal, + dfTimeNow); + } + else + { + // It's text: + msg = new CMOOSMsg(MOOS_NOTIFY, m_sName.c_str(), m_sVal.c_str(), dfTimeNow); + } + + CMOOSMsg Msg = *msg; + delete msg; + Out.push_front(Msg); return true; diff --git a/Essentials/pShare/CMakeLists.txt b/Essentials/pShare/CMakeLists.txt index dff17bd..d8ef2a0 100644 --- a/Essentials/pShare/CMakeLists.txt +++ b/Essentials/pShare/CMakeLists.txt @@ -10,6 +10,10 @@ include_directories( ${${EXECNAME}_INCLUDE_DIRS} ${MOOS_INCLUDE_DIRS} ${MOOS_DEP add_executable(${EXECNAME} ${SRCS} ) target_link_libraries(${EXECNAME} ${MOOS_LIBRARIES} ${MOOS_DEPEND_LIBRARIES}) +IF (WIN32) + target_link_libraries(${EXECNAME} Ws2_32.lib) +ENDIF(WIN32) + INSTALL(TARGETS ${EXECNAME} RUNTIME DESTINATION bin ) diff --git a/Essentials/pShare/Listener.cpp b/Essentials/pShare/Listener.cpp index a9c2e92..a34cb8e 100644 --- a/Essentials/pShare/Listener.cpp +++ b/Essentials/pShare/Listener.cpp @@ -5,12 +5,19 @@ * Author: pnewman */ #ifndef _WIN32 -#include "unistd.h" +# include "unistd.h" +# include +# include +# include +#else +# ifndef _WIN32_WINNT +# define _WIN32_WINNT 0x0600 //will only work with vista and above as XP does not support IPv6 +# endif +# include +# include +# include #endif -#include -#include -#include #include #include #include @@ -52,7 +59,7 @@ bool Listener::ListenLoop() //we want to be able to resuse it (multiple folk are interested) int reuse = 1; - if (setsockopt(socket_fd, SOL_SOCKET,SO_REUSEADDR/* SO_REUSEPORT*/, &reuse, sizeof(reuse)) == -1) + if (setsockopt(socket_fd, SOL_SOCKET,SO_REUSEADDR/* SO_REUSEPORT*/, (const char*)&reuse, sizeof(reuse)) == -1) throw std::runtime_error("Listener::ListenLoop::setsockopt::reuse"); /* if (setsockopt(socket_fd, SOL_SOCKET, SO_REUSEPORT, @@ -63,7 +70,7 @@ bool Listener::ListenLoop() //give ourselves plenty of receive space //set aside some space for receiving - just a few multiples of 64K int rx_buffer_size = 64*1024*28; - if (setsockopt(socket_fd, SOL_SOCKET, SO_RCVBUF, &rx_buffer_size, sizeof(rx_buffer_size)) == -1) + if (setsockopt(socket_fd, SOL_SOCKET, SO_RCVBUF, (const char*)&rx_buffer_size, sizeof(rx_buffer_size)) == -1) throw std::runtime_error("Listener::ListenLoop()::setsockopt::rcvbuf"); @@ -91,7 +98,7 @@ bool Listener::ListenLoop() struct ip_mreq mreq; mreq.imr_multiaddr.s_addr = inet_addr(address_.host().c_str()); mreq.imr_interface.s_addr = INADDR_ANY; - if(setsockopt(socket_fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq))==-1) + if(setsockopt(socket_fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (const char*)&mreq, sizeof(mreq))==-1) throw std::runtime_error("Listener::ListenLoop()::setsockopt::ADD_MEMBERSHIP"); } diff --git a/Essentials/pShare/Share.cpp b/Essentials/pShare/Share.cpp index d851f45..43a6e0d 100644 --- a/Essentials/pShare/Share.cpp +++ b/Essentials/pShare/Share.cpp @@ -4,9 +4,21 @@ * Created on: Aug 26, 2012 * Author: pnewman */ -#include -#include -#include +#ifdef _WIN32 +# ifndef _WIN32_WINNT +# define _WIN32_WINNT 0x0600 //will only work with vista and above as XP does not support IPv6 +# endif +# include +# ifdef NTDDI_VERSION +# undef NTDDI_VERSION +# endif +# define NTDDI_VERSION NTDDI_VISTA +# include +#else +# include +# include +# include +#endif #include #include @@ -1021,7 +1033,7 @@ bool Share::Impl::ApplyRoutes(CMOOSMsg & msg) } //send here - if (sendto(relevant_socket.socket_fd, buffer.data(), buffer.size(), 0, + if (sendto(relevant_socket.socket_fd, (const char*)buffer.data(), buffer.size(), 0, (struct sockaddr*) (&relevant_socket.sock_addr), sizeof(relevant_socket.sock_addr)) < 0) { @@ -1066,7 +1078,7 @@ bool Share::Impl::AddOutputRoute(MOOS::IPV4Address address, bool multicast) int reuse = 1; if (setsockopt(new_socket.socket_fd, SOL_SOCKET, SO_REUSEADDR, - &reuse, sizeof(reuse)) == -1) + (const char*)&reuse, sizeof(reuse)) == -1) throw std::runtime_error("failed to set resuse socket option"); /* if (setsockopt(new_socket.socket_fd, SOL_SOCKET, SO_REUSEPORT, @@ -1076,7 +1088,7 @@ bool Share::Impl::AddOutputRoute(MOOS::IPV4Address address, bool multicast) int send_buffer_size = 4 * 64 * 1024; if (setsockopt(new_socket.socket_fd, SOL_SOCKET, SO_SNDBUF, - &send_buffer_size, + (const char*)&send_buffer_size, sizeof(send_buffer_size)) == -1) { throw std::runtime_error("failed to set size of socket send buffer"); @@ -1101,11 +1113,20 @@ bool Share::Impl::AddOutputRoute(MOOS::IPV4Address address, bool multicast) std::string dotted_ip = MOOS::IPV4Address::GetNumericAddress(new_socket.address.host()); - if(inet_aton(dotted_ip.c_str(), &new_socket.sock_addr.sin_addr)==0) - { - throw std::runtime_error("failed to intepret " - +dotted_ip+" as an ip address"); - } +#ifdef UNIX + if(inet_aton(dotted_ip.c_str(), &new_socket.sock_addr.sin_addr)==0) + { + throw std::runtime_error("failed to intepret " + +dotted_ip+" as an ip address"); + } +#elif _WIN32 + if( InetPtonA(AF_INET,dotted_ip.c_str(), &new_socket.sock_addr.sin_addr)==0) + { + throw std::runtime_error("failed to intepret " + +dotted_ip+" as an ip address"); + } +#endif + //new_socket.sock_addr.sin_addr.s_addr = inet_addr(new_socket.address.ip_num.c_str()); new_socket.sock_addr.sin_port = htons(new_socket.address.port());