thread.cpp
Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 #include <opc/common/thread.h>
00012 
00013 #include <iostream>
00014 
00015 namespace Common
00016 {
00017 
00018     Thread::Thread(std::function<void()> f, ThreadObserver* observer)
00019       : Observer(observer)
00020       , Func(f)
00021       , Impl(Thread::ThreadProc, this)
00022     {
00023     }
00024 
00025     Thread::~Thread()
00026     {
00027       try
00028       {
00029         Join();
00030       }
00031       catch (std::exception&)
00032       {
00033       }
00034     }
00035 
00036     void Thread::Join()
00037     {
00038       Impl.join();
00039     }
00040 
00041     void Thread::Run()
00042     {
00043       try
00044       {
00045         Func();
00046         if (Observer)
00047         {
00048           Observer->OnSuccess();
00049         }
00050       }
00051       catch (const std::exception& exc)
00052       {
00053         if (Observer)
00054         {
00055           Observer->OnError(exc);
00056         }
00057       }
00058     }
00059 
00060     void Thread::ThreadProc(Thread* thread)
00061     {
00062       thread->Run();
00063     }
00064 
00065 } // namespace Common
00066 


ros_opcua_impl_freeopcua
Author(s): Denis Štogl
autogenerated on Sat Jun 8 2019 18:24:57