|
From: <tho...@us...> - 2012-07-02 20:41:49
|
Revision: 902
http://openautomation.svn.sourceforge.net/openautomation/?rev=902&view=rev
Author: thomas_s
Date: 2012-07-02 20:41:43 +0000 (Mon, 02 Jul 2012)
Log Message:
-----------
use std::bind, std::thread and chrono
Modified Paths:
--------------
xPLHAL/branches/thomas_s_dev/src/log.h
xPLHAL/branches/thomas_s_dev/src/main.cpp
xPLHAL/branches/thomas_s_dev/src/xhcp.cpp
xPLHAL/branches/thomas_s_dev/src/xhcp.h
xPLHAL/branches/thomas_s_dev/src/xhcpthread.cpp
xPLHAL/branches/thomas_s_dev/src/xhcpthread.h
xPLHAL/branches/thomas_s_dev/src/xplhandler.cpp
xPLHAL/branches/thomas_s_dev/src/xplhandler.h
Modified: xPLHAL/branches/thomas_s_dev/src/log.h
===================================================================
--- xPLHAL/branches/thomas_s_dev/src/log.h 2012-07-02 20:41:20 UTC (rev 901)
+++ xPLHAL/branches/thomas_s_dev/src/log.h 2012-07-02 20:41:43 UTC (rev 902)
@@ -18,7 +18,8 @@
*/
#include <iostream>
-#include <boost/date_time/posix_time/posix_time.hpp>
+#include <chrono>
+#include <array>
#include <boost/lexical_cast.hpp>
using boost::lexical_cast;
@@ -87,9 +88,22 @@
bool showLogColor; /**< \brief Status if colored logging should be used. */
bool showLogTimestamp; /**< \brief Status if timestamped logging should be used. */
+ template<class T>
+ std::string to_simple_string(const T& tp)
+ {
+ using namespace std::chrono;
+ using namespace std;
+ array<char, 50> buffer;
+ const time_t now_c = T::clock::to_time_t(tp);
+ strftime(&buffer[0], buffer.size(), "%F %T", localtime(&now_c));
+ const auto secs = duration_cast<seconds>(tp.time_since_epoch());
+ const auto fractional = duration_cast<milliseconds>(tp.time_since_epoch() - secs);
+ return std::string(&buffer[0]) + "." + lexical_cast<std::string>(fractional.count());
+ }
+
void doLog( std::string message, logLevel::logLevel level )
{
- std::string timestamp( to_simple_string(boost::posix_time::microsec_clock::local_time()) );
+ std::string timestamp( to_simple_string( std::chrono::high_resolution_clock::now() ));
if( level >= currentLogLevel )
{
if( showLogColor ) std::cout << escape::FgGray;
Modified: xPLHAL/branches/thomas_s_dev/src/main.cpp
===================================================================
--- xPLHAL/branches/thomas_s_dev/src/main.cpp 2012-07-02 20:41:20 UTC (rev 901)
+++ xPLHAL/branches/thomas_s_dev/src/main.cpp 2012-07-02 20:41:43 UTC (rev 902)
@@ -15,7 +15,9 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <functional>
#include <signal.h>
+
#include <boost/program_options.hpp>
#include "log.h"
#include "devicemanager.h"
@@ -38,6 +40,7 @@
using std::cout;
using std::endl;
+using namespace std::placeholders;
path xPLHalRootFolder;
path DataFileFolder;
path ScriptEngineFolder;
@@ -60,12 +63,12 @@
,mXHCPServer(new XHCPServer(m_ioservice, &mDeviceManager))
,mXpl(new xPLHandler(m_ioservice, boost::asio::ip::host_name() ))
,mDeterminatorManager("data")
- ,mTimerListAllObjects(m_ioservice, boost::posix_time::seconds(60), true)
- ,mTimerFlushExpiredEntries(m_ioservice, boost::posix_time::minutes(5), true)
+ ,mTimerListAllObjects(m_ioservice, std::chrono::seconds(60), true)
+ ,mTimerFlushExpiredEntries(m_ioservice, std::chrono::minutes(5), true)
{
- mDeviceManager.m_sigSendXplMessage.connect(boost::bind(&xPLHandler::sendMessage, mXpl, _1));
- mXpl->m_sigRceivedXplMessage.connect(boost::bind(&DeviceManager::processXplMessage, &mDeviceManager, _1));
+ mDeviceManager.m_sigSendXplMessage.connect([&](const xPLMessagePtr ptr) {mXpl->sendMessage(ptr);});
+ mXpl->m_sigRceivedXplMessage.connect(std::bind(&DeviceManager::processXplMessage, &mDeviceManager, _1));
mXpl->m_sigRceivedXplMessage.connect(mDeterminatorManager.m_sigRceivedXplMessage);
installTimer();
Modified: xPLHAL/branches/thomas_s_dev/src/xhcp.cpp
===================================================================
--- xPLHAL/branches/thomas_s_dev/src/xhcp.cpp 2012-07-02 20:41:20 UTC (rev 901)
+++ xPLHAL/branches/thomas_s_dev/src/xhcp.cpp 2012-07-02 20:41:43 UTC (rev 902)
@@ -41,7 +41,7 @@
void XHCPServer::startAccept()
{
socket_ptr sockPtr(new tcp::socket(m_io));
- m_acceptor.async_accept(*sockPtr, boost::bind(&XHCPServer::handleAccept, this, sockPtr));
+ m_acceptor.async_accept(*sockPtr, std::bind(&XHCPServer::handleAccept, this, sockPtr));
}
void XHCPServer::handleAccept(socket_ptr sockPtr)
Modified: xPLHAL/branches/thomas_s_dev/src/xhcp.h
===================================================================
--- xPLHAL/branches/thomas_s_dev/src/xhcp.h 2012-07-02 20:41:20 UTC (rev 901)
+++ xPLHAL/branches/thomas_s_dev/src/xhcp.h 2012-07-02 20:41:43 UTC (rev 902)
@@ -18,8 +18,6 @@
*/
#include <boost/asio.hpp>
-//#include <boost/thread.hpp>
-
#include "xplcache.h"
#include "xhcpthread.h"
@@ -29,9 +27,6 @@
*/
class XHCPServer
{
- //volatile bool m_stoprequested;
- //boost::thread m_thread;
-
public:
XHCPServer(boost::asio::io_service& io, DeviceManager* dm);
~XHCPServer();
@@ -39,7 +34,6 @@
protected:
/** \brief Create a new XHCPThread for a new connection. */
-// void waitForConnection( void );
void handleAccept(socket_ptr sockPtr);
void startAccept();
Modified: xPLHAL/branches/thomas_s_dev/src/xhcpthread.cpp
===================================================================
--- xPLHAL/branches/thomas_s_dev/src/xhcpthread.cpp 2012-07-02 20:41:20 UTC (rev 901)
+++ xPLHAL/branches/thomas_s_dev/src/xhcpthread.cpp 2012-07-02 20:41:43 UTC (rev 902)
@@ -49,7 +49,7 @@
, quit( false )
, inMultilineRequest( false )
, multilineRequestHandler( 0 )
- , m_thread(boost::bind(&XHCPThread::run, this))
+ , m_thread(std::bind(&XHCPThread::run, this))
, m_deviceManager(dm)
{
}
Modified: xPLHAL/branches/thomas_s_dev/src/xhcpthread.h
===================================================================
--- xPLHAL/branches/thomas_s_dev/src/xhcpthread.h 2012-07-02 20:41:20 UTC (rev 901)
+++ xPLHAL/branches/thomas_s_dev/src/xhcpthread.h 2012-07-02 20:41:43 UTC (rev 902)
@@ -20,8 +20,8 @@
#include <map>
#include <boost/smart_ptr.hpp>
-#include <boost/thread.hpp>
#include <boost/asio.hpp>
+#include <thread>
#include "xplcache.h"
@@ -85,5 +85,5 @@
std::string commandSendXPlMessage ( const std::string& parameter );
std::string commandQuit ( const std::string& parameter );
- boost::thread m_thread;
+ std::thread m_thread;
};
Modified: xPLHAL/branches/thomas_s_dev/src/xplhandler.cpp
===================================================================
--- xPLHAL/branches/thomas_s_dev/src/xplhandler.cpp 2012-07-02 20:41:20 UTC (rev 901)
+++ xPLHAL/branches/thomas_s_dev/src/xplhandler.cpp 2012-07-02 20:41:43 UTC (rev 902)
@@ -20,8 +20,10 @@
#include "xplmessagequeue.h"
#include <boost/algorithm/string/replace.hpp>
+#include <functional>
using std::string;
+using namespace std::placeholders;
#include "log.h"
@@ -177,12 +179,12 @@
void xPLHandler::startAsyncRead()
{
- m_xplSocket.async_read_some(boost::asio::null_buffers(), boost::bind(&xPLHandler::handleReadableXplSocket, this, _1));
+ m_xplSocket.async_read_some(boost::asio::null_buffers(), std::bind(&xPLHandler::handleReadableXplSocket, this, _1));
}
void xPLHandler::startAsyncWrite()
{
- m_xplWriteSocket.async_read_some(boost::asio::null_buffers(), boost::bind(&xPLHandler::handleReadableXplMessagequeue, this, _1));
+ m_xplWriteSocket.async_read_some(boost::asio::null_buffers(), std::bind(&xPLHandler::handleReadableXplMessagequeue, this, _1));
}
void xPLHandler::handleReadableXplMessagequeue(boost::system::error_code ec)
@@ -210,7 +212,7 @@
}
}
-void xPLHandler::sendMessage( const xPLMessagePtr& message )
+void xPLHandler::sendMessage( const xPLMessagePtr message )
{
mXplMessageQueue->add(message);
}
Modified: xPLHAL/branches/thomas_s_dev/src/xplhandler.h
===================================================================
--- xPLHAL/branches/thomas_s_dev/src/xplhandler.h 2012-07-02 20:41:20 UTC (rev 901)
+++ xPLHAL/branches/thomas_s_dev/src/xplhandler.h 2012-07-02 20:41:43 UTC (rev 902)
@@ -20,11 +20,13 @@
#include <vector>
#include <string>
+#define BOOST_BIND_NO_PLACEHOLDERS
#include <boost/signals2/signal.hpp>
#include <boost/asio.hpp>
#include "xplmessage.h"
+#include "xplmessagequeue.h"
-class XplMessageQueue;
+//class XplMessageQueue;
/**
* \brief Handle all xPL communication.
@@ -40,7 +42,7 @@
void run();
- void sendMessage( const xPLMessagePtr& message );
+ void sendMessage( const xPLMessagePtr message );
/** \brief Broadcast one message to the xPL network. */
void sendBroadcastMessage( const std::string& msgClass, const std::string& msgType, const xPLMessage::namedValueList& namedValues );
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|