From d5a353b49ec1745404f7b6106a6100d41a3393c0 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Thu, 31 May 2012 12:15:35 -0700 Subject: [PATCH 01/51] Added AsyncStackManager to swig class list --- DNP3Java/JavaDNP3.i | 1 + 1 file changed, 1 insertion(+) diff --git a/DNP3Java/JavaDNP3.i b/DNP3Java/JavaDNP3.i index 564995d5..3b836940 100755 --- a/DNP3Java/JavaDNP3.i +++ b/DNP3Java/JavaDNP3.i @@ -91,4 +91,5 @@ using namespace apl::dnp; %include "DNP3/StackManager.h" +%include "DNP3/AsyncStackManager.h" From 2d931a3ac23abce867aa715e2a47738ff21662d1 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Thu, 31 May 2012 21:32:05 -0700 Subject: [PATCH 02/51] Added VTO functions to StackManager --- DNP3/StackManager.cpp | 68 ++++++++++++++++++++++++++------------ DNP3/StackManager.h | 76 ++++++++++++++++++++++++++++++------------- DNP3Java/JavaDNP3.i | 1 - 3 files changed, 101 insertions(+), 44 deletions(-) diff --git a/DNP3/StackManager.cpp b/DNP3/StackManager.cpp index d9fcdf22..3a94e2f5 100644 --- a/DNP3/StackManager.cpp +++ b/DNP3/StackManager.cpp @@ -1,20 +1,19 @@ // -// Licensed to Green Energy Corp (www.greenenergycorp.com) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. Green Enery Corp licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at +// Licensed to Green Energy Corp (www.greenenergycorp.com) under one or +// more contributor license agreements. See the NOTICE file distributed +// with this work for additional information regarding copyright +// ownership. Green Enery Corp licenses this file to you under the +// Apache License, Version 2.0 (the "License"); you may not use this +// file except in compliance with the License. You may obtain a copy of +// the License at // // http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +// implied. See the License for the specific language governing +// permissions and limitations under the License. // #include "StackManager.h" @@ -26,12 +25,10 @@ namespace apl namespace dnp { -StackManager::StackManager() : - mpLog(new EventLog()), - mpImpl(new AsyncStackManager(mpLog->GetLogger(LEV_WARNING, "dnp"))) -{ - -} +StackManager::StackManager() + : mpLog ( new EventLog() ) + , mpImpl ( new AsyncStackManager(mpLog->GetLogger(LEV_WARNING, "dnp")) ) +{} void StackManager::AddLogHook(ILogBase* apHook) { @@ -72,7 +69,6 @@ IDataObserver* StackManager::AddSlave(const std::string& arPortName, const std:: return mpImpl->AddSlave(arPortName, arStackName, aLevel, apCmdAcceptor, arCfg); } - void StackManager::Shutdown() { mpImpl->Shutdown(); @@ -95,6 +91,38 @@ std::vector StackManager::GetPortNames() return mpImpl->GetPortNames(); } +void StackManager::AddVtoChannel(const std::string& arStackName, IVtoCallbacks* apOnDataCallback) +{ + return mpImpl->AddVtoChannel(arStackName, apOnDataCallback); +} + +void StackManager::RemoveVtoChannel(const std::string& arStackName, IVtoCallbacks* apOnDataCallback) +{ + mpImpl->RemoveVtoChannel(arStackName, apOnDataCallback); } + +void StackManager::StartVtoRouter(const std::string& arPortName, const std::string& arStackName, const VtoRouterSettings& arSettings) +{ + mpImpl->StartVtoRouter(arPortName, arStackName, arSettings); } +void StackManager::StopVtoRouter(const std::string& arStackName, boost::uint8_t aVtoChannelId) +{ + mpImpl->StopVtoRouter(arStackName, aVtoChannelId); +} + +void StackManager::StopAllRoutersOnStack(const std::string& arStackName) +{ + mpImpl->StopAllRoutersOnStack(arStackName); +} + +IVtoWriter* StackManager::GetVtoWriter(const std::string& arStackName) +{ + return mpImpl->GetVtoWriter(arStackName); +} + +} +} + +/* vim: set ts=4 sw=4 noexpandtab: */ + diff --git a/DNP3/StackManager.h b/DNP3/StackManager.h index e8c8b677..98bb4576 100644 --- a/DNP3/StackManager.h +++ b/DNP3/StackManager.h @@ -1,32 +1,32 @@ // -// Licensed to Green Energy Corp (www.greenenergycorp.com) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. Green Enery Corp licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at +// Licensed to Green Energy Corp (www.greenenergycorp.com) under one or +// more contributor license agreements. See the NOTICE file distributed +// with this work for additional information regarding copyright +// ownership. Green Enery Corp licenses this file to you under the +// Apache License, Version 2.0 (the "License"); you may not use this +// file except in compliance with the License. You may obtain a copy of +// the License at // // http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +// implied. See the License for the specific language governing +// permissions and limitations under the License. // #ifndef __STACK_MANAGER_H_ #define __STACK_MANAGER_H_ -#include -#include #include +#include #include +#include #include #include #include +#include #include @@ -43,19 +43,31 @@ namespace dnp class AsyncStackManager; -/** Wraps the AyncStackManger using the impl pattern. This makes it suiteable - for wrapping with swig or for creating a header-only distribution - The functions do the exact same thing as their impl counterparts - */ +/** + * Wraps the AyncStackManger using the impl pattern. This makes it + * suiteable for wrapping with swig or for creating a header-only + * distribution. The functions do the exact same thing as their impl + * counterparts. + */ class StackManager { public: StackManager(); ~StackManager(); - void AddTCPClient(const std::string& arName, PhysLayerSettings aPhys, const std::string& arAddr, boost::uint16_t aPort); - void AddTCPServer(const std::string& arName, PhysLayerSettings aPhys, const std::string& arEndpoint, boost::uint16_t aPort); - void AddSerial(const std::string& arName, PhysLayerSettings aPhys, SerialSettings aSerial); + void AddTCPClient(const std::string& arName, + PhysLayerSettings aPhys, + const std::string& arAddr, + boost::uint16_t aPort); + + void AddTCPServer(const std::string& arName, + PhysLayerSettings aPhys, + const std::string& arEndpoint, + boost::uint16_t aPort); + + void AddSerial(const std::string& arName, + PhysLayerSettings aPhys, + SerialSettings aSerial); ICommandAcceptor* AddMaster(const std::string& arPortName, const std::string& arStackName, @@ -69,6 +81,23 @@ class StackManager ICommandAcceptor* apCmdAcceptor, const SlaveStackConfig& arCfg); + void AddVtoChannel(const std::string& arStackName, + IVtoCallbacks* apOnDataCallback); + + void RemoveVtoChannel(const std::string& arStackName, + IVtoCallbacks* apOnDataCallback); + + void StartVtoRouter(const std::string& arPortName, + const std::string& arStackName, + const VtoRouterSettings& arSettings); + + void StopVtoRouter(const std::string& arStackName, + boost::uint8_t aVtoChannelId); + + void StopAllRoutersOnStack(const std::string& arStackName); + + IVtoWriter* GetVtoWriter(const std::string& arStackName); + void RemovePort(const std::string& arPortName); void RemoveStack(const std::string& arStackName); @@ -79,7 +108,6 @@ class StackManager std::vector GetPortNames(); - void Shutdown(); private: @@ -90,5 +118,7 @@ class StackManager } } +/* vim: set ts=4 sw=4 noexpandtab: */ + #endif diff --git a/DNP3Java/JavaDNP3.i b/DNP3Java/JavaDNP3.i index 3b836940..564995d5 100755 --- a/DNP3Java/JavaDNP3.i +++ b/DNP3Java/JavaDNP3.i @@ -91,5 +91,4 @@ using namespace apl::dnp; %include "DNP3/StackManager.h" -%include "DNP3/AsyncStackManager.h" From 3f4c131c9d48d77fe21cd17034c3c8af62d9c9bc Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Thu, 31 May 2012 22:08:17 -0700 Subject: [PATCH 03/51] Fixed gcc 4.6 warnings in TestAPDU.cpp --- DNP3Test/TestAPDU.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/DNP3Test/TestAPDU.cpp b/DNP3Test/TestAPDU.cpp index be882213..1c7b7c97 100644 --- a/DNP3Test/TestAPDU.cpp +++ b/DNP3Test/TestAPDU.cpp @@ -85,7 +85,7 @@ BOOST_AUTO_TEST_CASE(FunctionCodeToStringNamesAreUnique) }; set strings; - for(int i = 0; i < NUM_CODES; ++i) { + for (size_t i = 0; i < NUM_CODES; ++i) { FunctionCodes code = static_cast(codes[i]); string text = ToString(code); if(strings.find(text) != strings.end()) { @@ -130,7 +130,8 @@ BOOST_AUTO_TEST_CASE(ClassPollRequest) bool except = false; try { - IINField f = frag.GetIIN(); + //IINField f = frag.GetIIN(); + frag.GetIIN(); } catch(Exception) { except = true; @@ -305,7 +306,8 @@ BOOST_AUTO_TEST_CASE(ClearIIN) frag.Write(hs, hs.Size()); frag.Interpret(); - AppControlField control = frag.GetControl(); + //AppControlField control = frag.GetControl(); + frag.GetControl(); BOOST_REQUIRE_EQUAL(frag.GetFunction(), FC_WRITE); From bf20ef453b2fa2e0234fcfb8bbb723db4fc9ea0f Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Sat, 9 Jun 2012 00:11:23 -0700 Subject: [PATCH 04/51] Enhanced Swig support Remove several warnings printed when running swig by renaming the relevant functions to ones that are compatible with Java. Started working on porting the VTO interfaces to be Swig compatible. (Swig prefers "static const" over "const static.") --- DNP3/VtoData.h | 2 +- DNP3Java/JavaDNP3.i | 49 +++++++++++++++++++++++++++++++++++++-------- Makefile.am | 5 ++++- 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/DNP3/VtoData.h b/DNP3/VtoData.h index e17fe5e1..3cca50e1 100644 --- a/DNP3/VtoData.h +++ b/DNP3/VtoData.h @@ -40,7 +40,7 @@ class VtoData { public: - const static size_t MAX_SIZE = 255; + static const size_t MAX_SIZE = 255; VtoData(); diff --git a/DNP3Java/JavaDNP3.i b/DNP3Java/JavaDNP3.i index 564995d5..2db10bfa 100755 --- a/DNP3Java/JavaDNP3.i +++ b/DNP3Java/JavaDNP3.i @@ -19,18 +19,45 @@ using namespace apl::dnp; %include %include -%template(VectorOfString) std::vector; - %feature("director"); //generate directors for all classes that have virtual methods -%apply short { boost::uint8_t }; -%apply char { boost::int8_t }; -%apply int { boost::uint16_t }; -%apply short { boost::int16_t }; -%apply int { boost::int32_t }; +%apply short { boost::uint8_t }; +%apply char { boost::int8_t }; +%apply int { boost::uint16_t }; +%apply short { boost::int16_t }; %apply long long { boost::uint32_t }; -%apply long long { boost::int64_t }; +%apply int { boost::int32_t }; %apply long long { boost::uint64_t }; +%apply long long { boost::int64_t }; + +%template(VectorOfString) std::vector; + +namespace apl{ +%rename(equal) BinaryOutput::operator==(const BinaryOutput& arRHS) const; +%rename(equal) Setpoint::operator==(const Setpoint& arRHS) const; + +%rename(equal) BoolDataPoint::operator==(const BoolDataPoint& rhs); +%rename(equal) TypedDataPoint::operator==(const TypedDataPoint& rhs); + +%rename(get) Binary::operator ValueType() const; +%rename(set) Binary::operator=(ValueType aValue); + +%rename(get) ControlStatus::operator ValueType() const; +%rename(set) ControlStatus::operator=(ValueType aValue); + +%rename(get) Analog::operator ValueType() const; +%rename(set) Analog::operator=(ValueType aValue); + +%rename(get) Counter::operator ValueType() const; +%rename(set) Counter::operator=(ValueType aValue); + +%rename(get) SetpointStatus::operator ValueType() const; +%rename(set) SetpointStatus::operator=(ValueType aValue); + +%rename(ToString) operator<<(std::ostream& output, PhysicalLayerState aState); + +%ignore Transaction::Transaction(ITransactable* apTransactable); +} %include "APL/Types.h" %include "APL/INotifier.h" @@ -53,6 +80,12 @@ using namespace apl::dnp; %include "APL/DataInterfaces.h" %include "APL/CommandInterfaces.h" +%include "DNP3/VtoRouterSettings.h" +%include "DNP3/VtoConfig.h" +%template(VectorOfVtoRouterConfig) std::vector; +//%include "DNP3/VtoData.h" +//%include "DNP3/VtoDataInterface.h" + %include "DNP3/PointClass.h" %include "DNP3/LinkConfig.h" %include "DNP3/AppConfig.h" diff --git a/Makefile.am b/Makefile.am index a2682037..2a13b139 100644 --- a/Makefile.am +++ b/Makefile.am @@ -229,7 +229,6 @@ JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/PhysLayerSettings.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/PhysicalLayerState.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/PointClass.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/PointRecord.java -JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SWIGTYPE_p_VtoConfig.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SWIGTYPE_p_boost__int64_t.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SWIGTYPE_p_int.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SWIGTYPE_p_std__string.java @@ -250,7 +249,11 @@ JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VectorOfEventPointRecor JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VectorOfExceptionScan.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VectorOfPointRecord.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VectorOfString.java +JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VectorOfVtoRouterConfig.java +JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VtoConfig.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VtoQuality.java +JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VtoRouterConfig.java +JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VtoRouterSettings.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/javadnp3.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/javadnp3Constants.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/javadnp3JNI.java From fa4bac8964704bd906b1e824606c89bf8d48ca26 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Sat, 9 Jun 2012 00:27:42 -0700 Subject: [PATCH 05/51] Added DNP3/VtoData.h to the Swig list --- DNP3Java/JavaDNP3.i | 2 +- Makefile.am | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/DNP3Java/JavaDNP3.i b/DNP3Java/JavaDNP3.i index 2db10bfa..afdc803b 100755 --- a/DNP3Java/JavaDNP3.i +++ b/DNP3Java/JavaDNP3.i @@ -83,7 +83,7 @@ namespace apl{ %include "DNP3/VtoRouterSettings.h" %include "DNP3/VtoConfig.h" %template(VectorOfVtoRouterConfig) std::vector; -//%include "DNP3/VtoData.h" +%include "DNP3/VtoData.h" //%include "DNP3/VtoDataInterface.h" %include "DNP3/PointClass.h" diff --git a/Makefile.am b/Makefile.am index 2a13b139..489eef6c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -229,8 +229,12 @@ JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/PhysLayerSettings.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/PhysicalLayerState.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/PointClass.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/PointRecord.java +JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SWIGTYPE_p_IVtoCallbacks.java +JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SWIGTYPE_p_IVtoWriter.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SWIGTYPE_p_boost__int64_t.java +JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SWIGTYPE_p_boost__uint8_t.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SWIGTYPE_p_int.java +JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SWIGTYPE_p_std__ostream.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SWIGTYPE_p_std__string.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SerialSettings.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/Setpoint.java @@ -251,6 +255,8 @@ JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VectorOfPointRecord.jav JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VectorOfString.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VectorOfVtoRouterConfig.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VtoConfig.java +JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VtoData.java +JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VtoDataType.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VtoQuality.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VtoRouterConfig.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/VtoRouterSettings.java From fdc39459c6426733f758407baa00e10a6464cd07 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Sat, 9 Jun 2012 02:24:39 -0700 Subject: [PATCH 06/51] Refactored IVtoCallbacks for better Swig integration --- DNP3/VtoDataInterface.h | 84 +++++++++++------------------------------ DNP3/VtoReader.cpp | 4 +- DNP3/VtoReader.h | 6 +-- DNP3/VtoWriter.cpp | 4 +- DNP3/VtoWriter.h | 6 +-- DNP3Java/JavaDNP3.i | 2 +- Makefile.am | 2 - 7 files changed, 34 insertions(+), 74 deletions(-) diff --git a/DNP3/VtoDataInterface.h b/DNP3/VtoDataInterface.h index f2519b6a..7506e2a4 100644 --- a/DNP3/VtoDataInterface.h +++ b/DNP3/VtoDataInterface.h @@ -58,7 +58,6 @@ class IVtoChannel } private: - /** * A hidden default constructor. * @@ -72,17 +71,29 @@ class IVtoChannel boost::uint8_t mChannelId; }; -/** -* Callback that notifies when space is available to write vto objects. -*/ -class IVtoBufferHandler +class IVtoCallbacks : public IVtoChannel { public: + /** + * Creates a new IVtoCallbacks instance configured for Virtual + * Terminal channel id matching aChannelId. + * + * @param aChannelId the DNP3 Virtual Terminal port (channel + * id) + * + * @return the new IVtoCallbacks instance + */ + IVtoCallbacks(boost::uint8_t aChannelId) : IVtoChannel(aChannelId) {} /** - * Called when an IVtoWriter has space available for writing + * Called when an IVtoWriter has space available for writing. */ - virtual void OnBufferAvailable() = 0; + virtual void OnBufferAvailable() {} + + /** + * Called when an IVtoReader has received some data. + */ + virtual void OnVtoDataReceived(const VtoData& arData) {} }; /** @@ -133,47 +144,13 @@ class IVtoWriter * Registers an IVtoCallbacks to receive OnBufferAvailable() notifications * @param apHandler The interface to invoke when space is made available */ - virtual void AddVtoCallback(IVtoBufferHandler* apHandler) = 0; + virtual void AddVtoCallback(IVtoCallbacks* apHandler) = 0; /** * Stops an IVtoCallbacks from receiving OnBufferAvailable() notifications * @param apHandler The interface to stop calling when space is available */ - virtual void RemoveVtoCallback(IVtoBufferHandler* apHandler) = 0; -}; - -/** - * Receives data from the stack for a particular channel and is notified - * when buffer space becomes available. Applications that wish to use - * the AsyncStackManager::AddVtoChannel() hook must implement a concrete - * subclass of this class and register an instance of that subclass - * during the function call. - */ -class IVtoDataHandler : public IVtoChannel -{ -public: - - /** - * Creates a new IVtoCallbacks instance configured for Virtual - * Terminal channel id matching aChannelId. - * - * @param aChannelId the DNP3 Virtual Terminal port (channel - * id) - * - * @return the new IVtoCallbacks instance - */ - IVtoDataHandler(boost::uint8_t aChannelId) : IVtoChannel(aChannelId) {} - - /** - * Called when data arrives from stack and needs to be handled. - * - * @param arData The data received from the VTO stream, also includes - * a VtoDataType flag that the router should look at to - * decide if they should open/close the local half of the - * connection. - */ - virtual void OnVtoDataReceived(const VtoData& arData) = 0; - + virtual void RemoveVtoCallback(IVtoCallbacks* apHandler) = 0; }; class IVtoReader @@ -191,7 +168,7 @@ class IVtoReader *registered * with this reader */ - virtual void AddVtoChannel(IVtoDataHandler* apCallbacks) = 0; + virtual void AddVtoChannel(IVtoCallbacks* apCallbacks) = 0; /** * Unregister an IVtoCallbacks instance with the VtoReader @@ -202,27 +179,12 @@ class IVtoReader * @throw ArgumentException if the channel id is not registered * with this reader */ - virtual void RemoveVtoChannel(IVtoDataHandler* apCallbacks) = 0; -}; - -class IVtoCallbacks : public IVtoDataHandler, public IVtoBufferHandler -{ -public: - /** - * Creates a new IVtoCallbacks instance configured for Virtual - * Terminal channel id matching aChannelId. - * - * @param aChannelId the DNP3 Virtual Terminal port (channel - * id) - * - * @return the new IVtoCallbacks instance - */ - IVtoCallbacks(boost::uint8_t aChannelId) : IVtoDataHandler(aChannelId) {} + virtual void RemoveVtoChannel(IVtoCallbacks* apCallbacks) = 0; }; } } -/* vim: set ts=4 sw=4: */ +/* vim: set ts=4 sw=4 noexpandtab: */ #endif diff --git a/DNP3/VtoReader.cpp b/DNP3/VtoReader.cpp index 6d9bc85f..09b651e7 100644 --- a/DNP3/VtoReader.cpp +++ b/DNP3/VtoReader.cpp @@ -30,7 +30,7 @@ namespace apl namespace dnp { -void VtoReader::AddVtoChannel(IVtoDataHandler* apCallbacks) +void VtoReader::AddVtoChannel(IVtoCallbacks* apCallbacks) { /* * The whole function is thread-safe, from start to finish. @@ -54,7 +54,7 @@ void VtoReader::AddVtoChannel(IVtoDataHandler* apCallbacks) mChannelMap[id] = apCallbacks; } -void VtoReader::RemoveVtoChannel(IVtoDataHandler* apCallbacks) +void VtoReader::RemoveVtoChannel(IVtoCallbacks* apCallbacks) { /* * The whole function is thread-safe, from start to finish. diff --git a/DNP3/VtoReader.h b/DNP3/VtoReader.h index e258b700..072860b7 100644 --- a/DNP3/VtoReader.h +++ b/DNP3/VtoReader.h @@ -63,7 +63,7 @@ class VtoReader : private Loggable, public ITransactable, public IVtoReader *registered * with this reader */ - void AddVtoChannel(IVtoDataHandler* apCallbacks); + void AddVtoChannel(IVtoCallbacks* apCallbacks); /** * Unregister an IVtoCallbacks instance with the VtoReader @@ -74,7 +74,7 @@ class VtoReader : private Loggable, public ITransactable, public IVtoReader * @throw ArgumentException if the channel id is not registered * with this reader */ - void RemoveVtoChannel(IVtoDataHandler* apCallbacks); + void RemoveVtoChannel(IVtoCallbacks* apCallbacks); /** * Adds a VtoEvent object to be delivered back to user code. @@ -115,7 +115,7 @@ class VtoReader : private Loggable, public ITransactable, public IVtoReader */ void _End(); - typedef std::map ChannelMap; + typedef std::map ChannelMap; ChannelMap mChannelMap; }; diff --git a/DNP3/VtoWriter.cpp b/DNP3/VtoWriter.cpp index fb8049a7..8b423964 100644 --- a/DNP3/VtoWriter.cpp +++ b/DNP3/VtoWriter.cpp @@ -137,14 +137,14 @@ size_t VtoWriter::Flush(IVtoEventAcceptor* apAcceptor, size_t aMaxEvents) return numUpdates; } -void VtoWriter::AddVtoCallback(IVtoBufferHandler* apHandler) +void VtoWriter::AddVtoCallback(IVtoCallbacks* apHandler) { assert(apHandler != NULL); CriticalSection cs(&mLock); this->mCallbacks.insert(apHandler); } -void VtoWriter::RemoveVtoCallback(IVtoBufferHandler* apHandler) +void VtoWriter::RemoveVtoCallback(IVtoCallbacks* apHandler) { assert(apHandler != NULL); CriticalSection cs(&mLock); diff --git a/DNP3/VtoWriter.h b/DNP3/VtoWriter.h index b08a0e6e..e67f44b0 100644 --- a/DNP3/VtoWriter.h +++ b/DNP3/VtoWriter.h @@ -63,13 +63,13 @@ class VtoWriter : public IVtoWriter, public SubjectBase, private Logga * Registers an IVtoCallbacks to receive OnBufferAvailable() notifications * @param apHandler The interface to invoke when space is made available */ - void AddVtoCallback(IVtoBufferHandler* apHandler); + void AddVtoCallback(IVtoCallbacks* apHandler); /** * Stops an IVtoCallbacks from receiving OnBufferAvailable() notifications * @param apHandler The interface to stop calling when space is available */ - void RemoveVtoCallback(IVtoBufferHandler* apHandler); + void RemoveVtoCallback(IVtoCallbacks* apHandler); /** * Implements IVtoWriter::Write(). @@ -145,7 +145,7 @@ class VtoWriter : public IVtoWriter, public SubjectBase, private Logga const size_t mMaxVtoChunks; - typedef std::set CallbackSet; + typedef std::set CallbackSet; CallbackSet mCallbacks; }; } diff --git a/DNP3Java/JavaDNP3.i b/DNP3Java/JavaDNP3.i index afdc803b..2948b9c7 100755 --- a/DNP3Java/JavaDNP3.i +++ b/DNP3Java/JavaDNP3.i @@ -84,7 +84,7 @@ namespace apl{ %include "DNP3/VtoConfig.h" %template(VectorOfVtoRouterConfig) std::vector; %include "DNP3/VtoData.h" -//%include "DNP3/VtoDataInterface.h" +%include "DNP3/VtoDataInterface.h" %include "DNP3/PointClass.h" %include "DNP3/LinkConfig.h" diff --git a/Makefile.am b/Makefile.am index 489eef6c..9026518c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -229,8 +229,6 @@ JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/PhysLayerSettings.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/PhysicalLayerState.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/PointClass.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/PointRecord.java -JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SWIGTYPE_p_IVtoCallbacks.java -JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SWIGTYPE_p_IVtoWriter.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SWIGTYPE_p_boost__int64_t.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SWIGTYPE_p_boost__uint8_t.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/SWIGTYPE_p_int.java From 28567177bfbe4ea733638a354def9299de593f2e Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Sat, 9 Jun 2012 03:03:39 -0700 Subject: [PATCH 07/51] Fixed Swig Python support --- DNP3/VtoData.cpp | 2 +- DNP3/VtoData.h | 2 +- DNP3/VtoRouter.cpp | 2 +- DNP3Java/JavaDNP3.i | 30 +++++++++++++++--------------- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/DNP3/VtoData.cpp b/DNP3/VtoData.cpp index 46489c36..9348fd84 100644 --- a/DNP3/VtoData.cpp +++ b/DNP3/VtoData.cpp @@ -26,7 +26,7 @@ namespace apl namespace dnp { -std::string ToString(VtoDataType aType) +std::string VtoDataTypeToString(VtoDataType aType) { switch(aType) { case(VTODT_DATA): return "DATA"; diff --git a/DNP3/VtoData.h b/DNP3/VtoData.h index 3cca50e1..5da769dc 100644 --- a/DNP3/VtoData.h +++ b/DNP3/VtoData.h @@ -34,7 +34,7 @@ enum VtoDataType { VTODT_DATA }; -std::string ToString(VtoDataType aType); +std::string VtoDataTypeToString(VtoDataType aType); class VtoData { diff --git a/DNP3/VtoRouter.cpp b/DNP3/VtoRouter.cpp index 1063147d..2d653cd6 100644 --- a/DNP3/VtoRouter.cpp +++ b/DNP3/VtoRouter.cpp @@ -48,7 +48,7 @@ VtoRouter::VtoRouter(const VtoRouterSettings& arSettings, Logger* apLogger, IVto void VtoRouter::OnVtoDataReceived(const VtoData& arData) { - LOG_BLOCK(LEV_DEBUG, "GotRemoteData: " << arData.GetSize() << " Type: " << ToString(arData.GetType())); + LOG_BLOCK(LEV_DEBUG, "GotRemoteData: " << arData.GetSize() << " Type: " << VtoDataTypeToString(arData.GetType())); if(this->CheckIncomingVtoData(arData)) { /* diff --git a/DNP3Java/JavaDNP3.i b/DNP3Java/JavaDNP3.i index 2948b9c7..8620cb17 100755 --- a/DNP3Java/JavaDNP3.i +++ b/DNP3Java/JavaDNP3.i @@ -33,28 +33,28 @@ using namespace apl::dnp; %template(VectorOfString) std::vector; namespace apl{ -%rename(equal) BinaryOutput::operator==(const BinaryOutput& arRHS) const; -%rename(equal) Setpoint::operator==(const Setpoint& arRHS) const; +%rename(boEqual) BinaryOutput::operator==(const BinaryOutput& arRHS) const; +%rename(stEqual) Setpoint::operator==(const Setpoint& arRHS) const; -%rename(equal) BoolDataPoint::operator==(const BoolDataPoint& rhs); -%rename(equal) TypedDataPoint::operator==(const TypedDataPoint& rhs); +%rename(bdpEqual) BoolDataPoint::operator==(const BoolDataPoint& rhs); +%rename(tdpEqual) TypedDataPoint::operator==(const TypedDataPoint& rhs); -%rename(get) Binary::operator ValueType() const; -%rename(set) Binary::operator=(ValueType aValue); +%rename(get_binary) Binary::operator ValueType() const; +%rename(set_binary) Binary::operator=(ValueType aValue); -%rename(get) ControlStatus::operator ValueType() const; -%rename(set) ControlStatus::operator=(ValueType aValue); +%rename(get_controlstatus) ControlStatus::operator ValueType() const; +%rename(set_controlstatus) ControlStatus::operator=(ValueType aValue); -%rename(get) Analog::operator ValueType() const; -%rename(set) Analog::operator=(ValueType aValue); +%rename(get_analog) Analog::operator ValueType() const; +%rename(set_analog) Analog::operator=(ValueType aValue); -%rename(get) Counter::operator ValueType() const; -%rename(set) Counter::operator=(ValueType aValue); +%rename(get_counter) Counter::operator ValueType() const; +%rename(set_counter) Counter::operator=(ValueType aValue); -%rename(get) SetpointStatus::operator ValueType() const; -%rename(set) SetpointStatus::operator=(ValueType aValue); +%rename(get_setpointstatus) SetpointStatus::operator ValueType() const; +%rename(set_setpointstatus) SetpointStatus::operator=(ValueType aValue); -%rename(ToString) operator<<(std::ostream& output, PhysicalLayerState aState); +%rename(PhysLayerStateToString) operator<<(std::ostream& output, PhysicalLayerState aState); %ignore Transaction::Transaction(ITransactable* apTransactable); } From 318ec1cd63b60eb0c986541f47a6571c7987bcc2 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Fri, 15 Jun 2012 22:21:27 -0700 Subject: [PATCH 08/51] Added rules to properly ignore dnp3test and testset Linux and Windows handle case sensitivity differently. Namely, the former thinks that "dnp3test" and "DNP3Test" are different, while the latter believes that they are (mistakenly) the same. Since we generate binaries that match directories in a case insensitive manner (dnp3test->DNP3Test and testset->TestSet), simply adding 'dnp3test' and 'testset' to the .gitignore causes the source code directories with the "same" name to also be ignored. This isn't what we want, so the trick is to tell git to ignore the binaries but include the directories. We do this using the "negate" operator and the "directory-slash" suffix. These rules are at the top of the .gitignore so that all the other rules (like ignoring object files, swap files, etc.) behave like one would expect. --- .gitignore | 94 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 49 insertions(+), 45 deletions(-) diff --git a/.gitignore b/.gitignore index 03536777..ebfd9325 100644 --- a/.gitignore +++ b/.gitignore @@ -1,51 +1,58 @@ +dnp3test +!DNP3Test/ + +testset +!TestSet/ + +*.gcda +*.gcno *.iml -opendnp3.jar -JavaDNP3.h -JavaDNP3.cpp -.idea -/DNP3Java/target -/DNP3Java/src -/DNP.ncb -/DNP.suo -Debug -Release -ipch +*.la +*.lo +*.log +*.map +*.o +*.opensdf +*.sdf +*.so *.user -pc_cygwin +*~ +.*.swp +.deps +.dirstamp +.idea +.libs + /*/pc_linux_arm -/tools/install_scripts/boost/*/temp -/tools/boostlib /CSToCppXMLBinder/bin /CSToCppXMLBinder/obj /ConfigurationBuilder/*.cs /ConfigurationBuilder/*.xsx -/TestSet/*.xml -/DNP3Java/jar +/DNP.ncb +/DNP.suo /DNP3Java/JavaDNP3_wrap.* +/DNP3Java/jar +/DNP3Java/src +/DNP3Java/target +/TestSet/*.xml +/coverage-* +/doc /java +/lcov +/org /src -*.log +/tools/boostlib +/tools/install_scripts/boost/*/temp +Debug +JavaDNP3.cpp +JavaDNP3.h Linux_i686 +Release TestAPL/TestSingle.tiny.xml TestSingle.tiny.xml -/doc -/coverage-* -/lcov -/org -*~ -*.o -*.lo -.deps -.dirstamp -.libs -*.la -*.so -*.gcno -*.gcda -.*.swp -*.map -*.sdf -*.opensdf +ipch +opendnp3.jar +pc_cygwin demo-master-cpp demo-slave-cpp @@ -55,27 +62,24 @@ __init__.pyc pyopendnp3.py pyopendnp3.pyc +/autom4te.cache +/build-aux /config/autotools/m4/libtool.m4 /config/autotools/m4/ltoptions.m4 /config/autotools/m4/ltsugar.m4 /config/autotools/m4/ltversion.m4 /config/autotools/m4/lt~obsolete.m4 - -/build-aux - /configure -configure.in -configure -Makefile.in Makefile -config.h -stamp-h1 +Makefile.in aclocal.m4 -/autom4te.cache +config.h config.h.in config.status +configure +configure.in libtool +stamp-h1 *target* - From 7a73a3362d46e1afa7eadac6f5d834dd2c32e508 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Thu, 21 Jun 2012 12:16:33 -0700 Subject: [PATCH 09/51] Added -threads to Python swig generation Thanks to William Sember for catching the non-thread-safe code generated by Swig. http://matt.eifelle.com/2007/11/23/enabling-thread-support-in-swig-and-python/ --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 9026518c..0b17444f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -286,7 +286,7 @@ __init__.py: echo "from pyopendnp3 import *" > $@ DNP3Java/PythonDNP3.cpp: DNP3Java/JavaDNP3.i - swig -c++ -python \ + swig -c++ -python -threads \ -module pyopendnp3 \ -I$(top_srcdir) -I$(top_srcdir)/APL -I$(top_srcdir)/DNP3 \ -outdir $(top_srcdir) \ From 32ba554f01e43ce058ac801d7d65af7a4914301a Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Mon, 25 Jun 2012 23:36:13 -0700 Subject: [PATCH 10/51] Added Python Master demo from William Sember --- demos/master-python/master_demo.py | 122 +++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 demos/master-python/master_demo.py diff --git a/demos/master-python/master_demo.py b/demos/master-python/master_demo.py new file mode 100644 index 00000000..9260fc7a --- /dev/null +++ b/demos/master-python/master_demo.py @@ -0,0 +1,122 @@ +import time + +# import opendnp3 instead of from opendnp3 import * +# In DataObserver._Update, there is a serious of ifs +# which check the type of a point (if (t == opendnp3.Binary)). +# It was causing a SWIG director method exception to be thrown +# when the ifs were written if (t == Binary). +import opendnp3 + +binary_list = [] +analog_list = [] +counter_list = [] +controlstatus_list = [] +setpointstatus_list =[] + +class StackObserver(opendnp3.IStackObserver): + def __init__(self): + super(StackObserver, self).__init__() + + def OnStateChange(self, change): + print('The stack state has changed: %s' % opendnp3.ConvertStackStateToString(change)) + +class DataObserver(opendnp3.IDataObserver): + def __init__(self): + # call the IDataObserver class's init function + super(DataObserver, self).__init__() + self.newData = False + + def Load(self, point, point_map, index): + if (len(point_map) <= index): + point_map.append([]) + + point_map[index] = point + + # this implements the following virtual functions in the IDataObserver class + # virtual void _Update(const Binary& arPoint, size_t) = 0; + # virtual void _Update(const Analog& arPoint, size_t) = 0; + # virtual void _Update(const Counter& arPoint, size_t) = 0; + # virtual void _Update(const ControlStatus& arPoint, size_t) = 0; + # virtual void _Update(const SetpointStatus& arPoint, size_t) = 0; + def _Update(self, point, index): + self.newData = True + t = type(point) + + if (t == opendnp3.Binary): + print("Update Binary %d: %d" % (index, point.GetValue())) + self.Load(point, binary_list, index) + elif (t == opendnp3.Analog): + print("Update Analog %d: %d" % (index, point.GetValue())) + self.Load(point, analog_list, index) + elif (t == opendnp3.Counter): + print("Update Counter %d: %d" % (index, point.GetValue())) + self.Load(point, counter_list, index) + elif (t == opendnp3.ControlStatus): + print("Update ControlStatus %d: %d" % (index, point.GetValue())) + self.Load(point, controlstatus_list, index) + elif (t == opendnp3.SetpointStatus): + print("Update SetpointStatus %d: %d" % (index, point.GetValue())) + self.Load(point, setpointstatus_list, index) + + # this implements a virtual function in the ITransactable class + # virtual void _Start() = 0; + def _Start(self): + # nothing to do + print('Start') + + # this implements a virtual function in the ITransactable class + # virtual void _End() = 0; + def _End(self): + print('End') + self.newData = False + +def main(): + # 1. Extend IDataObserver and IStackObserver + # 2. Add a Physical Layer (TCP Client) to the StackManager + # 3. Create a MasterConfig. + # 4. Add a Master Stack to the StackManager + # 5. Let the process run + + stack_observer = StackObserver() + observer = DataObserver() + + phys_layer_settings = opendnp3.PhysLayerSettings() + + stack_manager = opendnp3.StackManager() + stack_manager.AddTCPClient('tcpclient', phys_layer_settings, '127.0.0.1', 4999) + + master_stack_config = opendnp3.MasterStackConfig() +# master_stack_config.master.DoUnsolOnStartup = True + + master_stack_config.link.LocalAddr = 100 + master_stack_config.link.RemoteAddr = 1 +# master_stack_config.link.useConfirms = True + + # set the stack observer callback to our Python-extended class + master_stack_config.master.mpObserver = stack_observer + + # the integrity rate is the # of milliseconds between integrity scans + #master_stack_config.master.IntegrityRate = 1000 + + # The third argument needs to be a log FilterLevel. The Python + # API does not have access to this enum, but it can be "fed" to + # the AddMaster method because the PhysLayerSettings LogLevel + # member is a FilterLevel enum. + command_acceptor = stack_manager.AddMaster('tcpclient', 'master', phys_layer_settings.LogLevel, observer, master_stack_config) + + # Need to wait because the polling is now occurring on its own + # thread. If we exited immediately, the callbacks would never + # be called. + time.sleep(2) + + print('Binaries: %d' % (len(binary_list))) + print('Analogs: %d' % (len(analog_list))) + print('Counters: %d' % (len(counter_list))) + print('ControlStatus: %d' % (len(controlstatus_list))) + print('Setpointstatus: %d' % (len(setpointstatus_list))) + + while (True): + time.sleep(60) + +if __name__ == '__main__': + main() From 982c700a867d644f28dd141d08a4c2f65e805369 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Mon, 25 Jun 2012 23:36:56 -0700 Subject: [PATCH 11/51] Added .DS_Store to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 03536777..9ceca3a7 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ JavaDNP3.cpp /DNP3Java/src /DNP.ncb /DNP.suo +.DS_Store Debug Release ipch From 8bbac2eaf2e505b8dfbee0c9dbc5e59069ff0468 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Wed, 4 Jul 2012 13:31:28 -0700 Subject: [PATCH 12/51] Added __init__.py to the clean list --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 0b17444f..69a90dd6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -645,7 +645,7 @@ include config/autotools/mk/lcov.mak clean-swig: -rm -rf DNP3Java/JavaDNP3.cpp DNP3Java/JavaDNP3.h -rm -rf DNP3Java/PythonDNP3.cpp DNP3Java/PythonDNP3.h - -rm -rf pyopendnp3.py pyopendnp3.pyc + -rm -rf pyopendnp3.py pyopendnp3.pyc __init__.py -rm -rf $(top_srcdir)/java -rm -rf opendnp3.jar From c6dbfe1389576ad92dcd2187e2938fcf4d59200a Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Wed, 4 Jul 2012 14:08:10 -0700 Subject: [PATCH 13/51] Enhanced support for parallel 'make' builds Support for 'make -j X' (where X is the number of parallel build threads to execute) now works properly for the Java Swig bindings. --- .gitignore | 36 ++++++++++++++++-------------------- INSTALL | 9 +++++++-- Makefile.am | 33 +++++++++++++++++++-------------- configure.ac | 2 ++ 4 files changed, 44 insertions(+), 36 deletions(-) diff --git a/.gitignore b/.gitignore index c139de2f..a938b4a0 100644 --- a/.gitignore +++ b/.gitignore @@ -7,28 +7,27 @@ testset *.gcda *.gcno *.iml -opendnp3.jar -JavaDNP3.h -JavaDNP3.cpp -.idea -/DNP3Java/target -/DNP3Java/src -/DNP.ncb -/DNP.suo -.DS_Store -Debug -Release -ipch +*.la +*.lo +*.o *.user *~ .*.swp +.DS_Store .deps .dirstamp .idea .libs -*.o -*.lo -*.la +Debug +Release +ipch + +/DNP3Java/.java-built +/DNP3Java/JavaDNP3.cpp +/DNP3Java/JavaDNP3.h +/DNP3Java/src +/DNP3Java/target +opendnp3.jar /*/pc_linux_arm /CSToCppXMLBinder/bin @@ -51,14 +50,11 @@ ipch /tools/boostlib /tools/install_scripts/boost/*/temp Debug -JavaDNP3.cpp -JavaDNP3.h Linux_i686 Release TestAPL/TestSingle.tiny.xml TestSingle.tiny.xml ipch -opendnp3.jar pc_cygwin demo-master-cpp @@ -80,15 +76,15 @@ pyopendnp3.pyc Makefile Makefile.in aclocal.m4 +compile.log config.h config.h.in +config.log config.status configure configure.in libtool stamp-h1 -config.log -compile.log *target* diff --git a/INSTALL b/INSTALL index 7d1c323b..a1e89e18 100644 --- a/INSTALL +++ b/INSTALL @@ -1,8 +1,8 @@ Installation Instructions ************************* -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, -2006, 2007, 2008, 2009 Free Software Foundation, Inc. +Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation, +Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -226,6 +226,11 @@ order to use an ANSI C compiler: and if that doesn't work, install pre-built binaries of GCC for HP-UX. + HP-UX `make' updates targets which have the same time stamps as +their prerequisites, which makes it generally unusable when shipped +generated files such as `configure' are involved. Use GNU `make' +instead. + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended diff --git a/Makefile.am b/Makefile.am index 69a90dd6..8f5e7335 100644 --- a/Makefile.am +++ b/Makefile.am @@ -18,6 +18,7 @@ lib_LTLIBRARIES = libopendnp3.la libopendnp3_la_LDFLAGS = -version-info 0:0:0 libopendnp3_la_LIBADD = $(BOOST_LDFLAGS) $(CORE_BOOST_LIBS) +libopendnp3_la_DEPENDENCIES = libopendnp3_la_SOURCES = \ APL/ASIOSerialHelpers.cpp \ APL/AsyncLayerInterfaces.cpp \ @@ -161,21 +162,11 @@ libopendnp3_la_SOURCES = \ DNP3/VtoWriter.cpp if WANT_JAVA -libopendnp3_la_SOURCES += DNP3Java/JavaDNP3.cpp - JAVA_DIR=$(top_srcdir)/java JAVA_PACKAGE_DIR=org/totalgrid/reef/protocol/dnp3 JAVA_SOURCE_DIR=$(JAVA_DIR)/src JAVA_CLASS_DIR=$(JAVA_DIR)/bin -DNP3Java/JavaDNP3.cpp: DNP3Java/JavaDNP3.i - -@mkdir -p $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR) - swig -c++ -java \ - -package org.totalgrid.reef.protocol.dnp3 \ - -I$(top_srcdir) -I$(top_srcdir)/APL -I$(top_srcdir)/DNP3 \ - -outdir $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR) \ - -o DNP3Java/JavaDNP3.cpp $^ - JAVA_SRC_FILES = JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/Analog.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/AnalogQuality.java @@ -262,16 +253,30 @@ JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/javadnp3.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/javadnp3Constants.java JAVA_SRC_FILES += $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR)/javadnp3JNI.java -opendnp3.jar: DNP3Java/JavaDNP3.cpp $(JAVA_SRC_FILES) +DNP3Java/.java-built: DNP3Java/JavaDNP3.i + -@mkdir -p $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR) + swig -c++ -java \ + -package org.totalgrid.reef.protocol.dnp3 \ + -I$(top_srcdir) -I$(top_srcdir)/APL -I$(top_srcdir)/DNP3 \ + -outdir $(JAVA_SOURCE_DIR)/$(JAVA_PACKAGE_DIR) \ + -o DNP3Java/JavaDNP3.cpp $^ + touch $@ + +DNP3Java/JavaDNP3.cpp: DNP3Java/.java-built +$(JAVA_SRC_FILES): DNP3Java/.java-built + +opendnp3.jar: DNP3Java/.java-built -@mkdir -p $(JAVA_CLASS_DIR)/$(JAVA_PACKAGE_DIR) cd $(JAVA_SOURCE_DIR) && javac -d $(JAVA_CLASS_DIR) -cp . $(JAVA_SRC_FILES) cd $(JAVA_CLASS_DIR) && jar cvf $@ org mv $(JAVA_CLASS_DIR)/$@ $@ -BUILT_SOURCES += DNP3Java/JavaDNP3.cpp opendnp3.jar $(JAVA_SRC_FILES) - opendnp3_jardir = $(datadir)/java opendnp3_jar_DATA = opendnp3.jar + +BUILT_SOURCES += DNP3Java/.java-built DNP3Java/JavaDNP3.cpp opendnp3.jar $(JAVA_SRC_FILES) +libopendnp3_la_DEPENDENCIES += DNP3Java/JavaDNP3.cpp +libopendnp3_la_SOURCES += DNP3Java/JavaDNP3.cpp endif if WANT_PYTHON @@ -643,7 +648,7 @@ include config/autotools/mk/doxygen.mak include config/autotools/mk/lcov.mak clean-swig: - -rm -rf DNP3Java/JavaDNP3.cpp DNP3Java/JavaDNP3.h + -rm -rf DNP3Java/JavaDNP3.cpp DNP3Java/JavaDNP3.h DNP3Java/.java-built -rm -rf DNP3Java/PythonDNP3.cpp DNP3Java/PythonDNP3.h -rm -rf pyopendnp3.py pyopendnp3.pyc __init__.py -rm -rf $(top_srcdir)/java diff --git a/configure.ac b/configure.ac index efd317ad..1caf6108 100644 --- a/configure.ac +++ b/configure.ac @@ -103,6 +103,8 @@ if test "$want_java" = yes; then want_swig="yes" if test "x$ac_java_path" != "x"; then CPPFLAGS="$CPPFLAGS -I$ac_java_path" + else + CPPFLAGS="$CPPFLAGS -I/usr/lib/jvm/default-java/include" fi AC_CHECK_HEADERS([jni.h] ,,AC_MSG_ERROR(missing header)) AM_PROG_GCJ From 342c39f363311ca35d322374ad58d5a9d3cd1a47 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Fri, 13 Jul 2012 22:03:09 -0700 Subject: [PATCH 14/51] Added support for IPv6 client/server sockets Link local connections do not work. You need to bind to a global or loopback address. --- APL/PhysicalLayerAsyncBaseTCP.cpp | 19 +++- APL/PhysicalLayerAsyncTCPClient.cpp | 34 ++++--- APL/PhysicalLayerAsyncTCPClient.h | 7 +- APL/PhysicalLayerAsyncTCPServer.cpp | 40 ++++----- APL/PhysicalLayerAsyncTCPServer.h | 32 +++---- APL/PhysicalLayerAsyncTCPv4Client.h | 47 ++++++++++ APL/PhysicalLayerAsyncTCPv4Server.h | 47 ++++++++++ APL/PhysicalLayerAsyncTCPv6Client.h | 47 ++++++++++ APL/PhysicalLayerAsyncTCPv6Server.h | 47 ++++++++++ APL/PhysicalLayerFactory.cpp | 42 ++++++--- APL/PhysicalLayerFactory.h | 13 ++- APL/PhysicalLayerManager.cpp | 26 ++++-- APL/PhysicalLayerManager.h | 6 +- APLTestTools/AsyncPhysTestObject.h | 8 +- APLTestTools/PhysicalLayerWrapperFactory.h | 14 +-- APLTestTools/WrappedTcpPipe.h | 20 ++--- APLXML/PhysicalLayerManagerXML.cpp | 6 +- APLXML/PhysicalLayerXMLFactory.cpp | 34 +++++-- APLXML/PhysicalLayerXMLFactory.h | 6 +- APLXML/XML_APL.cpp | 34 +++++-- APLXML/XML_APL.h | 6 +- ConfigurationBuilder/APL.xsd | 32 ++++++- DNP3/AsyncStackManager.cpp | 24 +++-- DNP3/AsyncStackManager.h | 17 ++-- DNP3/StackManager.cpp | 18 +++- DNP3/StackManager.h | 28 ++++-- DNP3Java/src/test/scala/DNP3BindingTest.scala | 6 +- DNP3Test/IntegrationTest.cpp | 4 +- DNP3Test/StartupTeardownTest.cpp | 4 +- DNP3Test/TestStackManager.cpp | 6 +- DNP3Test/TransportStackPair.h | 8 +- DNP3Test/VtoIntegrationTestBase.cpp | 4 +- DNP3Test/VtoIntegrationTestBase.h | 12 +-- DNP3XML/XML_TestSet.cpp | 24 ++--- DNP3XML/XmlToConfig.cpp | 23 +++-- DotNet/DotNetAdapter/StackManager.cpp | 44 +++++----- DotNet/DotNetAdapter/StackManager.h | 14 +-- DotNet/DotNetMasterDemo/Program.cs | 2 +- DotNet/DotNetTestSet/TestSetForm.cs | 6 +- TestSet/StackHelpers.cpp | 2 +- XMLBindings/APLXML_Base.cpp | 88 +++++++++++++++---- XMLBindings/APLXML_Base.h | 59 ++++++++++--- demos/master-cpp/DemoMain.cpp | 4 +- demos/master-python/master_demo.py | 2 +- demos/slave-cpp/DemoMain.cpp | 4 +- 45 files changed, 713 insertions(+), 257 deletions(-) create mode 100644 APL/PhysicalLayerAsyncTCPv4Client.h create mode 100644 APL/PhysicalLayerAsyncTCPv4Server.h create mode 100644 APL/PhysicalLayerAsyncTCPv6Client.h create mode 100644 APL/PhysicalLayerAsyncTCPv6Server.h diff --git a/APL/PhysicalLayerAsyncBaseTCP.cpp b/APL/PhysicalLayerAsyncBaseTCP.cpp index c3727c17..d62d85ae 100644 --- a/APL/PhysicalLayerAsyncBaseTCP.cpp +++ b/APL/PhysicalLayerAsyncBaseTCP.cpp @@ -94,13 +94,23 @@ void PhysicalLayerAsyncBaseTCP::ShutdownSocket() boost::asio::ip::address PhysicalLayerAsyncBaseTCP::ResolveAddress(const std::string& arEndpoint) { + LOG_BLOCK(LEV_DEBUG, "converting address '" << arEndpoint << "' to an IP address object"); try { boost::system::error_code ec; boost::asio::ip::address addr = boost::asio::ip::address::from_string(arEndpoint, ec); - if (ec) + if (ec) { + LOG_BLOCK(LEV_DEBUG, "unable to convert address to object"); throw ArgumentException(LOCATION, "endpoint: " + arEndpoint + " is invalid"); + } + LOG_BLOCK(LEV_DEBUG, "address converted to object: " << addr.to_string()); + if (addr.is_v6()) { + boost::asio::ip::address_v6 addrv6(addr.to_v6()); + if (addrv6.is_link_local()) + LOG_BLOCK(LEV_DEBUG, "IPv6 link local address found"); + } return addr; } catch (...) { + LOG_BLOCK(LEV_DEBUG, "attempting to resolve address '" << arEndpoint << "'"); boost::asio::io_service io_service; boost::asio::ip::tcp::resolver resolver(io_service); boost::asio::ip::tcp::resolver::query query(arEndpoint, ""); @@ -109,8 +119,15 @@ boost::asio::ip::address PhysicalLayerAsyncBaseTCP::ResolveAddress(const std::st while (iter != end) { boost::asio::ip::tcp::endpoint ep = *iter++; + LOG_BLOCK(LEV_DEBUG, "address '" << arEndpoint << "' resolved to " << ep.address().to_string()); + if (ep.address().is_v6()) { + boost::asio::ip::address_v6 addrv6(ep.address().to_v6()); + if (addrv6.is_link_local()) + LOG_BLOCK(LEV_DEBUG, "IPv6 link local address found"); + } return ep.address(); } + LOG_BLOCK(LEV_DEBUG, "unable to resolve address '" << arEndpoint << "'") throw ArgumentException(LOCATION, "endpoint: " + arEndpoint + " is invalid"); } } diff --git a/APL/PhysicalLayerAsyncTCPClient.cpp b/APL/PhysicalLayerAsyncTCPClient.cpp index 1e4707d8..253d571e 100644 --- a/APL/PhysicalLayerAsyncTCPClient.cpp +++ b/APL/PhysicalLayerAsyncTCPClient.cpp @@ -1,24 +1,21 @@ // -// Licensed to Green Energy Corp (www.greenenergycorp.com) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. Green Enery Corp licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at +// Licensed to Green Energy Corp (www.greenenergycorp.com) under one or +// more contributor license agreements. See the NOTICE file distributed +// with this work for additional information regarding copyright +// ownership. Green Enery Corp licenses this file to you under the +// Apache License, Version 2.0 (the "License"); you may not use this +// file except in compliance with the License. You may obtain a copy of +// the License at // // http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +// implied. See the License for the specific language governing +// permissions and limitations under the License. // -#include "PhysicalLayerAsyncTCPClient.h" - #include #include #include @@ -26,6 +23,7 @@ #include "Exception.h" #include "IHandlerAsync.h" #include "Logger.h" +#include "PhysicalLayerAsyncTCPClient.h" using namespace boost; using namespace boost::asio; @@ -34,9 +32,9 @@ using namespace std; namespace apl { -PhysicalLayerAsyncTCPClient::PhysicalLayerAsyncTCPClient(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort) : - PhysicalLayerAsyncBaseTCP(apLogger, apIOService), - mRemoteEndpoint(ip::tcp::v4(), aPort) +PhysicalLayerAsyncTCPClient::PhysicalLayerAsyncTCPClient(Logger* apLogger, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const std::string& arAddress) + : PhysicalLayerAsyncBaseTCP(apLogger, apIOService) + , mRemoteEndpoint(arEndpoint) { mRemoteEndpoint.address( ResolveAddress(arAddress) ); } diff --git a/APL/PhysicalLayerAsyncTCPClient.h b/APL/PhysicalLayerAsyncTCPClient.h index 7c5c589e..eb438f4d 100644 --- a/APL/PhysicalLayerAsyncTCPClient.h +++ b/APL/PhysicalLayerAsyncTCPClient.h @@ -19,17 +19,17 @@ #ifndef __PHYSICAL_LAYER_ASYNC_TCP_CLIENT_H_ #define __PHYSICAL_LAYER_ASYNC_TCP_CLIENT_H_ -#include "PhysicalLayerAsyncBaseTCP.h" - #include +#include "PhysicalLayerAsyncBaseTCP.h" + namespace apl { class PhysicalLayerAsyncTCPClient : public PhysicalLayerAsyncBaseTCP { public: - PhysicalLayerAsyncTCPClient(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort); + PhysicalLayerAsyncTCPClient(Logger* apLogger, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const std::string& arAddress); /* Implement the remaining actions */ void DoOpen(); @@ -38,7 +38,6 @@ class PhysicalLayerAsyncTCPClient : public PhysicalLayerAsyncBaseTCP private: boost::asio::ip::tcp::endpoint mRemoteEndpoint; - }; } diff --git a/APL/PhysicalLayerAsyncTCPServer.cpp b/APL/PhysicalLayerAsyncTCPServer.cpp index 9512429b..e6c8db44 100644 --- a/APL/PhysicalLayerAsyncTCPServer.cpp +++ b/APL/PhysicalLayerAsyncTCPServer.cpp @@ -1,24 +1,21 @@ // -// Licensed to Green Energy Corp (www.greenenergycorp.com) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. Green Enery Corp licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at +// Licensed to Green Energy Corp (www.greenenergycorp.com) under one or +// more contributor license agreements. See the NOTICE file distributed +// with this work for additional information regarding copyright +// ownership. Green Enery Corp licenses this file to you under the +// Apache License, Version 2.0 (the "License"); you may not use this +// file except in compliance with the License. You may obtain a copy of +// the License at // // http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +// implied. See the License for the specific language governing +// permissions and limitations under the License. // -#include "PhysicalLayerAsyncTCPServer.h" - #include #include #include @@ -26,21 +23,22 @@ #include "Exception.h" #include "IHandlerAsync.h" #include "Logger.h" +#include "PhysicalLayerAsyncTCPServer.h" using namespace boost; -using namespace boost::system; using namespace boost::asio; +using namespace boost::system; using namespace std; namespace apl { -PhysicalLayerAsyncTCPServer::PhysicalLayerAsyncTCPServer(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arEndpoint, boost::uint16_t aPort) : - PhysicalLayerAsyncBaseTCP(apLogger, apIOService), - mLocalEndpoint(ip::tcp::v4(), aPort), - mAcceptor(*apIOService) +PhysicalLayerAsyncTCPServer::PhysicalLayerAsyncTCPServer(Logger* apLogger, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const std::string& arAddress) + : PhysicalLayerAsyncBaseTCP(apLogger, apIOService) + , mLocalEndpoint(arEndpoint) + , mAcceptor(*apIOService) { - mLocalEndpoint.address( ResolveAddress(arEndpoint) ); + mLocalEndpoint.address( ResolveAddress(arAddress) ); } /* Implement the actions */ diff --git a/APL/PhysicalLayerAsyncTCPServer.h b/APL/PhysicalLayerAsyncTCPServer.h index 6f08f088..d341cf81 100644 --- a/APL/PhysicalLayerAsyncTCPServer.h +++ b/APL/PhysicalLayerAsyncTCPServer.h @@ -1,34 +1,34 @@ // -// Licensed to Green Energy Corp (www.greenenergycorp.com) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. Green Enery Corp licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at +// Licensed to Green Energy Corp (www.greenenergycorp.com) under one or +// more contributor license agreements. See the NOTICE file distributed +// with this work for additional information regarding copyright +// ownership. Green Enery Corp licenses this file to you under the +// Apache License, Version 2.0 (the "License"); you may not use this +// file except in compliance with the License. You may obtain a copy of +// the License at // // http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +// implied. See the License for the specific language governing +// permissions and limitations under the License. // #ifndef __PHYSICAL_LAYER_ASYNC_TCP_SERVER_H_ #define __PHYSICAL_LAYER_ASYNC_TCP_SERVER_H_ -#include "PhysicalLayerAsyncBaseTCP.h" #include +#include "PhysicalLayerAsyncBaseTCP.h" + namespace apl { class PhysicalLayerAsyncTCPServer : public PhysicalLayerAsyncBaseTCP { public: - PhysicalLayerAsyncTCPServer(Logger*, boost::asio::io_service* apIOService, const std::string& arEndpoint, boost::uint16_t aPort); + PhysicalLayerAsyncTCPServer(Logger*, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const std::string& arAddress); /* Implement the remainging actions */ void DoOpen(); @@ -37,7 +37,6 @@ class PhysicalLayerAsyncTCPServer : public PhysicalLayerAsyncBaseTCP void DoOpenCallback(); private: - void CloseAcceptor(); boost::asio::ip::tcp::endpoint mLocalEndpoint; @@ -45,6 +44,7 @@ class PhysicalLayerAsyncTCPServer : public PhysicalLayerAsyncBaseTCP boost::asio::ip::tcp::acceptor mAcceptor; }; + } #endif diff --git a/APL/PhysicalLayerAsyncTCPv4Client.h b/APL/PhysicalLayerAsyncTCPv4Client.h new file mode 100644 index 00000000..db5d471d --- /dev/null +++ b/APL/PhysicalLayerAsyncTCPv4Client.h @@ -0,0 +1,47 @@ +// +// Licensed to Green Energy Corp (www.greenenergycorp.com) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. Green Enery Corp licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// +#ifndef __PHYSICAL_LAYER_ASYNC_TCP_V4_CLIENT_H_ +#define __PHYSICAL_LAYER_ASYNC_TCP_V4_CLIENT_H_ + +#include + +#include "PhysicalLayerAsyncTCPClient.h" + +namespace apl +{ + +class PhysicalLayerAsyncTCPv4Client : public PhysicalLayerAsyncTCPClient +{ +public: + PhysicalLayerAsyncTCPv4Client(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort) + : PhysicalLayerAsyncTCPClient( + apLogger, + apIOService, + boost::asio::ip::tcp::endpoint( + boost::asio::ip::tcp::v4(), + aPort + ), + arAddress + ) + {} +}; + +} + +#endif diff --git a/APL/PhysicalLayerAsyncTCPv4Server.h b/APL/PhysicalLayerAsyncTCPv4Server.h new file mode 100644 index 00000000..b7449581 --- /dev/null +++ b/APL/PhysicalLayerAsyncTCPv4Server.h @@ -0,0 +1,47 @@ +// +// Licensed to Green Energy Corp (www.greenenergycorp.com) under one or +// more contributor license agreements. See the NOTICE file distributed +// with this work for additional information regarding copyright +// ownership. Green Enery Corp licenses this file to you under the +// Apache License, Version 2.0 (the "License"); you may not use this +// file except in compliance with the License. You may obtain a copy of +// the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +// implied. See the License for the specific language governing +// permissions and limitations under the License. +// +#ifndef __PHYSICAL_LAYER_ASYNC_TCP_V4_SERVER_H_ +#define __PHYSICAL_LAYER_ASYNC_TCP_V4_SERVER_H_ + +#include + +#include "PhysicalLayerAsyncTCPServer.h" + +namespace apl +{ + +class PhysicalLayerAsyncTCPv4Server : public PhysicalLayerAsyncTCPServer +{ +public: + PhysicalLayerAsyncTCPv4Server(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort) + : PhysicalLayerAsyncTCPServer( + apLogger, + apIOService, + boost::asio::ip::tcp::endpoint( + boost::asio::ip::tcp::v4(), + aPort + ), + arAddress + ) + {} +}; + +} + +#endif + diff --git a/APL/PhysicalLayerAsyncTCPv6Client.h b/APL/PhysicalLayerAsyncTCPv6Client.h new file mode 100644 index 00000000..093e14c1 --- /dev/null +++ b/APL/PhysicalLayerAsyncTCPv6Client.h @@ -0,0 +1,47 @@ +// +// Licensed to Green Energy Corp (www.greenenergycorp.com) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. Green Enery Corp licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// +#ifndef __PHYSICAL_LAYER_ASYNC_TCP_V6_CLIENT_H_ +#define __PHYSICAL_LAYER_ASYNC_TCP_V6_CLIENT_H_ + +#include + +#include "PhysicalLayerAsyncTCPClient.h" + +namespace apl +{ + +class PhysicalLayerAsyncTCPv6Client : public PhysicalLayerAsyncTCPClient +{ +public: + PhysicalLayerAsyncTCPv6Client(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort) + : PhysicalLayerAsyncTCPClient( + apLogger, + apIOService, + boost::asio::ip::tcp::endpoint( + boost::asio::ip::tcp::v6(), + aPort + ), + arAddress + ) + {} +}; + +} + +#endif diff --git a/APL/PhysicalLayerAsyncTCPv6Server.h b/APL/PhysicalLayerAsyncTCPv6Server.h new file mode 100644 index 00000000..13bb1a78 --- /dev/null +++ b/APL/PhysicalLayerAsyncTCPv6Server.h @@ -0,0 +1,47 @@ +// +// Licensed to Green Energy Corp (www.greenenergycorp.com) under one or +// more contributor license agreements. See the NOTICE file distributed +// with this work for additional information regarding copyright +// ownership. Green Enery Corp licenses this file to you under the +// Apache License, Version 2.0 (the "License"); you may not use this +// file except in compliance with the License. You may obtain a copy of +// the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +// implied. See the License for the specific language governing +// permissions and limitations under the License. +// +#ifndef __PHYSICAL_LAYER_ASYNC_TCP_V6_SERVER_H_ +#define __PHYSICAL_LAYER_ASYNC_TCP_V6_SERVER_H_ + +#include + +#include "PhysicalLayerAsyncTCPServer.h" + +namespace apl +{ + +class PhysicalLayerAsyncTCPv6Server : public PhysicalLayerAsyncTCPServer +{ +public: + PhysicalLayerAsyncTCPv6Server(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort) + : PhysicalLayerAsyncTCPServer( + apLogger, + apIOService, + boost::asio::ip::tcp::endpoint( + boost::asio::ip::tcp::v6(), + aPort + ), + arAddress + ) + {} +}; + +} + +#endif + diff --git a/APL/PhysicalLayerFactory.cpp b/APL/PhysicalLayerFactory.cpp index effa0d8b..dd613433 100644 --- a/APL/PhysicalLayerFactory.cpp +++ b/APL/PhysicalLayerFactory.cpp @@ -20,8 +20,10 @@ #include "PhysicalLayerFactory.h" #include "PhysicalLayerAsyncSerial.h" -#include "PhysicalLayerAsyncTCPClient.h" -#include "PhysicalLayerAsyncTCPServer.h" +#include "PhysicalLayerAsyncTCPv4Client.h" +#include "PhysicalLayerAsyncTCPv4Server.h" +#include "PhysicalLayerAsyncTCPv6Client.h" +#include "PhysicalLayerAsyncTCPv6Server.h" #include "Log.h" @@ -36,14 +38,24 @@ IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetSerialAsync(SerialSettings return boost::bind(&PhysicalLayerFactory::FGetSerialAsync, s, _2, _1); } -IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPClientAsync(std::string aAddress, boost::uint16_t aPort) +IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort) { - return boost::bind(&PhysicalLayerFactory::FGetTCPClientAsync, aAddress, aPort, _2, _1); + return boost::bind(&PhysicalLayerFactory::FGetTCPv4ClientAsync, aAddress, aPort, _2, _1); } -IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPServerAsync(std::string aEndpoint, boost::uint16_t aPort) +IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort) { - return boost::bind(&PhysicalLayerFactory::FGetTCPServerAsync, aEndpoint, aPort, _2, _1); + return boost::bind(&PhysicalLayerFactory::FGetTCPv4ServerAsync, aEndpoint, aPort, _2, _1); +} + +IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort) +{ + return boost::bind(&PhysicalLayerFactory::FGetTCPv6ClientAsync, aAddress, aPort, _2, _1); +} + +IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort) +{ + return boost::bind(&PhysicalLayerFactory::FGetTCPv6ServerAsync, aEndpoint, aPort, _2, _1); } IPhysicalLayerAsync* PhysicalLayerFactory :: FGetSerialAsync(SerialSettings s, boost::asio::io_service* apSrv, Logger* apLogger) @@ -51,14 +63,24 @@ IPhysicalLayerAsync* PhysicalLayerFactory :: FGetSerialAsync(SerialSettings s, b return new PhysicalLayerAsyncSerial(apLogger, apSrv, s); } -IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPClientAsync(std::string aAddress, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger) +IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger) +{ + return new PhysicalLayerAsyncTCPv4Client(apLogger, apSrv, aAddress, aPort); +} + +IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger) +{ + return new PhysicalLayerAsyncTCPv4Server(apLogger, apSrv, aEndpoint, aPort); +} + +IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger) { - return new PhysicalLayerAsyncTCPClient(apLogger, apSrv, aAddress, aPort); + return new PhysicalLayerAsyncTCPv6Client(apLogger, apSrv, aAddress, aPort); } -IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPServerAsync(std::string aEndpoint, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger) +IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger) { - return new PhysicalLayerAsyncTCPServer(apLogger, apSrv, aEndpoint, aPort); + return new PhysicalLayerAsyncTCPv6Server(apLogger, apSrv, aEndpoint, aPort); } } diff --git a/APL/PhysicalLayerFactory.h b/APL/PhysicalLayerFactory.h index 6c647691..9d47f5ca 100644 --- a/APL/PhysicalLayerFactory.h +++ b/APL/PhysicalLayerFactory.h @@ -35,14 +35,19 @@ class PhysicalLayerFactory public: static IPhysicalLayerAsyncFactory GetSerialAsync(SerialSettings s); - static IPhysicalLayerAsyncFactory GetTCPClientAsync(std::string aAddress, boost::uint16_t aPort); - static IPhysicalLayerAsyncFactory GetTCPServerAsync(std::string aEndpoint, boost::uint16_t aPort); + static IPhysicalLayerAsyncFactory GetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort); + static IPhysicalLayerAsyncFactory GetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort); + static IPhysicalLayerAsyncFactory GetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort); + static IPhysicalLayerAsyncFactory GetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort); //normal factory functions static IPhysicalLayerAsync* FGetSerialAsync(SerialSettings s, boost::asio::io_service* apSrv, Logger* apLogger); - static IPhysicalLayerAsync* FGetTCPClientAsync(std::string aAddress, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger); - static IPhysicalLayerAsync* FGetTCPServerAsync(std::string aEndpoint, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger); + static IPhysicalLayerAsync* FGetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger); + static IPhysicalLayerAsync* FGetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger); + static IPhysicalLayerAsync* FGetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger); + static IPhysicalLayerAsync* FGetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger); }; + } #endif diff --git a/APL/PhysicalLayerManager.cpp b/APL/PhysicalLayerManager.cpp index ed598bcf..de1dcb17 100644 --- a/APL/PhysicalLayerManager.cpp +++ b/APL/PhysicalLayerManager.cpp @@ -45,13 +45,13 @@ PhysicalLayerManager :: ~PhysicalLayerManager() } void PhysicalLayerManager::Remove(const std::string& arName) -{ +{ NameToInstanceMap::iterator i = mNameToInstanceMap.find(arName); if(i == mNameToInstanceMap.end()) throw ArgumentException(LOCATION, "Unknown layer"); i->second.Release(); this->ReleaseLayer(arName); mNameToInstanceMap.erase(i); - mNameToSettingsMap.erase(arName); + mNameToSettingsMap.erase(arName); } void PhysicalLayerManager ::AddPhysicalLayer(const std::string& arName, PhysLayerSettings s, IPhysicalLayerAsync* apPhys) @@ -60,16 +60,30 @@ void PhysicalLayerManager ::AddPhysicalLayer(const std::string& arName, PhysLaye this->AddLayer(arName, s, pli); } -void PhysicalLayerManager ::AddTCPClient(const std::string& arName, PhysLayerSettings s, const std::string& arAddr, boost::uint16_t aPort) +void PhysicalLayerManager ::AddTCPv4Client(const std::string& arName, PhysLayerSettings s, const std::string& arAddr, boost::uint16_t aPort) +{ + IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv4ClientAsync(arAddr, aPort); + PhysLayerInstance pli(fac); + this->AddLayer(arName, s, pli); +} + +void PhysicalLayerManager ::AddTCPv4Server(const std::string& arName, PhysLayerSettings s, const std::string& arEndpoint, boost::uint16_t aPort) +{ + IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv4ServerAsync(arEndpoint, aPort); + PhysLayerInstance pli(fac); + this->AddLayer(arName, s, pli); +} + +void PhysicalLayerManager ::AddTCPv6Client(const std::string& arName, PhysLayerSettings s, const std::string& arAddr, boost::uint16_t aPort) { - IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPClientAsync(arAddr, aPort); + IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv6ClientAsync(arAddr, aPort); PhysLayerInstance pli(fac); this->AddLayer(arName, s, pli); } -void PhysicalLayerManager ::AddTCPServer(const std::string& arName, PhysLayerSettings s, const std::string& arEndpoint, boost::uint16_t aPort) +void PhysicalLayerManager ::AddTCPv6Server(const std::string& arName, PhysLayerSettings s, const std::string& arEndpoint, boost::uint16_t aPort) { - IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPServerAsync(arEndpoint, aPort); + IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv6ServerAsync(arEndpoint, aPort); PhysLayerInstance pli(fac); this->AddLayer(arName, s, pli); } diff --git a/APL/PhysicalLayerManager.h b/APL/PhysicalLayerManager.h index f5189c0f..8aa20e71 100644 --- a/APL/PhysicalLayerManager.h +++ b/APL/PhysicalLayerManager.h @@ -39,8 +39,10 @@ class PhysicalLayerManager : public PhysicalLayerMap //function for manually adding entires - void AddTCPClient(const std::string& arName, PhysLayerSettings, const std::string& arAddr, boost::uint16_t aPort); - void AddTCPServer(const std::string& arName, PhysLayerSettings, const std::string& arEndpoint, boost::uint16_t aPort); + void AddTCPv4Client(const std::string& arName, PhysLayerSettings, const std::string& arAddr, boost::uint16_t aPort); + void AddTCPv4Server(const std::string& arName, PhysLayerSettings, const std::string& arEndpoint, boost::uint16_t aPort); + void AddTCPv6Client(const std::string& arName, PhysLayerSettings, const std::string& arAddr, boost::uint16_t aPort); + void AddTCPv6Server(const std::string& arName, PhysLayerSettings, const std::string& arEndpoint, boost::uint16_t aPort); void AddSerial(const std::string& arName, PhysLayerSettings, SerialSettings); void AddPhysicalLayer(const std::string& arName, PhysLayerSettings, IPhysicalLayerAsync*); diff --git a/APLTestTools/AsyncPhysTestObject.h b/APLTestTools/AsyncPhysTestObject.h index 4da8d62b..b14f78a4 100644 --- a/APLTestTools/AsyncPhysTestObject.h +++ b/APLTestTools/AsyncPhysTestObject.h @@ -22,8 +22,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -39,8 +39,8 @@ class AsyncPhysTestObject : public AsyncTestObjectASIO, public LogTester Logger* mpLogger; public: - PhysicalLayerAsyncTCPClient mTCPClient; - PhysicalLayerAsyncTCPServer mTCPServer; + PhysicalLayerAsyncTCPv4Client mTCPClient; + PhysicalLayerAsyncTCPv4Server mTCPServer; LowerLayerToPhysAdapter mClientAdapter; LowerLayerToPhysAdapter mServerAdapter; diff --git a/APLTestTools/PhysicalLayerWrapperFactory.h b/APLTestTools/PhysicalLayerWrapperFactory.h index 7082dad3..4920c783 100644 --- a/APLTestTools/PhysicalLayerWrapperFactory.h +++ b/APLTestTools/PhysicalLayerWrapperFactory.h @@ -33,16 +33,20 @@ namespace apl class PhysicalLayerWrapperFactory { public: - static IPhysicalLayerAsyncFactory GetSerialAsync(SerialSettings s); - static IPhysicalLayerAsyncFactory GetTCPClientAsync(std::string aAddress, boost::uint16_t aPort); - static IPhysicalLayerAsyncFactory GetTCPServerAsync(std::string aEndpoint, boost::uint16_t aPort); + static IPhysicalLayerAsyncFactory GetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort); + static IPhysicalLayerAsyncFactory GetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort); + static IPhysicalLayerAsyncFactory GetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort); + static IPhysicalLayerAsyncFactory GetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort); //normal factory functions static IPhysicalLayerWrapper* FGetSerialAsync(SerialSettings s, boost::asio::io_service* apSrv, Logger* apLogger); - static IPhysicalLayerAsync* FGetTCPClientAsync(std::string aAddress, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger); - static IPhysicalLayerAsync* FGetTCPServerAsync(std::string aEndpoint, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger); + static IPhysicalLayerAsync* FGetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger); + static IPhysicalLayerAsync* FGetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger); + static IPhysicalLayerAsync* FGetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger); + static IPhysicalLayerAsync* FGetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger); }; + } #endif diff --git a/APLTestTools/WrappedTcpPipe.h b/APLTestTools/WrappedTcpPipe.h index efc592c5..87d68d42 100755 --- a/APLTestTools/WrappedTcpPipe.h +++ b/APLTestTools/WrappedTcpPipe.h @@ -1,15 +1,15 @@ #ifndef __WRAPPED_TCP_PIPE_H_ #define __WRAPPED_TCP_PIPE_H_ -#include -#include +#include +#include #include "PhysicalLayerWrapper.h" -namespace boost { - namespace asio { - class io_service; - } +namespace boost { + namespace asio { + class io_service; + } } namespace apl @@ -20,10 +20,10 @@ class WrappedTcpPipe public: WrappedTcpPipe(Logger*, boost::asio::io_service*, boost::uint16_t aPort); - private: - PhysicalLayerAsyncTCPClient clientTcp; - PhysicalLayerAsyncTCPServer serverTcp; - + private: + PhysicalLayerAsyncTCPv4Client clientTcp; + PhysicalLayerAsyncTCPv4Server serverTcp; + public: PhysicalLayerWrapper client; PhysicalLayerWrapper server; diff --git a/APLXML/PhysicalLayerManagerXML.cpp b/APLXML/PhysicalLayerManagerXML.cpp index 74694186..f1af2b3d 100644 --- a/APLXML/PhysicalLayerManagerXML.cpp +++ b/APLXML/PhysicalLayerManagerXML.cpp @@ -50,8 +50,10 @@ PhysicalLayerManagerXML::PhysicalLayerManagerXML(Logger* apLogger, boost::asio:: void PhysicalLayerManagerXML :: AddList(const APLXML_Base::PhysicalLayerList_t* apList, FilterLevel aLevel) { AddStandalones(apList->SerialVector, aLevel); - AddStandalones(apList->TCPClientVector, aLevel); - AddStandalones(apList->TCPServerVector, aLevel); + AddStandalones(apList->TCPv4ClientVector, aLevel); + AddStandalones(apList->TCPv4ServerVector, aLevel); + AddStandalones(apList->TCPv6ClientVector, aLevel); + AddStandalones(apList->TCPv6ServerVector, aLevel); } // Created helper function to remove ugly loops. diff --git a/APLXML/PhysicalLayerXMLFactory.cpp b/APLXML/PhysicalLayerXMLFactory.cpp index 49c56ea6..22ae8b58 100644 --- a/APLXML/PhysicalLayerXMLFactory.cpp +++ b/APLXML/PhysicalLayerXMLFactory.cpp @@ -33,11 +33,17 @@ IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetFactoryAsync(const APLX const APLXML_Base::Serial_t* pSerial = dynamic_cast(apCfg); if(pSerial != NULL) return GetAsync(pSerial); - const APLXML_Base::TCPServer_t* pServer = dynamic_cast(apCfg); - if(pServer != NULL) return GetAsync(pServer); + const APLXML_Base::TCPv4Server_t* pServerV4 = dynamic_cast(apCfg); + if(pServerV4 != NULL) return GetAsync(pServerV4); - const APLXML_Base::TCPClient_t* pClient = dynamic_cast(apCfg); - if(pClient != NULL) return GetAsync(pClient); + const APLXML_Base::TCPv4Client_t* pClientV4 = dynamic_cast(apCfg); + if(pClientV4 != NULL) return GetAsync(pClientV4); + + const APLXML_Base::TCPv6Server_t* pServerV6 = dynamic_cast(apCfg); + if(pServerV6 != NULL) return GetAsync(pServerV6); + + const APLXML_Base::TCPv6Client_t* pClientV6 = dynamic_cast(apCfg); + if(pClientV6 != NULL) return GetAsync(pClientV6); throw Exception(LOCATION, "Unknown PhysicalLayerDescriptor_t"); } @@ -48,16 +54,28 @@ IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base return PhysicalLayerFactory::GetSerialAsync(s); } -IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base::TCPClient_t* apCfg) +IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base::TCPv4Client_t* apCfg) +{ + boost::uint16_t port = boost::numeric::converter::convert(apCfg->Port); + return PhysicalLayerFactory::GetTCPv4ClientAsync(apCfg->Address, port); +} + +IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base::TCPv4Server_t* apCfg) +{ + boost::uint16_t port = boost::numeric::converter::convert(apCfg->Port); + return PhysicalLayerFactory::GetTCPv4ServerAsync(apCfg->Endpoint, port); +} + +IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base::TCPv6Client_t* apCfg) { boost::uint16_t port = boost::numeric::converter::convert(apCfg->Port); - return PhysicalLayerFactory::GetTCPClientAsync(apCfg->Address, port); + return PhysicalLayerFactory::GetTCPv6ClientAsync(apCfg->Address, port); } -IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base::TCPServer_t* apCfg) +IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base::TCPv6Server_t* apCfg) { boost::uint16_t port = boost::numeric::converter::convert(apCfg->Port); - return PhysicalLayerFactory::GetTCPServerAsync(apCfg->Endpoint, port); + return PhysicalLayerFactory::GetTCPv6ServerAsync(apCfg->Endpoint, port); } SerialSettings GetSerialSettings(const APLXML_Base::Serial_t* apCfg) diff --git a/APLXML/PhysicalLayerXMLFactory.h b/APLXML/PhysicalLayerXMLFactory.h index 2d029985..f13c6c36 100644 --- a/APLXML/PhysicalLayerXMLFactory.h +++ b/APLXML/PhysicalLayerXMLFactory.h @@ -37,8 +37,10 @@ class PhysicalLayerXMLFactory /* These factories should take the regular configuration types */ static IPhysicalLayerAsyncFactory GetAsync(const APLXML_Base::Serial_t* apCfg); - static IPhysicalLayerAsyncFactory GetAsync(const APLXML_Base::TCPClient_t* apCfg); - static IPhysicalLayerAsyncFactory GetAsync(const APLXML_Base::TCPServer_t* apCfg); + static IPhysicalLayerAsyncFactory GetAsync(const APLXML_Base::TCPv4Client_t* apCfg); + static IPhysicalLayerAsyncFactory GetAsync(const APLXML_Base::TCPv4Server_t* apCfg); + static IPhysicalLayerAsyncFactory GetAsync(const APLXML_Base::TCPv6Client_t* apCfg); + static IPhysicalLayerAsyncFactory GetAsync(const APLXML_Base::TCPv6Server_t* apCfg); }; int BaudToInt(APLXML_Base::BaudRateEnum aBaud); diff --git a/APLXML/XML_APL.cpp b/APLXML/XML_APL.cpp index 0a3d24e9..21469762 100644 --- a/APLXML/XML_APL.cpp +++ b/APLXML/XML_APL.cpp @@ -23,25 +23,47 @@ namespace apl namespace xml { -APLXML_Base::TCPServer_t* XML_APL::AddTCPServer(APLXML_Base::PhysicalLayerList_t& arList, const std::string& arDevice, const std::string& arEndpoint, int aPort) +APLXML_Base::TCPv4Server_t* XML_APL::AddTCPv4Server(APLXML_Base::PhysicalLayerList_t& arList, const std::string& arDevice, const std::string& arEndpoint, int aPort) { - APLXML_Base::TCPServer_t* pLayer = new APLXML_Base::TCPServer_t(); + APLXML_Base::TCPv4Server_t* pLayer = new APLXML_Base::TCPv4Server_t(); pLayer->Name = arDevice; pLayer->Endpoint = arEndpoint; pLayer->Port = aPort; pLayer->OpenRetryMS = 5000; - arList.TCPServerVector.push_back(pLayer); + arList.TCPv4ServerVector.push_back(pLayer); return pLayer; } -APLXML_Base::TCPClient_t* XML_APL::AddTCPClient(APLXML_Base::PhysicalLayerList_t& arList, const std::string& arDevice, const std::string& arAddress, int aPort) +APLXML_Base::TCPv4Client_t* XML_APL::AddTCPv4Client(APLXML_Base::PhysicalLayerList_t& arList, const std::string& arDevice, const std::string& arAddress, int aPort) { - APLXML_Base::TCPClient_t* pLayer = new APLXML_Base::TCPClient_t(); + APLXML_Base::TCPv4Client_t* pLayer = new APLXML_Base::TCPv4Client_t(); pLayer->Name = arDevice; pLayer->Address = arAddress; pLayer->Port = aPort; pLayer->OpenRetryMS = 5000; - arList.TCPClientVector.push_back(pLayer); + arList.TCPv4ClientVector.push_back(pLayer); + return pLayer; +} + +APLXML_Base::TCPv6Server_t* XML_APL::AddTCPv6Server(APLXML_Base::PhysicalLayerList_t& arList, const std::string& arDevice, const std::string& arEndpoint, int aPort) +{ + APLXML_Base::TCPv6Server_t* pLayer = new APLXML_Base::TCPv6Server_t(); + pLayer->Name = arDevice; + pLayer->Endpoint = arEndpoint; + pLayer->Port = aPort; + pLayer->OpenRetryMS = 5000; + arList.TCPv6ServerVector.push_back(pLayer); + return pLayer; +} + +APLXML_Base::TCPv6Client_t* XML_APL::AddTCPv6Client(APLXML_Base::PhysicalLayerList_t& arList, const std::string& arDevice, const std::string& arAddress, int aPort) +{ + APLXML_Base::TCPv6Client_t* pLayer = new APLXML_Base::TCPv6Client_t(); + pLayer->Name = arDevice; + pLayer->Address = arAddress; + pLayer->Port = aPort; + pLayer->OpenRetryMS = 5000; + arList.TCPv6ClientVector.push_back(pLayer); return pLayer; } diff --git a/APLXML/XML_APL.h b/APLXML/XML_APL.h index 721edf29..6d6274e2 100644 --- a/APLXML/XML_APL.h +++ b/APLXML/XML_APL.h @@ -30,8 +30,10 @@ class XML_APL { public: - static APLXML_Base::TCPServer_t* AddTCPServer(APLXML_Base::PhysicalLayerList_t& arList, const std::string& arDevice, const std::string& arEndpoint, int aPort); - static APLXML_Base::TCPClient_t* AddTCPClient(APLXML_Base::PhysicalLayerList_t& arList, const std::string& arDevice, const std::string& arAdderss, int aPort); + static APLXML_Base::TCPv4Server_t* AddTCPv4Server(APLXML_Base::PhysicalLayerList_t& arList, const std::string& arDevice, const std::string& arEndpoint, int aPort); + static APLXML_Base::TCPv4Client_t* AddTCPv4Client(APLXML_Base::PhysicalLayerList_t& arList, const std::string& arDevice, const std::string& arAdderss, int aPort); + static APLXML_Base::TCPv6Server_t* AddTCPv6Server(APLXML_Base::PhysicalLayerList_t& arList, const std::string& arDevice, const std::string& arEndpoint, int aPort); + static APLXML_Base::TCPv6Client_t* AddTCPv6Client(APLXML_Base::PhysicalLayerList_t& arList, const std::string& arDevice, const std::string& arAdderss, int aPort); static APLXML_Base::Serial_t* AddSerial(APLXML_Base::PhysicalLayerList_t& arList, const std::string& arName, const std::string& arDevice); }; diff --git a/ConfigurationBuilder/APL.xsd b/ConfigurationBuilder/APL.xsd index fa6078b7..6fb360a4 100755 --- a/ConfigurationBuilder/APL.xsd +++ b/ConfigurationBuilder/APL.xsd @@ -5,8 +5,10 @@ - - + + + + @@ -23,7 +25,7 @@ - + @@ -34,7 +36,29 @@ - + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DNP3/AsyncStackManager.cpp b/DNP3/AsyncStackManager.cpp index e7bfab5b..c5c4d121 100644 --- a/DNP3/AsyncStackManager.cpp +++ b/DNP3/AsyncStackManager.cpp @@ -83,16 +83,28 @@ std::vector AsyncStackManager::GetPortNames() return GetKeys(mChannelNameToChannel); } -void AsyncStackManager::AddTCPClient(const std::string& arName, PhysLayerSettings aSettings, const std::string& arAddr, boost::uint16_t aPort) +void AsyncStackManager::AddTCPv4Client(const std::string& arName, PhysLayerSettings aSettings, const std::string& arAddr, boost::uint16_t aPort) { this->ThrowIfAlreadyShutdown(); - mMgr.AddTCPClient(arName, aSettings, arAddr, aPort); + mMgr.AddTCPv4Client(arName, aSettings, arAddr, aPort); } -void AsyncStackManager::AddTCPServer(const std::string& arName, PhysLayerSettings aSettings, const std::string& arEndpoint, boost::uint16_t aPort) +void AsyncStackManager::AddTCPv4Server(const std::string& arName, PhysLayerSettings aSettings, const std::string& arEndpoint, boost::uint16_t aPort) { this->ThrowIfAlreadyShutdown(); - mMgr.AddTCPServer(arName, aSettings, arEndpoint, aPort); + mMgr.AddTCPv4Server(arName, aSettings, arEndpoint, aPort); +} + +void AsyncStackManager::AddTCPv6Client(const std::string& arName, PhysLayerSettings aSettings, const std::string& arAddr, boost::uint16_t aPort) +{ + this->ThrowIfAlreadyShutdown(); + mMgr.AddTCPv6Client(arName, aSettings, arAddr, aPort); +} + +void AsyncStackManager::AddTCPv6Server(const std::string& arName, PhysLayerSettings aSettings, const std::string& arEndpoint, boost::uint16_t aPort) +{ + this->ThrowIfAlreadyShutdown(); + mMgr.AddTCPv6Server(arName, aSettings, arEndpoint, aPort); } void AsyncStackManager::AddSerial(const std::string& arName, PhysLayerSettings aSettings, SerialSettings aSerial) @@ -200,7 +212,7 @@ IVtoWriter* AsyncStackManager::GetVtoWriter(const std::string& arStackName) // Remove a port and all associated stacks void AsyncStackManager::RemovePort(const std::string& arPortName) -{ +{ this->ThrowIfAlreadyShutdown(); LinkChannel* pChannel = this->GetChannelMaybeNull(arPortName); if(pChannel != NULL) { // the channel is in use @@ -220,7 +232,7 @@ void AsyncStackManager::RemovePort(const std::string& arPortName) this->RemoveStack(s); } this->mScheduler.ReleaseGroup(pChannel->GetGroup()); - } + } // remove the physical layer from the list mMgr.Remove(arPortName); diff --git a/DNP3/AsyncStackManager.h b/DNP3/AsyncStackManager.h index 24e7f7d6..980c489f 100644 --- a/DNP3/AsyncStackManager.h +++ b/DNP3/AsyncStackManager.h @@ -76,11 +76,17 @@ class AsyncStackManager : private Threadable, private Loggable // All the io_service marshalling now occurs here. It's now safe to add/remove while the manager is running. - // Adds a TCPClient port, excepts if the port already exists - void AddTCPClient(const std::string& arName, PhysLayerSettings, const std::string& arAddr, boost::uint16_t aPort); + // Adds a TCPv4Client port, excepts if the port already exists + void AddTCPv4Client(const std::string& arName, PhysLayerSettings, const std::string& arAddr, boost::uint16_t aPort); - // Adds a TCPServer port, excepts if the port already exists - void AddTCPServer(const std::string& arName, PhysLayerSettings, const std::string& arEndpoint, boost::uint16_t aPort); + // Adds a TCPv4Server port, excepts if the port already exists + void AddTCPv4Server(const std::string& arName, PhysLayerSettings, const std::string& arEndpoint, boost::uint16_t aPort); + + // Adds a TCPv6Client port, excepts if the port already exists + void AddTCPv6Client(const std::string& arName, PhysLayerSettings, const std::string& arAddr, boost::uint16_t aPort); + + // Adds a TCPv6Server port, excepts if the port already exists + void AddTCPv6Server(const std::string& arName, PhysLayerSettings, const std::string& arEndpoint, boost::uint16_t aPort); // Adds a Serial port, excepts if the port already exists void AddSerial(const std::string& arName, PhysLayerSettings, SerialSettings); @@ -313,9 +319,6 @@ class AsyncStackManager : private Threadable, private Loggable StackRecord GetStackRecordByName(const std::string& arName); - - - }; } diff --git a/DNP3/StackManager.cpp b/DNP3/StackManager.cpp index 3a94e2f5..2c818465 100644 --- a/DNP3/StackManager.cpp +++ b/DNP3/StackManager.cpp @@ -42,14 +42,24 @@ StackManager::~StackManager() } //used for defining ports -void StackManager::AddTCPClient(const std::string& arName, PhysLayerSettings s, const std::string& arAddr, boost::uint16_t aPort) +void StackManager::AddTCPv4Client(const std::string& arName, PhysLayerSettings s, const std::string& arAddr, boost::uint16_t aPort) { - mpImpl->AddTCPClient(arName, s, arAddr, aPort); + mpImpl->AddTCPv4Client(arName, s, arAddr, aPort); } -void StackManager::AddTCPServer(const std::string& arName, PhysLayerSettings s, const std::string& arEndpoint, boost::uint16_t aPort) +void StackManager::AddTCPv4Server(const std::string& arName, PhysLayerSettings s, const std::string& arEndpoint, boost::uint16_t aPort) { - mpImpl->AddTCPServer(arName, s, arEndpoint, aPort); + mpImpl->AddTCPv4Server(arName, s, arEndpoint, aPort); +} + +void StackManager::AddTCPv6Client(const std::string& arName, PhysLayerSettings s, const std::string& arAddr, boost::uint16_t aPort) +{ + mpImpl->AddTCPv6Client(arName, s, arAddr, aPort); +} + +void StackManager::AddTCPv6Server(const std::string& arName, PhysLayerSettings s, const std::string& arEndpoint, boost::uint16_t aPort) +{ + mpImpl->AddTCPv6Server(arName, s, arEndpoint, aPort); } void StackManager::AddSerial(const std::string& arName, PhysLayerSettings s, SerialSettings aSerial) diff --git a/DNP3/StackManager.h b/DNP3/StackManager.h index 98bb4576..d86d97d0 100644 --- a/DNP3/StackManager.h +++ b/DNP3/StackManager.h @@ -55,15 +55,25 @@ class StackManager StackManager(); ~StackManager(); - void AddTCPClient(const std::string& arName, - PhysLayerSettings aPhys, - const std::string& arAddr, - boost::uint16_t aPort); - - void AddTCPServer(const std::string& arName, - PhysLayerSettings aPhys, - const std::string& arEndpoint, - boost::uint16_t aPort); + void AddTCPv4Client(const std::string& arName, + PhysLayerSettings aPhys, + const std::string& arAddr, + boost::uint16_t aPort); + + void AddTCPv4Server(const std::string& arName, + PhysLayerSettings aPhys, + const std::string& arEndpoint, + boost::uint16_t aPort); + + void AddTCPv6Client(const std::string& arName, + PhysLayerSettings aPhys, + const std::string& arAddr, + boost::uint16_t aPort); + + void AddTCPv6Server(const std::string& arName, + PhysLayerSettings aPhys, + const std::string& arEndpoint, + boost::uint16_t aPort); void AddSerial(const std::string& arName, PhysLayerSettings aPhys, diff --git a/DNP3Java/src/test/scala/DNP3BindingTest.scala b/DNP3Java/src/test/scala/DNP3BindingTest.scala index 3ce5f4c4..af7efbf4 100644 --- a/DNP3Java/src/test/scala/DNP3BindingTest.scala +++ b/DNP3Java/src/test/scala/DNP3BindingTest.scala @@ -83,7 +83,7 @@ class DNP3BindingTest extends FunSuite with ShouldMatchers { (1 to num_port).foreach { port => val s = new PhysLayerSettings(FilterLevel.LEV_WARNING, 1000) - sm.AddTCPClient(port.toString, s, "127.0.0.1", startPort) + sm.AddTCPv4Client(port.toString, s, "127.0.0.1", startPort) (1 to num_stack).foreach { stack => val name = "port-" + port + "-stack" + stack @@ -128,8 +128,8 @@ class DNP3BindingTest extends FunSuite with ShouldMatchers { (port_start to port_end).foreach { port => val client = "client-" + port val server = "server-" + port - sm.AddTCPClient(client, s, "127.0.0.1", port) - sm.AddTCPServer(server, s, "0.0.0.0", port) + sm.AddTCPv4Client(client, s, "127.0.0.1", port) + sm.AddTCPv4Server(server, s, "0.0.0.0", port) master.getMaster.setMpObserver(stateObserver.getObserver(server)) names ::= server diff --git a/DNP3Test/IntegrationTest.cpp b/DNP3Test/IntegrationTest.cpp index 58e0fcad..5382dce8 100644 --- a/DNP3Test/IntegrationTest.cpp +++ b/DNP3Test/IntegrationTest.cpp @@ -160,8 +160,8 @@ void IntegrationTest::AddStackPair(FilterLevel aLevel, size_t aNumPoints) mMasterObservers.push_back(pMasterFDO); PhysLayerSettings s(aLevel, 1000); - this->mManager.AddTCPClient(client, s, "127.0.0.1", port); - this->mManager.AddTCPServer(server, s, "127.0.0.1", port); + this->mManager.AddTCPv4Client(client, s, "127.0.0.1", port); + this->mManager.AddTCPv4Server(server, s, "127.0.0.1", port); /* * Add a Master instance. The code is wrapped in braces so that we can diff --git a/DNP3Test/StartupTeardownTest.cpp b/DNP3Test/StartupTeardownTest.cpp index 4fe56866..a1c9a9c8 100644 --- a/DNP3Test/StartupTeardownTest.cpp +++ b/DNP3Test/StartupTeardownTest.cpp @@ -20,7 +20,7 @@ #include "StartupTeardownTest.h" #include -#include +#include #include #include @@ -40,7 +40,7 @@ void StartupTeardownTest::CreatePort(const std::string& arName, FilterLevel aLev { std::string name = arName + " router"; PhysLayerSettings s(aLevel, 1000); - manager.AddTCPClient(arName, s, "127.0.0.1", 30000); + manager.AddTCPv4Client(arName, s, "127.0.0.1", 30000); } void StartupTeardownTest::AddMaster(const std::string& arStackName, const std::string& arPortName, boost::uint16_t aLocalAddress, FilterLevel aLevel) diff --git a/DNP3Test/TestStackManager.cpp b/DNP3Test/TestStackManager.cpp index 77a124ba..81bf222d 100755 --- a/DNP3Test/TestStackManager.cpp +++ b/DNP3Test/TestStackManager.cpp @@ -29,17 +29,17 @@ BOOST_AUTO_TEST_SUITE(StackManagerTestSuite) BOOST_AUTO_TEST_CASE(RemovePortWorksAfterAdd) { StackManager sm; - sm.AddTCPClient("client",PhysLayerSettings(), "127.0.0.1", 20000); + sm.AddTCPv4Client("client",PhysLayerSettings(), "127.0.0.1", 20000); sm.RemovePort("client"); } BOOST_AUTO_TEST_CASE(AddRemoveMultipleTimes) { StackManager sm; - sm.AddTCPClient("client", PhysLayerSettings(), "127.0.0.1", 20000); + sm.AddTCPv4Client("client", PhysLayerSettings(), "127.0.0.1", 20000); sm.AddMaster("client", "master", apl::LEV_WARNING, NULL, MasterStackConfig()); sm.RemovePort("client"); - sm.AddTCPClient("client", PhysLayerSettings(), "127.0.0.1", 20000); + sm.AddTCPv4Client("client", PhysLayerSettings(), "127.0.0.1", 20000); sm.AddMaster("client", "master", apl::LEV_WARNING, NULL, MasterStackConfig()); } diff --git a/DNP3Test/TransportStackPair.h b/DNP3Test/TransportStackPair.h index 78e9ca23..1f6bad1b 100644 --- a/DNP3Test/TransportStackPair.h +++ b/DNP3Test/TransportStackPair.h @@ -28,8 +28,8 @@ class io_service; } -#include -#include +#include +#include #include #include "TransportIntegrationStack.h" @@ -56,8 +56,8 @@ class TransportStackPair bool BothLayersUp(); public: - PhysicalLayerAsyncTCPClient mClient; - PhysicalLayerAsyncTCPServer mServer; + PhysicalLayerAsyncTCPv4Client mClient; + PhysicalLayerAsyncTCPv4Server mServer; TransportIntegrationStack mClientStack; TransportIntegrationStack mServerStack; diff --git a/DNP3Test/VtoIntegrationTestBase.cpp b/DNP3Test/VtoIntegrationTestBase.cpp index be145079..9328b229 100755 --- a/DNP3Test/VtoIntegrationTestBase.cpp +++ b/DNP3Test/VtoIntegrationTestBase.cpp @@ -73,9 +73,9 @@ VtoIntegrationTestBase::VtoIntegrationTestBase( std::string clientSideOfStack = clientOnSlave ? "slave" : "master"; std::string serverSideOfStack = clientOnSlave ? "master" : "slave"; - manager.AddTCPClient("vto-tcp-client", PhysLayerSettings(), "localhost", port + 10); + manager.AddTCPv4Client("vto-tcp-client", PhysLayerSettings(), "localhost", port + 10); manager.StartVtoRouter("vto-tcp-client", clientSideOfStack, VtoRouterSettings(88, false, false, 1000)); - manager.AddTCPServer("vto-tcp-server", PhysLayerSettings(), "localhost", port + 20); + manager.AddTCPv4Server("vto-tcp-server", PhysLayerSettings(), "localhost", port + 20); manager.StartVtoRouter("vto-tcp-server", serverSideOfStack, VtoRouterSettings(88, true, false, 1000)); } diff --git a/DNP3Test/VtoIntegrationTestBase.h b/DNP3Test/VtoIntegrationTestBase.h index cca1b06b..6d04c794 100755 --- a/DNP3Test/VtoIntegrationTestBase.h +++ b/DNP3Test/VtoIntegrationTestBase.h @@ -26,8 +26,8 @@ #include #include #include -#include -#include +#include +#include #include @@ -64,13 +64,13 @@ class VtoIntegrationTestBase : public LogTester, protected Loggable MockCommandAcceptor cmdAcceptor; AsyncTestObjectASIO testObj; - + FlexibleDataObserver fdo; TimerSourceASIO timerSource; - PhysicalLayerAsyncTCPClient vtoClient; - PhysicalLayerAsyncTCPServer vtoServer; - + PhysicalLayerAsyncTCPv4Client vtoClient; + PhysicalLayerAsyncTCPv4Server vtoServer; + AsyncStackManager manager; WrappedTcpPipe tcpPipe; }; diff --git a/DNP3XML/XML_TestSet.cpp b/DNP3XML/XML_TestSet.cpp index 42cdea51..7acc0698 100644 --- a/DNP3XML/XML_TestSet.cpp +++ b/DNP3XML/XML_TestSet.cpp @@ -35,32 +35,34 @@ namespace apl void XML_TestSet::Configure(APLXML_MTS::MasterTestSet_t& arMasterTest, bool aUseUnsol) { - arMasterTest.PhysicalLayer = "tcpclient"; + arMasterTest.PhysicalLayer = "tcpv4client"; arMasterTest.LogFile = "master_testset.log"; arMasterTest.Log.Filter = APLXML_Base::LOG_WARNING; XML_DNP3::Configure(arMasterTest.Master, aUseUnsol); xml::XML_APL::AddSerial(arMasterTest.PhysicalLayerList, "serial", "COM1"); - xml::XML_APL::AddTCPClient(arMasterTest.PhysicalLayerList, "tcpclient", "127.0.0.1", 20000); + xml::XML_APL::AddTCPv4Client(arMasterTest.PhysicalLayerList, "tcpv4client", "127.0.0.1", 20000); + xml::XML_APL::AddTCPv4Server(arMasterTest.PhysicalLayerList, "vtov4tunnel", "0.0.0.0", 20001); + xml::XML_APL::AddTCPv6Client(arMasterTest.PhysicalLayerList, "tcpv6client", "::1", 20000); + xml::XML_APL::AddTCPv6Server(arMasterTest.PhysicalLayerList, "vtov6tunnel", "::", 20001); - xml::XML_APL::AddTCPServer(arMasterTest.PhysicalLayerList, "vtotunnel", "0.0.0.0", 20001); - - XML_DNP3::AddVtoPort(arMasterTest.Master.VtoPorts, "vtotunnel", 0, true); + XML_DNP3::AddVtoPort(arMasterTest.Master.VtoPorts, "vtov4tunnel", 0, true); } void XML_TestSet::Configure(APLXML_STS::SlaveTestSet_t& arSlaveTest) { - arSlaveTest.PhysicalLayer = "tcpserver"; + arSlaveTest.PhysicalLayer = "tcpv4server"; arSlaveTest.LogFile = "slave_testset.log"; arSlaveTest.Log.Filter = APLXML_Base::LOG_WARNING; XML_DNP3::Configure(arSlaveTest.Slave); xml::XML_APL::AddSerial(arSlaveTest.PhysicalLayerList, "serial", "COM1"); - xml::XML_APL::AddTCPServer(arSlaveTest.PhysicalLayerList, "tcpserver", "0.0.0.0", 20000); - - xml::XML_APL::AddTCPClient(arSlaveTest.PhysicalLayerList, "vtotunnel", "127.0.0.1", 22); + xml::XML_APL::AddTCPv4Server(arSlaveTest.PhysicalLayerList, "tcpv4server", "0.0.0.0", 20000); + xml::XML_APL::AddTCPv4Client(arSlaveTest.PhysicalLayerList, "vtov4tunnel", "127.0.0.1", 22); + xml::XML_APL::AddTCPv6Server(arSlaveTest.PhysicalLayerList, "tcpv6server", "::", 20000); + xml::XML_APL::AddTCPv6Client(arSlaveTest.PhysicalLayerList, "vtov6tunnel", "::1", 22); - XML_DNP3::AddVtoPort(arSlaveTest.Slave.VtoPorts, "vtotunnel", 0, false); + XML_DNP3::AddVtoPort(arSlaveTest.Slave.VtoPorts, "vtov4tunnel", 0, false); arSlaveTest.Remote = false; arSlaveTest.RemotePort = 4999; @@ -68,5 +70,5 @@ void XML_TestSet::Configure(APLXML_STS::SlaveTestSet_t& arSlaveTest) arSlaveTest.StartOnline = false; } - } + diff --git a/DNP3XML/XmlToConfig.cpp b/DNP3XML/XmlToConfig.cpp index bf23c2f8..2b2d712d 100644 --- a/DNP3XML/XmlToConfig.cpp +++ b/DNP3XML/XmlToConfig.cpp @@ -46,16 +46,25 @@ namespace dnp bool XmlToConfig::Configure(const APLXML_Base::PhysicalLayerList_t& arList, FilterLevel aLevel, AsyncStackManager& arMgr) { - - for (size_t i = 0; i < arList.TCPClientVector.size(); i++ ) { - TCPClient_t* pCfg = arList.TCPClientVector[i]; + for (size_t i = 0; i < arList.TCPv4ClientVector.size(); i++ ) { + TCPv4Client_t* pCfg = arList.TCPv4ClientVector[i]; + PhysLayerSettings s(aLevel, pCfg->OpenRetryMS); + arMgr.AddTCPv4Client(pCfg->Name, s, pCfg->Address, pCfg->Port); + } + for (size_t i = 0; i < arList.TCPv4ServerVector.size(); i++ ) { + TCPv4Server_t* pCfg = arList.TCPv4ServerVector[i]; + PhysLayerSettings s(aLevel, pCfg->OpenRetryMS); + arMgr.AddTCPv4Server(pCfg->Name, s, pCfg->Endpoint, pCfg->Port); + } + for (size_t i = 0; i < arList.TCPv6ClientVector.size(); i++ ) { + TCPv6Client_t* pCfg = arList.TCPv6ClientVector[i]; PhysLayerSettings s(aLevel, pCfg->OpenRetryMS); - arMgr.AddTCPClient(pCfg->Name, s, pCfg->Address, pCfg->Port); + arMgr.AddTCPv6Client(pCfg->Name, s, pCfg->Address, pCfg->Port); } - for (size_t i = 0; i < arList.TCPServerVector.size(); i++ ) { - TCPServer_t* pCfg = arList.TCPServerVector[i]; + for (size_t i = 0; i < arList.TCPv6ServerVector.size(); i++ ) { + TCPv6Server_t* pCfg = arList.TCPv6ServerVector[i]; PhysLayerSettings s(aLevel, pCfg->OpenRetryMS); - arMgr.AddTCPServer(pCfg->Name, s, pCfg->Endpoint, pCfg->Port); + arMgr.AddTCPv6Server(pCfg->Name, s, pCfg->Endpoint, pCfg->Port); } for (size_t i = 0; i < arList.SerialVector.size(); i++ ) { Serial_t* pCfg = arList.SerialVector[i]; diff --git a/DotNet/DotNetAdapter/StackManager.cpp b/DotNet/DotNetAdapter/StackManager.cpp index 5a5cf71b..eeefd05e 100755 --- a/DotNet/DotNetAdapter/StackManager.cpp +++ b/DotNet/DotNetAdapter/StackManager.cpp @@ -18,43 +18,43 @@ #include namespace DNP3 -{ +{ namespace Adapter { StackManager::StackManager() : pMgr(new apl::dnp::StackManager()) { - + } - void StackManager::AddTCPClient(System::String^ name, FilterLevel level, System::UInt64 retryMs, System::String^ address, System::UInt16 port) + void StackManager::AddTCPv4Client(System::String^ name, FilterLevel level, System::UInt64 retryMs, System::String^ address, System::UInt16 port) { - + std::string stdName = Conversions::convertString(name); std::string stdAddress = Conversions::convertString(address); boost::uint16_t stdPort = port; apl::PhysLayerSettings pls(Conversions::convertFilterLevel(level), retryMs); try { - pMgr->AddTCPClient(stdName, pls, stdAddress, stdPort); - } + pMgr->AddTCPv4Client(stdName, pls, stdAddress, stdPort); + } catch(apl::Exception ex){ throw Conversions::convertException(ex); } } - void StackManager::AddTCPServer(System::String^ name, FilterLevel level, System::UInt64 retryMs, System::String^ endpoint, System::UInt16 port) + void StackManager::AddTCPv4Server(System::String^ name, FilterLevel level, System::UInt64 retryMs, System::String^ endpoint, System::UInt16 port) { std::string stdName = Conversions::convertString(name); - std::string stdEndpoint = Conversions::convertString(endpoint); + std::string stdEndpoint = Conversions::convertString(endpoint); boost::uint16_t stdPort = port; apl::PhysLayerSettings pls(Conversions::convertFilterLevel(level), retryMs); - + try { - pMgr->AddTCPServer(stdName, pls, stdEndpoint, stdPort); - } + pMgr->AddTCPv4Server(stdName, pls, stdEndpoint, stdPort); + } catch(apl::Exception ex){ throw Conversions::convertException(ex); } @@ -68,31 +68,31 @@ namespace Adapter pMgr->AddSerial(stdName, pls, s); } - + ICommandAcceptor^ StackManager::AddMaster( System::String^ portName, - System::String^ stackName, + System::String^ stackName, FilterLevel level, DNP3::Interface::IDataObserver^ observer, - DNP3::Interface::MasterStackConfig^ config) + DNP3::Interface::MasterStackConfig^ config) { std::string stdPortName = Conversions::convertString(portName); std::string stdStackName = Conversions::convertString(stackName); apl::FilterLevel stdLevel = Conversions::convertFilterLevel(level); - MasterDataObserverAdapterWrapper^ wrapper = gcnew MasterDataObserverAdapterWrapper(observer); + MasterDataObserverAdapterWrapper^ wrapper = gcnew MasterDataObserverAdapterWrapper(observer); apl::dnp::MasterStackConfig cfg = Conversions::convertConfig(config); try { apl::ICommandAcceptor* pCmdAcceptor = pMgr->AddMaster(stdPortName, stdStackName, stdLevel, wrapper->GetDataObserver(), cfg); ICommandAcceptor^ ca = gcnew CommandAcceptorAdapter(pCmdAcceptor); return ca; - } + } catch(apl::Exception ex){ throw Conversions::convertException(ex); } } - + IDataObserver^ StackManager::AddSlave( System::String^ portName, System::String^ stackName, FilterLevel level, @@ -109,7 +109,7 @@ namespace Adapter try { apl::IDataObserver* pDataObs = pMgr->AddSlave(stdPortName, stdStackName, stdLevel, wrapper->GetCommandAcceptor(), Conversions::convertConfig(config)); return gcnew SlaveDataObserverAdapter(pDataObs); - } + } catch(apl::Exception ex){ throw Conversions::convertException(ex); } @@ -120,9 +120,9 @@ namespace Adapter void StackManager::RemovePort(System::String^ portName) { try { - std::string stdPortName = Conversions::convertString(portName); + std::string stdPortName = Conversions::convertString(portName); pMgr->RemovePort(stdPortName); - } + } catch(apl::Exception ex){ throw Conversions::convertException(ex); } @@ -133,7 +133,7 @@ namespace Adapter try { std::string stdStackName = Conversions::convertString(stackName); pMgr->RemoveStack(stdStackName); - } + } catch(apl::Exception ex){ throw Conversions::convertException(ex); } @@ -144,7 +144,7 @@ namespace Adapter try { LogAdapterWrapper^ wrapper = gcnew LogAdapterWrapper(logHandler); pMgr->AddLogHook(wrapper->GetLogAdapter()); - } + } catch(apl::Exception ex){ throw Conversions::convertException(ex); } diff --git a/DotNet/DotNetAdapter/StackManager.h b/DotNet/DotNetAdapter/StackManager.h index 44498ad1..dd2b1910 100755 --- a/DotNet/DotNetAdapter/StackManager.h +++ b/DotNet/DotNetAdapter/StackManager.h @@ -10,20 +10,20 @@ namespace apl { namespace dnp { }} namespace DNP3 -{ +{ namespace Adapter { public ref class StackManager { public: StackManager(); - - void AddTCPClient(System::String^ name, FilterLevel level, System::UInt64 retryMs, System::String^ address, System::UInt16 port); - void AddTCPServer(System::String^ name, FilterLevel level, System::UInt64 retryMs, System::String^ endpoint, System::UInt16 port); + + void AddTCPv4Client(System::String^ name, FilterLevel level, System::UInt64 retryMs, System::String^ address, System::UInt16 port); + void AddTCPv4Server(System::String^ name, FilterLevel level, System::UInt64 retryMs, System::String^ endpoint, System::UInt16 port); void AddSerial(System::String^ name, FilterLevel level, System::UInt64 retryMs, SerialSettings^ settings); - + ICommandAcceptor^ AddMaster( System::String^ portName, - System::String^ stackName, + System::String^ stackName, FilterLevel level, IDataObserver^ publisher, MasterStackConfig^ config); @@ -31,7 +31,7 @@ namespace Adapter IDataObserver^ AddSlave( System::String^ portName, System::String^ stackName, FilterLevel level, - ICommandAcceptor^ cmdAcceptor, + ICommandAcceptor^ cmdAcceptor, DNP3::Interface::SlaveStackConfig^ config); void RemovePort(System::String^ portName); diff --git a/DotNet/DotNetMasterDemo/Program.cs b/DotNet/DotNetMasterDemo/Program.cs index 5beaf1c5..e19e233b 100755 --- a/DotNet/DotNetMasterDemo/Program.cs +++ b/DotNet/DotNetMasterDemo/Program.cs @@ -67,7 +67,7 @@ static void Main(string[] args) { var sm = new StackManager(); sm.AddLogHandler(new PrintingLogAdapter()); //this is optional - sm.AddTCPClient("client", FilterLevel.LEV_INFO, 5000, "127.0.0.1", 20000); + sm.AddTCPv4Client("client", FilterLevel.LEV_INFO, 5000, "127.0.0.1", 20000); var config = new MasterStackConfig(); config.link.useConfirms = true; //setup your stack configuration here. var commandAcceptor = sm.AddMaster("client", "master", FilterLevel.LEV_INFO, new PrintingDataObserver(), config); diff --git a/DotNet/DotNetTestSet/TestSetForm.cs b/DotNet/DotNetTestSet/TestSetForm.cs index 7caf8917..ccf3eee3 100755 --- a/DotNet/DotNetTestSet/TestSetForm.cs +++ b/DotNet/DotNetTestSet/TestSetForm.cs @@ -29,12 +29,12 @@ public TestSetForm() private void stackBrowser1_OnTcpClientAdded(TcpSettings s) { - sm.AddTCPClient(s.name, s.level, s.timeout, s.address, s.port); + sm.AddTCPv4Client(s.name, s.level, s.timeout, s.address, s.port); } private void stackBrowser1_OnTcpServerAdded(TcpSettings s) { - sm.AddTCPServer(s.name, s.level, s.timeout, s.address, s.port); + sm.AddTCPv4Server(s.name, s.level, s.timeout, s.address, s.port); } private void stackBrowser1_OnSerialPortAdded(SerialSettings settings) @@ -72,4 +72,4 @@ private void addNewChartToolStripMenuItem_Click(object sender, EventArgs e) -} \ No newline at end of file +} diff --git a/TestSet/StackHelpers.cpp b/TestSet/StackHelpers.cpp index 6610eef3..9adbce83 100644 --- a/TestSet/StackHelpers.cpp +++ b/TestSet/StackHelpers.cpp @@ -38,7 +38,7 @@ namespace dnp IPhysicalLayerAsync* FGetTerminalPhys(Logger* apLogger, boost::asio::io_service* apSrv, bool aRemote, boost::uint16_t aRemotePort) { - if (aRemote) return PhysicalLayerFactory::FGetTCPServerAsync("0.0.0.0", aRemotePort, apSrv, apLogger); + if (aRemote) return PhysicalLayerFactory::FGetTCPv4ServerAsync("0.0.0.0", aRemotePort, apSrv, apLogger); else return new PhysicalLayerIOStreamAsync(apLogger, apSrv); } diff --git a/XMLBindings/APLXML_Base.cpp b/XMLBindings/APLXML_Base.cpp index f654f63d..09c05f59 100755 --- a/XMLBindings/APLXML_Base.cpp +++ b/XMLBindings/APLXML_Base.cpp @@ -167,21 +167,21 @@ string ToString_StopBitsEnum(StopBitsEnum aValue) { throw apl::Exception(LOCATION, oss.str()); }; -void TCPClient_t :: fromXml(TiXmlNode* pNode){ +void TCPv4Client_t :: fromXml(TiXmlNode* pNode){ if(pNode == NULL)return; - XML_CHECK("TCPClient",pNode->Type() == TiXmlNode::ELEMENT); + XML_CHECK("TCPv4Client",pNode->Type() == TiXmlNode::ELEMENT); TiXmlElement* pEm = pNode->ToElement(); - XML_CHECK("TCPClient",pEm != 0); + XML_CHECK("TCPv4Client",pEm != 0); this->APLXML_Base::PhysicalLayerDescriptor_t::fromXml(pNode); Address = FromString_string(pEm, pEm->Attribute("Address")); Port = FromString_int(pEm, pEm->Attribute("Port")); valid=true; }; -void TCPClient_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid){ +void TCPv4Client_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid){ if(!aIgnoreValid && !valid) return; TiXmlElement * pEm; if(aCreateNode){ - pEm = new TiXmlElement("TCPClient"); + pEm = new TiXmlElement("TCPv4Client"); pParent->LinkEndChild(pEm); }else{ pEm = pParent->ToElement(); @@ -191,21 +191,69 @@ void TCPClient_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreVali pEm->SetAttribute("Port", ToString_int(Port)); }; -void TCPServer_t :: fromXml(TiXmlNode* pNode){ +void TCPv4Server_t :: fromXml(TiXmlNode* pNode){ if(pNode == NULL)return; - XML_CHECK("TCPServer",pNode->Type() == TiXmlNode::ELEMENT); + XML_CHECK("TCPv4Server",pNode->Type() == TiXmlNode::ELEMENT); TiXmlElement* pEm = pNode->ToElement(); - XML_CHECK("TCPServer",pEm != 0); + XML_CHECK("TCPv4Server",pEm != 0); this->APLXML_Base::PhysicalLayerDescriptor_t::fromXml(pNode); Endpoint = FromString_string(pEm, pEm->Attribute("Endpoint")); Port = FromString_int(pEm, pEm->Attribute("Port")); valid=true; }; -void TCPServer_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid){ +void TCPv4Server_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid){ if(!aIgnoreValid && !valid) return; TiXmlElement * pEm; if(aCreateNode){ - pEm = new TiXmlElement("TCPServer"); + pEm = new TiXmlElement("TCPv4Server"); + pParent->LinkEndChild(pEm); + }else{ + pEm = pParent->ToElement(); + } + this->APLXML_Base::PhysicalLayerDescriptor_t::toXml(pEm, false, aIgnoreValid); + pEm->SetAttribute("Endpoint", ToString_string(Endpoint)); + pEm->SetAttribute("Port", ToString_int(Port)); +}; + +void TCPv6Client_t :: fromXml(TiXmlNode* pNode){ + if(pNode == NULL)return; + XML_CHECK("TCPv6Client",pNode->Type() == TiXmlNode::ELEMENT); + TiXmlElement* pEm = pNode->ToElement(); + XML_CHECK("TCPv6Client",pEm != 0); + this->APLXML_Base::PhysicalLayerDescriptor_t::fromXml(pNode); + Address = FromString_string(pEm, pEm->Attribute("Address")); + Port = FromString_int(pEm, pEm->Attribute("Port")); + valid=true; +}; +void TCPv6Client_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid){ + if(!aIgnoreValid && !valid) return; + TiXmlElement * pEm; + if(aCreateNode){ + pEm = new TiXmlElement("TCPv6Client"); + pParent->LinkEndChild(pEm); + }else{ + pEm = pParent->ToElement(); + } + this->APLXML_Base::PhysicalLayerDescriptor_t::toXml(pEm, false, aIgnoreValid); + pEm->SetAttribute("Address", ToString_string(Address)); + pEm->SetAttribute("Port", ToString_int(Port)); +}; + +void TCPv6Server_t :: fromXml(TiXmlNode* pNode){ + if(pNode == NULL)return; + XML_CHECK("TCPv6Server",pNode->Type() == TiXmlNode::ELEMENT); + TiXmlElement* pEm = pNode->ToElement(); + XML_CHECK("TCPv6Server",pEm != 0); + this->APLXML_Base::PhysicalLayerDescriptor_t::fromXml(pNode); + Endpoint = FromString_string(pEm, pEm->Attribute("Endpoint")); + Port = FromString_int(pEm, pEm->Attribute("Port")); + valid=true; +}; +void TCPv6Server_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid){ + if(!aIgnoreValid && !valid) return; + TiXmlElement * pEm; + if(aCreateNode){ + pEm = new TiXmlElement("TCPv6Server"); pParent->LinkEndChild(pEm); }else{ pEm = pParent->ToElement(); @@ -268,21 +316,25 @@ void Serial_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid){ }; PhysicalLayerList_t::PhysicalLayerList_t(): - TCPServer("TCPServer"), TCPServerVector(TCPServer.collection), - TCPClient("TCPClient"), TCPClientVector(TCPClient.collection), + TCPv4Server("TCPv4Server"), TCPv4ServerVector(TCPv4Server.collection), + TCPv4Client("TCPv4Client"), TCPv4ClientVector(TCPv4Client.collection), + TCPv6Server("TCPv6Server"), TCPv6ServerVector(TCPv6Server.collection), + TCPv6Client("TCPv6Client"), TCPv6ClientVector(TCPv6Client.collection), Serial("Serial"), SerialVector(Serial.collection){}; void PhysicalLayerList_t :: fromXml(TiXmlNode* pNode){ if(pNode == NULL)return; XML_CHECK("PhysicalLayerList",pNode->Type() == TiXmlNode::ELEMENT); TiXmlElement* pEm = pNode->ToElement(); XML_CHECK("PhysicalLayerList",pEm != 0); - TCPServer.fromXml(pNode); - TCPClient.fromXml(pNode); + TCPv4Server.fromXml(pNode); + TCPv4Client.fromXml(pNode); + TCPv6Server.fromXml(pNode); + TCPv6Client.fromXml(pNode); Serial.fromXml(pNode); valid=true; }; void PhysicalLayerList_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid){ - if(TCPServer.size() == 0 && TCPClient.size() == 0 && Serial.size() == 0)return; + if(TCPv4Server.size() == 0 && TCPv4Client.size() == 0 && TCPv6Server.size() == 0 && TCPv6Client.size() == 0 && Serial.size() == 0)return; if(!aIgnoreValid && !valid) return; TiXmlElement * pEm; if(aCreateNode){ @@ -291,8 +343,10 @@ void PhysicalLayerList_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIg }else{ pEm = pParent->ToElement(); } - TCPServer.toXml(pEm, true, aIgnoreValid); - TCPClient.toXml(pEm, true, aIgnoreValid); + TCPv4Server.toXml(pEm, true, aIgnoreValid); + TCPv4Client.toXml(pEm, true, aIgnoreValid); + TCPv6Server.toXml(pEm, true, aIgnoreValid); + TCPv6Client.toXml(pEm, true, aIgnoreValid); Serial.toXml(pEm, true, aIgnoreValid); }; diff --git a/XMLBindings/APLXML_Base.h b/XMLBindings/APLXML_Base.h index 42e62a43..d7d2f509 100755 --- a/XMLBindings/APLXML_Base.h +++ b/XMLBindings/APLXML_Base.h @@ -72,20 +72,37 @@ enum StopBitsEnum { StopBitsEnum FromString_StopBitsEnum(TiXmlNode* apParent, const char* aValue); string ToString_StopBitsEnum(StopBitsEnum aValue); -class TCPClient_t : public APLXML_Base::PhysicalLayerDescriptor_t{ +class TCPv4Client_t : public APLXML_Base::PhysicalLayerDescriptor_t{ public: void toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid); void fromXml(TiXmlNode* pNode); string Address; int Port; }; -class TCPServer_t : public APLXML_Base::PhysicalLayerDescriptor_t{ + +class TCPv4Server_t : public APLXML_Base::PhysicalLayerDescriptor_t{ public: void toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid); void fromXml(TiXmlNode* pNode); string Endpoint; int Port; }; + +class TCPv6Client_t : public APLXML_Base::PhysicalLayerDescriptor_t{ +public: + void toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid); + void fromXml(TiXmlNode* pNode); + string Address; + int Port; +}; +class TCPv6Server_t : public APLXML_Base::PhysicalLayerDescriptor_t{ +public: + void toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid); + void fromXml(TiXmlNode* pNode); + string Endpoint; + int Port; +}; + class Log_t : public IXMLDataBound { public: void toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid); @@ -110,12 +127,22 @@ namespace APLXML_Base{ #endif #ifdef SWIG } -%template(TCPClient_c) std::vector; +%template(TCPv4Client_c) std::vector; namespace APLXML_Base{ #endif #ifdef SWIG } -%template(TCPServer_c) std::vector; +%template(TCPv4Server_c) std::vector; +namespace APLXML_Base{ +#endif +#ifdef SWIG +} +%template(TCPv6Client_c) std::vector; +namespace APLXML_Base{ +#endif +#ifdef SWIG +} +%template(TCPv6Server_c) std::vector; namespace APLXML_Base{ #endif class PhysicalLayerList_t : public IXMLDataBound { @@ -125,15 +152,27 @@ class PhysicalLayerList_t : public IXMLDataBound { PhysicalLayerList_t(); #ifdef SWIG -%immutable TCPServerVector; +%immutable TCPv4ServerVector; +#endif + private: collectedType < TCPv4Server_t > TCPv4Server; + public: vector < TCPv4Server_t* >& TCPv4ServerVector; +#ifdef SWIG +%immutable TCPv4ClientVector; #endif - private: collectedType < TCPServer_t > TCPServer; - public: vector < TCPServer_t* >& TCPServerVector; + private: collectedType < TCPv4Client_t > TCPv4Client; + public: vector < TCPv4Client_t* >& TCPv4ClientVector; + #ifdef SWIG -%immutable TCPClientVector; +%immutable TCPv6ServerVector; #endif - private: collectedType < TCPClient_t > TCPClient; - public: vector < TCPClient_t* >& TCPClientVector; + private: collectedType < TCPv6Server_t > TCPv6Server; + public: vector < TCPv6Server_t* >& TCPv6ServerVector; +#ifdef SWIG +%immutable TCPv6ClientVector; +#endif + private: collectedType < TCPv6Client_t > TCPv6Client; + public: vector < TCPv6Client_t* >& TCPv6ClientVector; + #ifdef SWIG %immutable SerialVector; #endif diff --git a/demos/master-cpp/DemoMain.cpp b/demos/master-cpp/DemoMain.cpp index b99b77dc..2d3ec78e 100755 --- a/demos/master-cpp/DemoMain.cpp +++ b/demos/master-cpp/DemoMain.cpp @@ -111,9 +111,9 @@ int main(int argc, char* argv[]) // stacks, as well as their physical layers. AsyncStackManager mgr(log.GetLogger(LOG_LEVEL, "dnp")); - // Connect via a TCPClient socket to a slave. The server will + // Connect via a TCPv4Client socket to a slave. The server will // wait 3000 ms in between failed bind calls. - mgr.AddTCPClient( + mgr.AddTCPv4Client( "tcpclient", PhysLayerSettings(LOG_LEVEL, 3000), remote_ip.c_str(), diff --git a/demos/master-python/master_demo.py b/demos/master-python/master_demo.py index 9260fc7a..9d7001f3 100644 --- a/demos/master-python/master_demo.py +++ b/demos/master-python/master_demo.py @@ -83,7 +83,7 @@ def main(): phys_layer_settings = opendnp3.PhysLayerSettings() stack_manager = opendnp3.StackManager() - stack_manager.AddTCPClient('tcpclient', phys_layer_settings, '127.0.0.1', 4999) + stack_manager.AddTCPv4Client('tcpclient', phys_layer_settings, '127.0.0.1', 4999) master_stack_config = opendnp3.MasterStackConfig() # master_stack_config.master.DoUnsolOnStartup = True diff --git a/demos/slave-cpp/DemoMain.cpp b/demos/slave-cpp/DemoMain.cpp index 46862aa8..382b624a 100755 --- a/demos/slave-cpp/DemoMain.cpp +++ b/demos/slave-cpp/DemoMain.cpp @@ -110,9 +110,9 @@ int main(int argc, char* argv[]) // stacks, as well as their physical layers AsyncStackManager mgr(log.GetLogger(LOG_LEVEL, "dnp")); - // Add a TCPServer to the manager with the name "tcpserver". + // Add a TCPv4Server to the manager with the name "tcpserver". // The server will wait 3000 ms in between failed bind calls. - mgr.AddTCPServer( + mgr.AddTCPv4Server( "tcpserver", PhysLayerSettings(LOG_LEVEL, 3000), local_ip, From ebadb08b8dfa7756ebe373d2cd344efd22628209 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Sat, 14 Jul 2012 02:17:27 -0700 Subject: [PATCH 15/51] Reverted TCPClient and TCPServer tags back for IPv4 support Helps with backwards compatibility of existing testset XML files --- ConfigurationBuilder/APL.xsd | 8 ++++---- DNP3XML/XML_TestSet.cpp | 16 ++++++++-------- XMLBindings/APLXML_Base.cpp | 16 ++++++++-------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/ConfigurationBuilder/APL.xsd b/ConfigurationBuilder/APL.xsd index 6fb360a4..f6696c16 100755 --- a/ConfigurationBuilder/APL.xsd +++ b/ConfigurationBuilder/APL.xsd @@ -5,8 +5,8 @@ - - + + @@ -25,7 +25,7 @@ - + @@ -36,7 +36,7 @@ - + diff --git a/DNP3XML/XML_TestSet.cpp b/DNP3XML/XML_TestSet.cpp index 7acc0698..c418973a 100644 --- a/DNP3XML/XML_TestSet.cpp +++ b/DNP3XML/XML_TestSet.cpp @@ -35,34 +35,34 @@ namespace apl void XML_TestSet::Configure(APLXML_MTS::MasterTestSet_t& arMasterTest, bool aUseUnsol) { - arMasterTest.PhysicalLayer = "tcpv4client"; + arMasterTest.PhysicalLayer = "tcpclient"; arMasterTest.LogFile = "master_testset.log"; arMasterTest.Log.Filter = APLXML_Base::LOG_WARNING; XML_DNP3::Configure(arMasterTest.Master, aUseUnsol); xml::XML_APL::AddSerial(arMasterTest.PhysicalLayerList, "serial", "COM1"); - xml::XML_APL::AddTCPv4Client(arMasterTest.PhysicalLayerList, "tcpv4client", "127.0.0.1", 20000); - xml::XML_APL::AddTCPv4Server(arMasterTest.PhysicalLayerList, "vtov4tunnel", "0.0.0.0", 20001); + xml::XML_APL::AddTCPv4Client(arMasterTest.PhysicalLayerList, "tcpclient", "127.0.0.1", 20000); + xml::XML_APL::AddTCPv4Server(arMasterTest.PhysicalLayerList, "vtotunnel", "0.0.0.0", 20001); xml::XML_APL::AddTCPv6Client(arMasterTest.PhysicalLayerList, "tcpv6client", "::1", 20000); xml::XML_APL::AddTCPv6Server(arMasterTest.PhysicalLayerList, "vtov6tunnel", "::", 20001); - XML_DNP3::AddVtoPort(arMasterTest.Master.VtoPorts, "vtov4tunnel", 0, true); + XML_DNP3::AddVtoPort(arMasterTest.Master.VtoPorts, "vtotunnel", 0, true); } void XML_TestSet::Configure(APLXML_STS::SlaveTestSet_t& arSlaveTest) { - arSlaveTest.PhysicalLayer = "tcpv4server"; + arSlaveTest.PhysicalLayer = "tcpserver"; arSlaveTest.LogFile = "slave_testset.log"; arSlaveTest.Log.Filter = APLXML_Base::LOG_WARNING; XML_DNP3::Configure(arSlaveTest.Slave); xml::XML_APL::AddSerial(arSlaveTest.PhysicalLayerList, "serial", "COM1"); - xml::XML_APL::AddTCPv4Server(arSlaveTest.PhysicalLayerList, "tcpv4server", "0.0.0.0", 20000); - xml::XML_APL::AddTCPv4Client(arSlaveTest.PhysicalLayerList, "vtov4tunnel", "127.0.0.1", 22); + xml::XML_APL::AddTCPv4Server(arSlaveTest.PhysicalLayerList, "tcpserver", "0.0.0.0", 20000); + xml::XML_APL::AddTCPv4Client(arSlaveTest.PhysicalLayerList, "vtotunnel", "127.0.0.1", 22); xml::XML_APL::AddTCPv6Server(arSlaveTest.PhysicalLayerList, "tcpv6server", "::", 20000); xml::XML_APL::AddTCPv6Client(arSlaveTest.PhysicalLayerList, "vtov6tunnel", "::1", 22); - XML_DNP3::AddVtoPort(arSlaveTest.Slave.VtoPorts, "vtov4tunnel", 0, false); + XML_DNP3::AddVtoPort(arSlaveTest.Slave.VtoPorts, "vtotunnel", 0, false); arSlaveTest.Remote = false; arSlaveTest.RemotePort = 4999; diff --git a/XMLBindings/APLXML_Base.cpp b/XMLBindings/APLXML_Base.cpp index 09c05f59..6402800e 100755 --- a/XMLBindings/APLXML_Base.cpp +++ b/XMLBindings/APLXML_Base.cpp @@ -169,9 +169,9 @@ string ToString_StopBitsEnum(StopBitsEnum aValue) { void TCPv4Client_t :: fromXml(TiXmlNode* pNode){ if(pNode == NULL)return; - XML_CHECK("TCPv4Client",pNode->Type() == TiXmlNode::ELEMENT); + XML_CHECK("TCPClient",pNode->Type() == TiXmlNode::ELEMENT); TiXmlElement* pEm = pNode->ToElement(); - XML_CHECK("TCPv4Client",pEm != 0); + XML_CHECK("TCPClient",pEm != 0); this->APLXML_Base::PhysicalLayerDescriptor_t::fromXml(pNode); Address = FromString_string(pEm, pEm->Attribute("Address")); Port = FromString_int(pEm, pEm->Attribute("Port")); @@ -181,7 +181,7 @@ void TCPv4Client_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreVa if(!aIgnoreValid && !valid) return; TiXmlElement * pEm; if(aCreateNode){ - pEm = new TiXmlElement("TCPv4Client"); + pEm = new TiXmlElement("TCPClient"); pParent->LinkEndChild(pEm); }else{ pEm = pParent->ToElement(); @@ -193,9 +193,9 @@ void TCPv4Client_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreVa void TCPv4Server_t :: fromXml(TiXmlNode* pNode){ if(pNode == NULL)return; - XML_CHECK("TCPv4Server",pNode->Type() == TiXmlNode::ELEMENT); + XML_CHECK("TCPServer",pNode->Type() == TiXmlNode::ELEMENT); TiXmlElement* pEm = pNode->ToElement(); - XML_CHECK("TCPv4Server",pEm != 0); + XML_CHECK("TCPServer",pEm != 0); this->APLXML_Base::PhysicalLayerDescriptor_t::fromXml(pNode); Endpoint = FromString_string(pEm, pEm->Attribute("Endpoint")); Port = FromString_int(pEm, pEm->Attribute("Port")); @@ -205,7 +205,7 @@ void TCPv4Server_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreVa if(!aIgnoreValid && !valid) return; TiXmlElement * pEm; if(aCreateNode){ - pEm = new TiXmlElement("TCPv4Server"); + pEm = new TiXmlElement("TCPServer"); pParent->LinkEndChild(pEm); }else{ pEm = pParent->ToElement(); @@ -316,8 +316,8 @@ void Serial_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid){ }; PhysicalLayerList_t::PhysicalLayerList_t(): - TCPv4Server("TCPv4Server"), TCPv4ServerVector(TCPv4Server.collection), - TCPv4Client("TCPv4Client"), TCPv4ClientVector(TCPv4Client.collection), + TCPv4Server("TCPServer"), TCPv4ServerVector(TCPv4Server.collection), + TCPv4Client("TCPClient"), TCPv4ClientVector(TCPv4Client.collection), TCPv6Server("TCPv6Server"), TCPv6ServerVector(TCPv6Server.collection), TCPv6Client("TCPv6Client"), TCPv6ClientVector(TCPv6Client.collection), Serial("Serial"), SerialVector(Serial.collection){}; From 0f7fbb41464de81511637ecc1ecb1c21de7ba177 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Wed, 18 Jul 2012 16:25:38 -0700 Subject: [PATCH 16/51] Added headers for TCPv6* files --- Makefile.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile.am b/Makefile.am index 8f5e7335..d6250b84 100644 --- a/Makefile.am +++ b/Makefile.am @@ -372,6 +372,8 @@ nobase_pkginclude_HEADERS= \ APL/PhysicalLayerAsyncSerial.h \ APL/PhysicalLayerAsyncTCPClient.h \ APL/PhysicalLayerAsyncTCPServer.h \ + APL/PhysicalLayerAsyncTCPv6Client.h \ + APL/PhysicalLayerAsyncTCPv6Server.h \ APL/PhysicalLayerFactory.h \ APL/PhysicalLayerFunctors.h \ APL/PhysicalLayerInstance.h \ From 2a486a8810a4d9f86085186b27da39788a18aaa3 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Mon, 23 Jul 2012 10:40:40 -0700 Subject: [PATCH 17/51] Added missing APL/AsyncResult.h to installed headers --- Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.am b/Makefile.am index d6250b84..3ac52f85 100644 --- a/Makefile.am +++ b/Makefile.am @@ -304,6 +304,7 @@ nobase_pkginclude_HEADERS= \ version.hpp \ APL/ASIOSerialHelpers.h \ APL/AsyncLayerInterfaces.h \ + APL/AsyncResult.h \ APL/AsyncTaskBase.h \ APL/AsyncTaskContinuous.h \ APL/AsyncTaskGroup.h \ From 21f73f757bb6523319de67ea696b9e95415f157f Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Mon, 23 Jul 2012 10:52:24 -0700 Subject: [PATCH 18/51] Added missing TCPv4/v6 headers to installed headers list --- Makefile.am | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Makefile.am b/Makefile.am index 3ac52f85..e7042031 100644 --- a/Makefile.am +++ b/Makefile.am @@ -63,6 +63,10 @@ libopendnp3_la_SOURCES = \ APL/PhysicalLayerAsyncSerial.cpp \ APL/PhysicalLayerAsyncTCPClient.cpp \ APL/PhysicalLayerAsyncTCPServer.cpp \ + APL/PhysicalLayerAsyncTCPv4Client.cpp \ + APL/PhysicalLayerAsyncTCPv4Server.cpp \ + APL/PhysicalLayerAsyncTCPv6Client.cpp \ + APL/PhysicalLayerAsyncTCPv6Server.cpp \ APL/PhysicalLayerFactory.cpp \ APL/PhysicalLayerInstance.cpp \ APL/PhysicalLayerManager.cpp \ @@ -373,6 +377,8 @@ nobase_pkginclude_HEADERS= \ APL/PhysicalLayerAsyncSerial.h \ APL/PhysicalLayerAsyncTCPClient.h \ APL/PhysicalLayerAsyncTCPServer.h \ + APL/PhysicalLayerAsyncTCPv4Client.h \ + APL/PhysicalLayerAsyncTCPv4Server.h \ APL/PhysicalLayerAsyncTCPv6Client.h \ APL/PhysicalLayerAsyncTCPv6Server.h \ APL/PhysicalLayerFactory.h \ From ef36d81328c60b3179aa724169472e7642bfa0c2 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Mon, 23 Jul 2012 11:04:31 -0700 Subject: [PATCH 19/51] Removed bad copy/paste mistake in Makefile.am --- Makefile.am | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Makefile.am b/Makefile.am index e7042031..b7cfe5f0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -63,10 +63,6 @@ libopendnp3_la_SOURCES = \ APL/PhysicalLayerAsyncSerial.cpp \ APL/PhysicalLayerAsyncTCPClient.cpp \ APL/PhysicalLayerAsyncTCPServer.cpp \ - APL/PhysicalLayerAsyncTCPv4Client.cpp \ - APL/PhysicalLayerAsyncTCPv4Server.cpp \ - APL/PhysicalLayerAsyncTCPv6Client.cpp \ - APL/PhysicalLayerAsyncTCPv6Server.cpp \ APL/PhysicalLayerFactory.cpp \ APL/PhysicalLayerInstance.cpp \ APL/PhysicalLayerManager.cpp \ From a7a29490bb81cc934a358c6eb1eee77bccdf6830 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Mon, 23 Jul 2012 11:13:14 -0700 Subject: [PATCH 20/51] Added missing APL/RandomDouble.h to Makefile.am --- Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.am b/Makefile.am index b7cfe5f0..00ecb747 100644 --- a/Makefile.am +++ b/Makefile.am @@ -394,6 +394,7 @@ nobase_pkginclude_HEADERS= \ APL/QualityMasks.h \ APL/QueueingFDO.h \ APL/Random.h \ + APL/RandomDouble.h \ APL/RandomizedBuffer.h \ APL/SerialTypes.h \ APL/ShiftableBuffer.h \ From 322be8e34639e9421204c465e869b8c0aeb54ef0 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Tue, 7 Aug 2012 15:43:10 -0700 Subject: [PATCH 21/51] Fix for 'malformed packet' during session startup https://groups.google.com/forum/?fromgroups#!topic/open-dnp3/rtNNgu_2Wxc%5B1-25%5D --- DNP3/StartupTasks.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DNP3/StartupTasks.cpp b/DNP3/StartupTasks.cpp index cb438f0b..38dced71 100644 --- a/DNP3/StartupTasks.cpp +++ b/DNP3/StartupTasks.cpp @@ -59,7 +59,7 @@ void ConfigureUnsol::Set(bool aIsEnable, int aClassMask) void ConfigureUnsol::ConfigureRequest(APDU& arAPDU) { - arAPDU.Set(mIsEnable ? FC_ENABLE_UNSOLICITED : FC_DISABLE_UNSOLICITED); + arAPDU.Set((mIsEnable && mClassMask != 0) ? FC_ENABLE_UNSOLICITED : FC_DISABLE_UNSOLICITED); if(mClassMask & PC_CLASS_1) arAPDU.DoPlaceholderWrite(Group60Var2::Inst()); if(mClassMask & PC_CLASS_2) arAPDU.DoPlaceholderWrite(Group60Var3::Inst()); if(mClassMask & PC_CLASS_3) arAPDU.DoPlaceholderWrite(Group60Var4::Inst()); From 462628897f02d7549065e729a90e06a35c4fbfa8 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Tue, 7 Aug 2012 15:43:10 -0700 Subject: [PATCH 22/51] Fix for 'malformed packet' during session startup https://groups.google.com/forum/?fromgroups#!topic/open-dnp3/rtNNgu_2Wxc%5B1-25%5D --- DNP3/StartupTasks.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/DNP3/StartupTasks.cpp b/DNP3/StartupTasks.cpp index cb438f0b..6a2a10f7 100644 --- a/DNP3/StartupTasks.cpp +++ b/DNP3/StartupTasks.cpp @@ -59,10 +59,20 @@ void ConfigureUnsol::Set(bool aIsEnable, int aClassMask) void ConfigureUnsol::ConfigureRequest(APDU& arAPDU) { - arAPDU.Set(mIsEnable ? FC_ENABLE_UNSOLICITED : FC_DISABLE_UNSOLICITED); - if(mClassMask & PC_CLASS_1) arAPDU.DoPlaceholderWrite(Group60Var2::Inst()); - if(mClassMask & PC_CLASS_2) arAPDU.DoPlaceholderWrite(Group60Var3::Inst()); - if(mClassMask & PC_CLASS_3) arAPDU.DoPlaceholderWrite(Group60Var4::Inst()); + if (mClassMask == 0 || !mIsEnable) { + arAPDU.Set(FC_DISABLE_UNSOLICITED); + arAPDU.DoPlaceholderWrite(Group60Var2::Inst()); + arAPDU.DoPlaceholderWrite(Group60Var3::Inst()); + arAPDU.DoPlaceholderWrite(Group60Var4::Inst()); + } else { + arAPDU.Set(FC_ENABLE_UNSOLICITED); + if (mClassMask & PC_CLASS_1) + arAPDU.DoPlaceholderWrite(Group60Var2::Inst()); + if (mClassMask & PC_CLASS_2) + arAPDU.DoPlaceholderWrite(Group60Var3::Inst()); + if (mClassMask & PC_CLASS_3) + arAPDU.DoPlaceholderWrite(Group60Var4::Inst()); + } } From a717319fd54cb13197cdde4f0dbe9224d07921e8 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Tue, 11 Sep 2012 01:20:21 -0700 Subject: [PATCH 23/51] Readded backwards compatible AddTCP[Client|Server] API --- DNP3/AsyncStackManager.cpp | 10 ++++++++++ DNP3/AsyncStackManager.h | 2 ++ DNP3/StackManager.cpp | 10 ++++++++++ DNP3/StackManager.h | 10 ++++++++++ 4 files changed, 32 insertions(+) diff --git a/DNP3/AsyncStackManager.cpp b/DNP3/AsyncStackManager.cpp index c5c4d121..d6bf61c3 100644 --- a/DNP3/AsyncStackManager.cpp +++ b/DNP3/AsyncStackManager.cpp @@ -83,12 +83,22 @@ std::vector AsyncStackManager::GetPortNames() return GetKeys(mChannelNameToChannel); } +void AsyncStackManager::AddTCPClient(const std::string& arName, PhysLayerSettings aSettings, const std::string& arAddr, boost::uint16_t aPort) +{ + AddTCPv4Client(arName, aSettings, arAddr, aPort); +} + void AsyncStackManager::AddTCPv4Client(const std::string& arName, PhysLayerSettings aSettings, const std::string& arAddr, boost::uint16_t aPort) { this->ThrowIfAlreadyShutdown(); mMgr.AddTCPv4Client(arName, aSettings, arAddr, aPort); } +void AsyncStackManager::AddTCPServer(const std::string& arName, PhysLayerSettings aSettings, const std::string& arEndpoint, boost::uint16_t aPort) +{ + AddTCPv4Server(arName, aSettings, arEndpoint, aPort); +} + void AsyncStackManager::AddTCPv4Server(const std::string& arName, PhysLayerSettings aSettings, const std::string& arEndpoint, boost::uint16_t aPort) { this->ThrowIfAlreadyShutdown(); diff --git a/DNP3/AsyncStackManager.h b/DNP3/AsyncStackManager.h index 980c489f..45b387de 100644 --- a/DNP3/AsyncStackManager.h +++ b/DNP3/AsyncStackManager.h @@ -77,9 +77,11 @@ class AsyncStackManager : private Threadable, private Loggable // All the io_service marshalling now occurs here. It's now safe to add/remove while the manager is running. // Adds a TCPv4Client port, excepts if the port already exists + void AddTCPClient(const std::string& arName, PhysLayerSettings, const std::string& arAddr, boost::uint16_t aPort); void AddTCPv4Client(const std::string& arName, PhysLayerSettings, const std::string& arAddr, boost::uint16_t aPort); // Adds a TCPv4Server port, excepts if the port already exists + void AddTCPServer(const std::string& arName, PhysLayerSettings, const std::string& arEndpoint, boost::uint16_t aPort); void AddTCPv4Server(const std::string& arName, PhysLayerSettings, const std::string& arEndpoint, boost::uint16_t aPort); // Adds a TCPv6Client port, excepts if the port already exists diff --git a/DNP3/StackManager.cpp b/DNP3/StackManager.cpp index 2c818465..f2c28b78 100644 --- a/DNP3/StackManager.cpp +++ b/DNP3/StackManager.cpp @@ -42,11 +42,21 @@ StackManager::~StackManager() } //used for defining ports +void StackManager::AddTCPClient(const std::string& arName, PhysLayerSettings s, const std::string& arAddr, boost::uint16_t aPort) +{ + AddTCPv4Client(arName, s, arAddr, aPort); +} + void StackManager::AddTCPv4Client(const std::string& arName, PhysLayerSettings s, const std::string& arAddr, boost::uint16_t aPort) { mpImpl->AddTCPv4Client(arName, s, arAddr, aPort); } +void StackManager::AddTCPServer(const std::string& arName, PhysLayerSettings s, const std::string& arEndpoint, boost::uint16_t aPort) +{ + AddTCPv4Server(arName, s, arEndpoint, aPort); +} + void StackManager::AddTCPv4Server(const std::string& arName, PhysLayerSettings s, const std::string& arEndpoint, boost::uint16_t aPort) { mpImpl->AddTCPv4Server(arName, s, arEndpoint, aPort); diff --git a/DNP3/StackManager.h b/DNP3/StackManager.h index d86d97d0..c06fd18b 100644 --- a/DNP3/StackManager.h +++ b/DNP3/StackManager.h @@ -55,11 +55,21 @@ class StackManager StackManager(); ~StackManager(); + void AddTCPClient(const std::string& arName, + PhysLayerSettings aPhys, + const std::string& arAddr, + boost::uint16_t aPort); + void AddTCPv4Client(const std::string& arName, PhysLayerSettings aPhys, const std::string& arAddr, boost::uint16_t aPort); + void AddTCPServer(const std::string& arName, + PhysLayerSettings aPhys, + const std::string& arEndpoint, + boost::uint16_t aPort); + void AddTCPv4Server(const std::string& arName, PhysLayerSettings aPhys, const std::string& arEndpoint, From b424753aee1ab8bae5ac9f5479b654148c3ea80b Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Tue, 11 Sep 2012 13:57:11 -0700 Subject: [PATCH 24/51] Refactored directory organization --- APLTestTools/AsyncPhysTestObject.h | 6 +- APLTestTools/AsyncTestObject.cpp | 2 +- APLTestTools/AsyncTestObjectASIO.cpp | 6 +- APLTestTools/BufferHelpers.cpp | 4 +- APLTestTools/BufferHelpers.h | 2 +- APLTestTools/BufferTestObject.cpp | 2 +- APLTestTools/BufferTestObject.h | 2 +- APLTestTools/FanoutDataObserver.h | 2 +- APLTestTools/LogTester.cpp | 2 +- APLTestTools/LogTester.h | 2 +- APLTestTools/LoopbackPhysicalLayerAsync.cpp | 2 +- APLTestTools/LoopbackPhysicalLayerAsync.h | 4 +- APLTestTools/MockCommandAcceptor.h | 4 +- APLTestTools/MockCommandHandler.h | 2 +- APLTestTools/MockLogSubscriber.h | 2 +- APLTestTools/MockLowerLayer.h | 2 +- APLTestTools/MockNodeSaver.h | 2 +- APLTestTools/MockNotifier.h | 2 +- APLTestTools/MockPhysicalLayerAsync.cpp | 2 +- APLTestTools/MockPhysicalLayerAsync.h | 4 +- APLTestTools/MockPhysicalLayerAsyncTS.cpp | 2 +- APLTestTools/MockPhysicalLayerAsyncTS.h | 6 +- APLTestTools/MockPhysicalLayerMonitor.cpp | 8 +- APLTestTools/MockPhysicalLayerMonitor.h | 4 +- APLTestTools/MockPhysicalLayerSource.cpp | 4 +- APLTestTools/MockPhysicalLayerSource.h | 4 +- APLTestTools/MockResponseAcceptor.h | 8 +- APLTestTools/MockTimerSource.h | 2 +- APLTestTools/MockUpperLayer.cpp | 4 +- APLTestTools/MockUpperLayer.h | 2 +- APLTestTools/PhysicalLayerWrapper.cpp | 2 +- APLTestTools/PhysicalLayerWrapper.h | 8 +- APLTestTools/PhysicalLayerWrapperFactory.h | 9 +- APLTestTools/TestTypedefs.h | 2 +- APLTestTools/WrappedTcpPipe.cpp | 2 +- APLTestTools/WrappedTcpPipe.h | 4 +- APLXML/PhysicalLayerManagerXML.cpp | 2 +- APLXML/PhysicalLayerManagerXML.h | 2 +- APLXML/PhysicalLayerXMLFactory.cpp | 2 +- APLXML/PhysicalLayerXMLFactory.h | 4 +- APLXML/SingleNodeSaver.h | 2 +- APLXML/XMLConversion.h | 2 +- APLXML/tinybinding.h | 8 +- DNP3Java/ExtractFromJAR.java | 0 DNP3Java/JavaDNP3.i | 72 +- DNP3Java/TestBinding.java | 0 DNP3Test/AppLayerTest.h | 2 +- DNP3Test/ComparingDataObserver.cpp | 0 DNP3Test/ComparingDataObserver.h | 10 +- DNP3Test/DNPHelpers.cpp | 6 +- DNP3Test/DatabaseTestObject.h | 4 +- DNP3Test/IntegrationTest.cpp | 12 +- DNP3Test/IntegrationTest.h | 8 +- DNP3Test/LinkLayerRouterTest.h | 2 +- DNP3Test/LinkLayerTest.h | 4 +- DNP3Test/LinkReceiverTest.h | 2 +- DNP3Test/MasterTestObject.cpp | 2 +- DNP3Test/MasterTestObject.h | 6 +- DNP3Test/MockAppLayer.cpp | 4 +- DNP3Test/MockAppLayer.h | 8 +- DNP3Test/MockAppUser.h | 2 +- DNP3Test/MockFrameSink.h | 4 +- DNP3Test/QueueingStackObserver.h | 2 +- DNP3Test/ReadableVtoWriter.h | 4 +- DNP3Test/ResponseLoaderTestObject.cpp | 4 +- DNP3Test/ResponseLoaderTestObject.h | 6 +- DNP3Test/SlaveTestObject.cpp | 2 +- DNP3Test/SlaveTestObject.h | 10 +- DNP3Test/StartupTeardownTest.cpp | 6 +- DNP3Test/StartupTeardownTest.h | 6 +- DNP3Test/TestAPDU.cpp | 10 +- DNP3Test/TestAPDUWriting.cpp | 18 +- DNP3Test/TestAppLayer.cpp | 2 +- DNP3Test/TestCRC.cpp | 2 +- DNP3Test/TestEnhancedVtoRouter.cpp | 12 +- DNP3Test/TestEventBufferBase.cpp | 2 +- DNP3Test/TestEventBuffers.cpp | 6 +- DNP3Test/TestIntegration.cpp | 4 +- DNP3Test/TestLinkFrameDNP.cpp | 4 +- DNP3Test/TestLinkLayer.cpp | 4 +- DNP3Test/TestLinkLayerRouter.cpp | 6 +- DNP3Test/TestLinkRoute.cpp | 2 +- DNP3Test/TestMaster.cpp | 4 +- DNP3Test/TestObjects.cpp | 2 +- DNP3Test/TestSlave.cpp | 8 +- DNP3Test/TestSlaveEventBuffer.cpp | 8 +- DNP3Test/TestStackManager.cpp | 2 +- DNP3Test/TestTransportLayer.cpp | 8 +- DNP3Test/TestTransportLoopback.cpp | 8 +- DNP3Test/TestTransportScalability.cpp | 4 +- DNP3Test/TestVtoInterface.cpp | 20 +- DNP3Test/TestVtoLoopbackIntegration.cpp | 4 +- DNP3Test/TestVtoOnewayIntegration.cpp | 2 +- DNP3Test/TestVtoRouter.cpp | 8 +- DNP3Test/TestVtoRouterManager.cpp | 12 +- DNP3Test/TestVtoWriter.cpp | 6 +- DNP3Test/TransportIntegrationStack.cpp | 2 +- DNP3Test/TransportIntegrationStack.h | 6 +- DNP3Test/TransportLoopbackTestObject.cpp | 2 +- DNP3Test/TransportLoopbackTestObject.h | 8 +- DNP3Test/TransportScalabilityTestObject.h | 2 +- DNP3Test/TransportStackPair.cpp | 2 +- DNP3Test/TransportStackPair.h | 6 +- DNP3Test/TransportTestObject.cpp | 2 +- DNP3Test/TransportTestObject.h | 4 +- DNP3Test/VtoIntegrationTestBase.cpp | 8 +- DNP3Test/VtoIntegrationTestBase.h | 12 +- DNP3XML/XML_DNP3.cpp | 12 +- DNP3XML/XmlToConfig.cpp | 20 +- DNP3XML/XmlToConfig.h | 9 +- Makefile.am | 720 +++++++++--------- Terminal/ControlResponseTE.cpp | 6 +- Terminal/ControlResponseTE.h | 8 +- Terminal/ControlTerminalExtension.cpp | 12 +- Terminal/ControlTerminalExtension.h | 4 +- Terminal/DOTerminalExtension.cpp | 6 +- Terminal/DOTerminalExtension.h | 6 +- .../FlexibleObserverTerminalExtension.cpp | 12 +- Terminal/FlexibleObserverTerminalExtension.h | 6 +- Terminal/LineReader.cpp | 2 +- Terminal/LineReader.h | 6 +- Terminal/LogTerminalExtension.cpp | 4 +- Terminal/LogTerminalExtension.h | 6 +- Terminal/PhysicalLayerIOStreamAsync.cpp | 0 Terminal/PhysicalLayerIOStreamAsync.h | 0 Terminal/PhysicalLayerSyncProxy.cpp | 0 Terminal/PhysicalLayerSyncProxy.h | 8 +- Terminal/Terminal.cpp | 12 +- Terminal/Terminal.h | 4 +- Terminal/TerminalInterfaces.cpp | 0 Terminal/TerminalInterfaces.h | 6 +- Terminal/TokenNode.h | 0 TerminalTest/TestPhysicalLayerSyncProxy.cpp | 4 +- TerminalTest/TestTerminal.cpp | 6 +- TestAPL/AsyncPhysBaseTest.h | 2 +- TestAPL/AsyncSerialTestObject.h | 4 +- TestAPL/TestASIO.cpp | 4 +- TestAPL/TestAsyncTask.cpp | 12 +- TestAPL/TestCastLongLongDouble.cpp | 4 +- TestAPL/TestCommandQueue.cpp | 2 +- TestAPL/TestCommandTypes.cpp | 2 +- TestAPL/TestLocks.cpp | 8 +- TestAPL/TestLog.cpp | 6 +- TestAPL/TestMisc.cpp | 4 +- TestAPL/TestPackingUnpacking.cpp | 6 +- TestAPL/TestParsing.cpp | 2 +- TestAPL/TestPhysicalLayerAsyncBase.cpp | 2 +- TestAPL/TestPhysicalLayerAsyncSerial.cpp | 6 +- TestAPL/TestPhysicalLayerAsyncTCP.cpp | 12 +- TestAPL/TestPhysicalLayerLoopback.cpp | 4 +- TestAPL/TestPhysicalLayerMonitor.cpp | 8 +- TestAPL/TestQualityMasks.cpp | 4 +- TestAPL/TestShiftableBuffer.cpp | 4 +- TestAPL/TestSyncVar.cpp | 6 +- TestAPL/TestThreading.cpp | 10 +- TestAPL/TestTime.cpp | 16 +- TestAPL/TestTimers.cpp | 8 +- TestAPL/TestTypes.cpp | 2 +- TestAPL/TestUtil.cpp | 2 +- TestAPL/TestXmlBinding.cpp | 4 +- TestSet/AddressScanner.cpp | 2 +- TestSet/AddressScanner.h | 16 +- TestSet/StackHelpers.cpp | 8 +- TestSet/StackHelpers.h | 20 +- TestSet/main.cpp | 2 +- XMLBindings/APLXML_Base.cpp | 0 XMLBindings/APLXML_Base.h | 0 XMLBindings/APLXML_DNP.cpp | 0 XMLBindings/APLXML_DNP.h | 0 XMLBindings/APLXML_MTS.cpp | 0 XMLBindings/APLXML_MTS.h | 0 XMLBindings/APLXML_STS.cpp | 0 XMLBindings/APLXML_STS.h | 0 demos/master-cpp/DemoMain.cpp | 4 +- demos/master-cpp/MasterDemo.h | 28 +- demos/slave-cpp/DemoMain.cpp | 4 +- demos/slave-cpp/SlaveDemo.h | 26 +- {APL => opendnp3/APL}/APL.vcxproj | 0 {APL => opendnp3/APL}/APL.vcxproj.filters | 0 {APL => opendnp3/APL}/ASIOSerialHelpers.cpp | 7 +- {APL => opendnp3/APL}/ASIOSerialHelpers.h | 4 +- .../APL}/AsyncLayerInterfaces.cpp | 10 +- {APL => opendnp3/APL}/AsyncLayerInterfaces.h | 6 +- {APL => opendnp3/APL}/AsyncResult.cpp | 6 +- {APL => opendnp3/APL}/AsyncResult.h | 8 +- {APL => opendnp3/APL}/AsyncTaskBase.cpp | 8 +- {APL => opendnp3/APL}/AsyncTaskBase.h | 9 +- {APL => opendnp3/APL}/AsyncTaskContinuous.cpp | 7 +- {APL => opendnp3/APL}/AsyncTaskContinuous.h | 4 +- {APL => opendnp3/APL}/AsyncTaskGroup.cpp | 20 +- {APL => opendnp3/APL}/AsyncTaskGroup.h | 11 +- {APL => opendnp3/APL}/AsyncTaskInterfaces.h | 0 .../APL}/AsyncTaskNonPeriodic.cpp | 5 +- {APL => opendnp3/APL}/AsyncTaskNonPeriodic.h | 10 +- {APL => opendnp3/APL}/AsyncTaskPeriodic.cpp | 5 +- {APL => opendnp3/APL}/AsyncTaskPeriodic.h | 11 +- {APL => opendnp3/APL}/AsyncTaskScheduler.cpp | 12 +- {APL => opendnp3/APL}/AsyncTaskScheduler.h | 7 +- {APL => opendnp3/APL}/BaseDataTypes.cpp | 7 +- {APL => opendnp3/APL}/BaseDataTypes.h | 11 +- {APL => opendnp3/APL}/BoundNotifier.h | 3 +- {APL => opendnp3/APL}/CRC.cpp | 2 +- {APL => opendnp3/APL}/CRC.h | 3 +- {APL => opendnp3/APL}/CachedLogVariable.h | 6 +- {APL => opendnp3/APL}/ChangeBuffer.h | 10 +- {APL => opendnp3/APL}/CommandInterfaces.h | 6 +- {APL => opendnp3/APL}/CommandManager.cpp | 7 +- {APL => opendnp3/APL}/CommandManager.h | 7 +- {APL => opendnp3/APL}/CommandQueue.cpp | 3 +- {APL => opendnp3/APL}/CommandQueue.h | 9 +- .../APL}/CommandResponseQueue.cpp | 5 +- {APL => opendnp3/APL}/CommandResponseQueue.h | 8 +- {APL => opendnp3/APL}/CommandTypes.cpp | 6 +- {APL => opendnp3/APL}/CommandTypes.h | 5 +- {APL => opendnp3/APL}/Configure.h | 0 {APL => opendnp3/APL}/CopyableBuffer.cpp | 5 +- {APL => opendnp3/APL}/CopyableBuffer.h | 5 +- {APL => opendnp3/APL}/DataInterfaces.h | 5 +- {APL => opendnp3/APL}/DataTypes.h | 2 +- {APL => opendnp3/APL}/DeleteAny.h | 0 {APL => opendnp3/APL}/EventLock.cpp | 4 +- {APL => opendnp3/APL}/EventLock.h | 6 +- {APL => opendnp3/APL}/EventLockBase.h | 8 +- {APL => opendnp3/APL}/EventSet.h | 2 +- {APL => opendnp3/APL}/Exception.cpp | 2 +- {APL => opendnp3/APL}/Exception.h | 4 +- .../APL}/FlexibleDataObserver.cpp | 4 +- {APL => opendnp3/APL}/FlexibleDataObserver.h | 8 +- {APL => opendnp3/APL}/Function.h | 0 {APL => opendnp3/APL}/GetKeys.h | 0 {APL => opendnp3/APL}/IEventLock.h | 0 {APL => opendnp3/APL}/IHandlerAsync.cpp | 2 +- {APL => opendnp3/APL}/IHandlerAsync.h | 2 +- {APL => opendnp3/APL}/INotifier.h | 0 {APL => opendnp3/APL}/IOService.cpp | 3 +- {APL => opendnp3/APL}/IOService.h | 0 {APL => opendnp3/APL}/IOServiceThread.cpp | 7 +- {APL => opendnp3/APL}/IOServiceThread.h | 6 +- {APL => opendnp3/APL}/IPhysicalLayerAsync.h | 2 +- .../APL}/IPhysicalLayerObserver.h | 4 +- {APL => opendnp3/APL}/IPhysicalLayerSource.h | 0 {APL => opendnp3/APL}/ISubject.h | 0 {APL => opendnp3/APL}/ITimeSource.h | 2 +- {APL => opendnp3/APL}/ITimer.h | 0 {APL => opendnp3/APL}/ITimerSource.cpp | 2 +- {APL => opendnp3/APL}/ITimerSource.h | 12 +- {APL => opendnp3/APL}/ITransactable.h | 0 {APL => opendnp3/APL}/Lock.h | 2 +- {APL => opendnp3/APL}/LockBase.cpp | 2 +- {APL => opendnp3/APL}/LockBase.h | 8 +- {APL => opendnp3/APL}/LockBoost.cpp | 2 +- {APL => opendnp3/APL}/LockBoost.h | 7 +- {APL => opendnp3/APL}/Log.cpp | 9 +- {APL => opendnp3/APL}/Log.h | 14 +- {APL => opendnp3/APL}/LogBase.h | 2 +- {APL => opendnp3/APL}/LogEntry.cpp | 7 +- {APL => opendnp3/APL}/LogEntry.h | 8 +- .../APL}/LogEntryCircularBuffer.cpp | 3 +- .../APL}/LogEntryCircularBuffer.h | 11 +- {APL => opendnp3/APL}/LogToFile.cpp | 7 +- {APL => opendnp3/APL}/LogToFile.h | 12 +- {APL => opendnp3/APL}/LogToStdio.cpp | 4 +- {APL => opendnp3/APL}/LogToStdio.h | 4 +- {APL => opendnp3/APL}/LogTypes.cpp | 4 +- {APL => opendnp3/APL}/LogTypes.h | 0 {APL => opendnp3/APL}/LogVar.h | 1 - {APL => opendnp3/APL}/Loggable.cpp | 7 +- {APL => opendnp3/APL}/Loggable.h | 5 +- {APL => opendnp3/APL}/Logger.cpp | 7 +- {APL => opendnp3/APL}/Logger.h | 12 +- .../APL}/LowerLayerToPhysAdapter.cpp | 6 +- .../APL}/LowerLayerToPhysAdapter.h | 5 +- {APL => opendnp3/APL}/MetricBuffer.cpp | 3 +- {APL => opendnp3/APL}/MetricBuffer.h | 10 +- .../APL}/MultiplexingDataObserver.cpp | 2 +- .../APL}/MultiplexingDataObserver.h | 4 +- {APL => opendnp3/APL}/Notifier.h | 4 +- {APL => opendnp3/APL}/PackingTemplates.h | 2 +- {APL => opendnp3/APL}/PackingUnpacking.cpp | 7 +- {APL => opendnp3/APL}/PackingUnpacking.h | 6 +- {APL => opendnp3/APL}/Parsing.cpp | 4 +- {APL => opendnp3/APL}/Parsing.h | 5 +- {APL => opendnp3/APL}/PhysLayerSettings.h | 4 +- {APL => opendnp3/APL}/PhysLoopback.cpp | 7 +- {APL => opendnp3/APL}/PhysLoopback.h | 4 +- .../APL}/PhysicalLayerAsyncASIO.h | 2 +- .../APL}/PhysicalLayerAsyncBase.cpp | 10 +- .../APL}/PhysicalLayerAsyncBase.h | 4 +- .../APL}/PhysicalLayerAsyncBaseTCP.cpp | 13 +- .../APL}/PhysicalLayerAsyncBaseTCP.h | 3 +- .../APL}/PhysicalLayerAsyncSerial.cpp | 13 +- .../APL}/PhysicalLayerAsyncSerial.h | 6 +- .../APL}/PhysicalLayerAsyncTCPClient.cpp | 10 +- .../APL}/PhysicalLayerAsyncTCPClient.h | 4 +- .../APL}/PhysicalLayerAsyncTCPServer.cpp | 10 +- .../APL}/PhysicalLayerAsyncTCPServer.h | 4 +- .../APL}/PhysicalLayerAsyncTCPv4Client.h | 4 +- .../APL}/PhysicalLayerAsyncTCPv4Server.h | 4 +- .../APL}/PhysicalLayerAsyncTCPv6Client.h | 4 +- .../APL}/PhysicalLayerAsyncTCPv6Server.h | 4 +- .../APL}/PhysicalLayerFactory.cpp | 16 +- {APL => opendnp3/APL}/PhysicalLayerFactory.h | 9 +- {APL => opendnp3/APL}/PhysicalLayerFunctors.h | 0 .../APL}/PhysicalLayerInstance.cpp | 9 +- {APL => opendnp3/APL}/PhysicalLayerInstance.h | 7 +- .../APL}/PhysicalLayerManager.cpp | 13 +- {APL => opendnp3/APL}/PhysicalLayerManager.h | 6 +- {APL => opendnp3/APL}/PhysicalLayerMap.cpp | 11 +- {APL => opendnp3/APL}/PhysicalLayerMap.h | 14 +- .../APL}/PhysicalLayerMonitor.cpp | 11 +- {APL => opendnp3/APL}/PhysicalLayerMonitor.h | 10 +- .../APL}/PhysicalLayerMonitorStates.cpp | 9 +- .../APL}/PhysicalLayerMonitorStates.h | 6 +- {APL => opendnp3/APL}/PhysicalLayerStates.cpp | 3 +- {APL => opendnp3/APL}/PhysicalLayerStates.h | 3 +- {APL => opendnp3/APL}/PostingNotifier.cpp | 2 +- {APL => opendnp3/APL}/PostingNotifier.h | 4 +- .../APL}/PostingNotifierSource.cpp | 4 +- {APL => opendnp3/APL}/PostingNotifierSource.h | 4 +- {APL => opendnp3/APL}/ProtocolUtil.cpp | 2 +- {APL => opendnp3/APL}/ProtocolUtil.h | 1 - {APL => opendnp3/APL}/QualityConverter.cpp | 2 +- {APL => opendnp3/APL}/QualityConverter.h | 6 +- {APL => opendnp3/APL}/QualityMasks.h | 0 {APL => opendnp3/APL}/QueueingFDO.h | 13 +- {APL => opendnp3/APL}/Random.h | 0 {APL => opendnp3/APL}/RandomDouble.h | 2 +- {APL => opendnp3/APL}/RandomizedBuffer.cpp | 2 +- {APL => opendnp3/APL}/RandomizedBuffer.h | 4 +- {APL => opendnp3/APL}/SerialTypes.h | 0 {APL => opendnp3/APL}/ShiftableBuffer.cpp | 5 +- {APL => opendnp3/APL}/ShiftableBuffer.h | 2 +- {APL => opendnp3/APL}/Singleton.h | 0 {APL => opendnp3/APL}/SubjectBase.h | 6 +- {APL => opendnp3/APL}/SuspendTimerSource.cpp | 5 +- {APL => opendnp3/APL}/SuspendTimerSource.h | 4 +- {APL => opendnp3/APL}/SyncVar.h | 7 +- {APL => opendnp3/APL}/Thread.h | 8 +- {APL => opendnp3/APL}/ThreadBase.cpp | 3 +- {APL => opendnp3/APL}/ThreadBase.h | 3 +- {APL => opendnp3/APL}/ThreadBoost.cpp | 4 +- {APL => opendnp3/APL}/ThreadBoost.h | 5 +- {APL => opendnp3/APL}/Threadable.cpp | 2 +- {APL => opendnp3/APL}/Threadable.h | 0 {APL => opendnp3/APL}/TimeBase.cpp | 3 +- {APL => opendnp3/APL}/TimeBase.h | 5 +- {APL => opendnp3/APL}/TimeBoost.cpp | 5 +- {APL => opendnp3/APL}/TimeBoost.h | 8 +- {APL => opendnp3/APL}/TimeSource.cpp | 5 +- {APL => opendnp3/APL}/TimeSource.h | 6 +- {APL => opendnp3/APL}/TimeTypes.h | 2 +- {APL => opendnp3/APL}/Timeout.cpp | 2 +- {APL => opendnp3/APL}/Timeout.h | 4 +- {APL => opendnp3/APL}/TimerASIO.cpp | 2 +- {APL => opendnp3/APL}/TimerASIO.h | 2 +- {APL => opendnp3/APL}/TimerSourceASIO.cpp | 9 +- {APL => opendnp3/APL}/TimerSourceASIO.h | 6 +- {APL => opendnp3/APL}/TimingTools.cpp | 3 +- {APL => opendnp3/APL}/TimingTools.h | 8 +- {APL => opendnp3/APL}/ToHex.cpp | 4 +- {APL => opendnp3/APL}/ToHex.h | 5 +- {APL => opendnp3/APL}/TrackingTaskGroup.cpp | 7 +- {APL => opendnp3/APL}/TrackingTaskGroup.h | 11 +- {APL => opendnp3/APL}/Types.h | 0 {APL => opendnp3/APL}/Uncopyable.h | 0 {APL => opendnp3/APL}/Util.cpp | 24 +- {APL => opendnp3/APL}/Util.h | 12 +- {APL => opendnp3/APL}/rake.project.rb | 0 {DNP3 => opendnp3/DNP3}/APDU.cpp | 25 +- {DNP3 => opendnp3/DNP3}/APDU.h | 22 +- {DNP3 => opendnp3/DNP3}/APDUConstants.cpp | 2 +- {DNP3 => opendnp3/DNP3}/APDUConstants.h | 0 .../DNP3}/AlwaysOpeningVtoRouter.cpp | 2 +- .../DNP3}/AlwaysOpeningVtoRouter.h | 2 +- {DNP3 => opendnp3/DNP3}/AppChannelStates.cpp | 13 +- {DNP3 => opendnp3/DNP3}/AppChannelStates.h | 8 +- {DNP3 => opendnp3/DNP3}/AppConfig.h | 4 +- {DNP3 => opendnp3/DNP3}/AppHeader.cpp | 6 +- {DNP3 => opendnp3/DNP3}/AppHeader.h | 8 +- {DNP3 => opendnp3/DNP3}/AppInterfaces.cpp | 8 +- {DNP3 => opendnp3/DNP3}/AppInterfaces.h | 1 - {DNP3 => opendnp3/DNP3}/AppLayer.cpp | 8 +- {DNP3 => opendnp3/DNP3}/AppLayer.h | 14 +- {DNP3 => opendnp3/DNP3}/AppLayerChannel.cpp | 12 +- {DNP3 => opendnp3/DNP3}/AppLayerChannel.h | 4 +- {DNP3 => opendnp3/DNP3}/AsyncStackManager.cpp | 34 +- {DNP3 => opendnp3/DNP3}/AsyncStackManager.h | 31 +- {DNP3 => opendnp3/DNP3}/BufferSetTypes.h | 5 +- {DNP3 => opendnp3/DNP3}/BufferTypes.cpp | 5 +- {DNP3 => opendnp3/DNP3}/BufferTypes.h | 2 +- {DNP3 => opendnp3/DNP3}/CTOHistory.h | 0 {DNP3 => opendnp3/DNP3}/ClassCounter.cpp | 3 +- {DNP3 => opendnp3/DNP3}/ClassCounter.h | 8 +- {DNP3 => opendnp3/DNP3}/ClassMask.h | 2 +- {DNP3 => opendnp3/DNP3}/ControlTasks.cpp | 6 +- {DNP3 => opendnp3/DNP3}/ControlTasks.h | 17 +- {DNP3 => opendnp3/DNP3}/DNP3.vcxproj | 0 {DNP3 => opendnp3/DNP3}/DNP3.vcxproj.filters | 0 {DNP3 => opendnp3/DNP3}/DNPCommandMaster.cpp | 10 +- {DNP3 => opendnp3/DNP3}/DNPCommandMaster.h | 10 +- {DNP3 => opendnp3/DNP3}/DNPConstants.h | 0 {DNP3 => opendnp3/DNP3}/DNPCrc.cpp | 7 +- {DNP3 => opendnp3/DNP3}/DNPCrc.h | 3 +- {DNP3 => opendnp3/DNP3}/DNPDatabaseTypes.h | 11 +- {DNP3 => opendnp3/DNP3}/DNPExceptions.h | 3 +- {DNP3 => opendnp3/DNP3}/DNPFromStream.h | 9 +- {DNP3 => opendnp3/DNP3}/DNPToStream.h | 6 +- {DNP3 => opendnp3/DNP3}/DataPoll.cpp | 15 +- {DNP3 => opendnp3/DNP3}/DataPoll.h | 4 +- {DNP3 => opendnp3/DNP3}/Database.cpp | 11 +- {DNP3 => opendnp3/DNP3}/Database.h | 16 +- {DNP3 => opendnp3/DNP3}/DatabaseInterfaces.h | 7 +- {DNP3 => opendnp3/DNP3}/DeviceTemplate.cpp | 2 +- {DNP3 => opendnp3/DNP3}/DeviceTemplate.h | 6 +- {DNP3 => opendnp3/DNP3}/DeviceTemplateTypes.h | 8 +- {DNP3 => opendnp3/DNP3}/EnhancedVto.cpp | 10 +- {DNP3 => opendnp3/DNP3}/EnhancedVto.h | 2 +- {DNP3 => opendnp3/DNP3}/EnhancedVtoRouter.cpp | 7 +- {DNP3 => opendnp3/DNP3}/EnhancedVtoRouter.h | 2 +- {DNP3 => opendnp3/DNP3}/EventBufferBase.h | 5 +- {DNP3 => opendnp3/DNP3}/EventBuffers.h | 9 +- {DNP3 => opendnp3/DNP3}/EventTypes.h | 4 +- .../DNP3}/HeaderReadIterator.cpp | 6 +- {DNP3 => opendnp3/DNP3}/HeaderReadIterator.h | 19 +- {DNP3 => opendnp3/DNP3}/IFrameSink.h | 3 +- {DNP3 => opendnp3/DNP3}/ILinkContext.h | 2 +- {DNP3 => opendnp3/DNP3}/ILinkRouter.h | 0 {DNP3 => opendnp3/DNP3}/IStackObserver.cpp | 2 +- {DNP3 => opendnp3/DNP3}/IStackObserver.h | 0 {DNP3 => opendnp3/DNP3}/IVtoEventAcceptor.h | 2 +- .../DNP3}/IndexedWriteIterator.cpp | 11 +- .../DNP3}/IndexedWriteIterator.h | 7 +- {DNP3 => opendnp3/DNP3}/LinkChannel.cpp | 15 +- {DNP3 => opendnp3/DNP3}/LinkChannel.h | 5 +- {DNP3 => opendnp3/DNP3}/LinkConfig.h | 2 +- {DNP3 => opendnp3/DNP3}/LinkFrame.cpp | 7 +- {DNP3 => opendnp3/DNP3}/LinkFrame.h | 7 +- {DNP3 => opendnp3/DNP3}/LinkHeader.cpp | 7 +- {DNP3 => opendnp3/DNP3}/LinkHeader.h | 3 +- {DNP3 => opendnp3/DNP3}/LinkLayer.cpp | 16 +- {DNP3 => opendnp3/DNP3}/LinkLayer.h | 11 +- .../DNP3}/LinkLayerConstants.cpp | 3 +- {DNP3 => opendnp3/DNP3}/LinkLayerConstants.h | 2 +- {DNP3 => opendnp3/DNP3}/LinkLayerReceiver.cpp | 12 +- {DNP3 => opendnp3/DNP3}/LinkLayerReceiver.h | 13 +- {DNP3 => opendnp3/DNP3}/LinkLayerRouter.cpp | 14 +- {DNP3 => opendnp3/DNP3}/LinkLayerRouter.h | 12 +- .../DNP3}/LinkReceiverStates.cpp | 14 +- {DNP3 => opendnp3/DNP3}/LinkReceiverStates.h | 6 +- {DNP3 => opendnp3/DNP3}/LinkRoute.cpp | 2 +- {DNP3 => opendnp3/DNP3}/LinkRoute.h | 2 +- {DNP3 => opendnp3/DNP3}/Master.cpp | 32 +- {DNP3 => opendnp3/DNP3}/Master.h | 41 +- {DNP3 => opendnp3/DNP3}/MasterConfig.h | 8 +- {DNP3 => opendnp3/DNP3}/MasterConfigTypes.h | 6 +- {DNP3 => opendnp3/DNP3}/MasterSchedule.cpp | 11 +- {DNP3 => opendnp3/DNP3}/MasterSchedule.h | 5 +- {DNP3 => opendnp3/DNP3}/MasterStack.cpp | 7 +- {DNP3 => opendnp3/DNP3}/MasterStack.h | 6 +- {DNP3 => opendnp3/DNP3}/MasterStackConfig.h | 8 +- {DNP3 => opendnp3/DNP3}/MasterStates.cpp | 15 +- {DNP3 => opendnp3/DNP3}/MasterStates.h | 7 +- {DNP3 => opendnp3/DNP3}/MasterTaskBase.cpp | 8 +- {DNP3 => opendnp3/DNP3}/MasterTaskBase.h | 3 +- {DNP3 => opendnp3/DNP3}/ObjectHeader.cpp | 3 +- {DNP3 => opendnp3/DNP3}/ObjectHeader.h | 17 +- {DNP3 => opendnp3/DNP3}/ObjectInterfaces.cpp | 7 +- {DNP3 => opendnp3/DNP3}/ObjectInterfaces.h | 4 +- .../DNP3}/ObjectReadIterator.cpp | 9 +- {DNP3 => opendnp3/DNP3}/ObjectReadIterator.h | 11 +- .../DNP3}/ObjectWriteIterator.cpp | 12 +- {DNP3 => opendnp3/DNP3}/ObjectWriteIterator.h | 9 +- {DNP3 => opendnp3/DNP3}/Objects.cpp | 14 +- {DNP3 => opendnp3/DNP3}/Objects.h | 13 +- {DNP3 => opendnp3/DNP3}/PointClass.cpp | 2 +- {DNP3 => opendnp3/DNP3}/PointClass.h | 0 .../DNP3}/PriLinkLayerStates.cpp | 14 +- {DNP3 => opendnp3/DNP3}/PriLinkLayerStates.h | 8 +- {DNP3 => opendnp3/DNP3}/ResponseContext.cpp | 27 +- {DNP3 => opendnp3/DNP3}/ResponseContext.h | 65 +- {DNP3 => opendnp3/DNP3}/ResponseLoader.cpp | 10 +- {DNP3 => opendnp3/DNP3}/ResponseLoader.h | 18 +- .../DNP3}/SecLinkLayerStates.cpp | 14 +- {DNP3 => opendnp3/DNP3}/SecLinkLayerStates.h | 8 +- {DNP3 => opendnp3/DNP3}/Slave.cpp | 23 +- {DNP3 => opendnp3/DNP3}/Slave.h | 41 +- {DNP3 => opendnp3/DNP3}/SlaveConfig.cpp | 4 +- {DNP3 => opendnp3/DNP3}/SlaveConfig.h | 9 +- {DNP3 => opendnp3/DNP3}/SlaveEventBuffer.cpp | 5 +- {DNP3 => opendnp3/DNP3}/SlaveEventBuffer.h | 13 +- .../DNP3}/SlaveResponseTypes.cpp | 10 +- {DNP3 => opendnp3/DNP3}/SlaveResponseTypes.h | 4 +- {DNP3 => opendnp3/DNP3}/SlaveStack.cpp | 4 +- {DNP3 => opendnp3/DNP3}/SlaveStack.h | 12 +- {DNP3 => opendnp3/DNP3}/SlaveStackConfig.h | 10 +- {DNP3 => opendnp3/DNP3}/SlaveStates.cpp | 14 +- {DNP3 => opendnp3/DNP3}/SlaveStates.h | 7 +- {DNP3 => opendnp3/DNP3}/SolicitedChannel.cpp | 9 +- {DNP3 => opendnp3/DNP3}/SolicitedChannel.h | 2 +- {DNP3 => opendnp3/DNP3}/Stack.cpp | 5 +- {DNP3 => opendnp3/DNP3}/Stack.h | 10 +- {DNP3 => opendnp3/DNP3}/StackManager.cpp | 7 +- {DNP3 => opendnp3/DNP3}/StackManager.h | 17 +- {DNP3 => opendnp3/DNP3}/StartupTasks.cpp | 13 +- {DNP3 => opendnp3/DNP3}/StartupTasks.h | 5 +- {DNP3 => opendnp3/DNP3}/TLS_Base.cpp | 9 +- {DNP3 => opendnp3/DNP3}/TLS_Base.h | 5 +- {DNP3 => opendnp3/DNP3}/TransportConstants.h | 3 +- {DNP3 => opendnp3/DNP3}/TransportLayer.cpp | 15 +- {DNP3 => opendnp3/DNP3}/TransportLayer.h | 12 +- {DNP3 => opendnp3/DNP3}/TransportRx.cpp | 13 +- {DNP3 => opendnp3/DNP3}/TransportRx.h | 10 +- {DNP3 => opendnp3/DNP3}/TransportStates.cpp | 5 +- {DNP3 => opendnp3/DNP3}/TransportStates.h | 5 +- {DNP3 => opendnp3/DNP3}/TransportTx.cpp | 12 +- {DNP3 => opendnp3/DNP3}/TransportTx.h | 10 +- .../DNP3}/UnsolicitedChannel.cpp | 7 +- {DNP3 => opendnp3/DNP3}/UnsolicitedChannel.h | 2 +- {DNP3 => opendnp3/DNP3}/VtoConfig.h | 2 +- {DNP3 => opendnp3/DNP3}/VtoData.cpp | 2 +- {DNP3 => opendnp3/DNP3}/VtoData.h | 2 +- {DNP3 => opendnp3/DNP3}/VtoDataInterface.h | 9 +- .../DNP3}/VtoEventBufferAdapter.h | 4 +- {DNP3 => opendnp3/DNP3}/VtoReader.cpp | 12 +- {DNP3 => opendnp3/DNP3}/VtoReader.h | 15 +- {DNP3 => opendnp3/DNP3}/VtoRouter.cpp | 16 +- {DNP3 => opendnp3/DNP3}/VtoRouter.h | 11 +- {DNP3 => opendnp3/DNP3}/VtoRouterManager.cpp | 19 +- {DNP3 => opendnp3/DNP3}/VtoRouterManager.h | 12 +- {DNP3 => opendnp3/DNP3}/VtoRouterSettings.cpp | 2 +- {DNP3 => opendnp3/DNP3}/VtoRouterSettings.h | 2 +- {DNP3 => opendnp3/DNP3}/VtoTransmitTask.cpp | 7 +- {DNP3 => opendnp3/DNP3}/VtoTransmitTask.h | 8 +- {DNP3 => opendnp3/DNP3}/VtoWriter.cpp | 9 +- {DNP3 => opendnp3/DNP3}/VtoWriter.h | 19 +- {DNP3 => opendnp3/DNP3}/rake.project.rb | 0 version.hpp => opendnp3/version.hpp | 0 537 files changed, 1997 insertions(+), 2235 deletions(-) mode change 100755 => 100644 APLTestTools/FanoutDataObserver.h mode change 100755 => 100644 APLTestTools/MockLogSubscriber.h mode change 100755 => 100644 APLTestTools/MockPhysicalLayerMonitor.cpp mode change 100755 => 100644 APLTestTools/MockPhysicalLayerMonitor.h mode change 100755 => 100644 APLTestTools/WrappedTcpPipe.cpp mode change 100755 => 100644 APLTestTools/WrappedTcpPipe.h mode change 100755 => 100644 DNP3Java/ExtractFromJAR.java mode change 100755 => 100644 DNP3Java/JavaDNP3.i mode change 100755 => 100644 DNP3Java/TestBinding.java mode change 100755 => 100644 DNP3Test/ComparingDataObserver.cpp mode change 100755 => 100644 DNP3Test/ComparingDataObserver.h mode change 100755 => 100644 DNP3Test/ReadableVtoWriter.h mode change 100755 => 100644 DNP3Test/TestStackManager.cpp mode change 100755 => 100644 DNP3Test/TestVtoOnewayIntegration.cpp mode change 100755 => 100644 DNP3Test/TestVtoWriter.cpp mode change 100755 => 100644 DNP3Test/VtoIntegrationTestBase.cpp mode change 100755 => 100644 DNP3Test/VtoIntegrationTestBase.h mode change 100755 => 100644 Terminal/ControlResponseTE.cpp mode change 100755 => 100644 Terminal/ControlResponseTE.h mode change 100755 => 100644 Terminal/ControlTerminalExtension.cpp mode change 100755 => 100644 Terminal/ControlTerminalExtension.h mode change 100755 => 100644 Terminal/DOTerminalExtension.cpp mode change 100755 => 100644 Terminal/DOTerminalExtension.h mode change 100755 => 100644 Terminal/FlexibleObserverTerminalExtension.cpp mode change 100755 => 100644 Terminal/FlexibleObserverTerminalExtension.h mode change 100755 => 100644 Terminal/LineReader.cpp mode change 100755 => 100644 Terminal/LineReader.h mode change 100755 => 100644 Terminal/LogTerminalExtension.cpp mode change 100755 => 100644 Terminal/LogTerminalExtension.h mode change 100755 => 100644 Terminal/PhysicalLayerIOStreamAsync.cpp mode change 100755 => 100644 Terminal/PhysicalLayerIOStreamAsync.h mode change 100755 => 100644 Terminal/PhysicalLayerSyncProxy.cpp mode change 100755 => 100644 Terminal/PhysicalLayerSyncProxy.h mode change 100755 => 100644 Terminal/Terminal.cpp mode change 100755 => 100644 Terminal/Terminal.h mode change 100755 => 100644 Terminal/TerminalInterfaces.cpp mode change 100755 => 100644 Terminal/TerminalInterfaces.h mode change 100755 => 100644 Terminal/TokenNode.h mode change 100755 => 100644 TerminalTest/TestPhysicalLayerSyncProxy.cpp mode change 100755 => 100644 TerminalTest/TestTerminal.cpp mode change 100755 => 100644 TestAPL/TestPhysicalLayerLoopback.cpp mode change 100755 => 100644 TestAPL/TestPhysicalLayerMonitor.cpp mode change 100755 => 100644 TestSet/AddressScanner.cpp mode change 100755 => 100644 TestSet/AddressScanner.h mode change 100755 => 100644 XMLBindings/APLXML_Base.cpp mode change 100755 => 100644 XMLBindings/APLXML_Base.h mode change 100755 => 100644 XMLBindings/APLXML_DNP.cpp mode change 100755 => 100644 XMLBindings/APLXML_DNP.h mode change 100755 => 100644 XMLBindings/APLXML_MTS.cpp mode change 100755 => 100644 XMLBindings/APLXML_MTS.h mode change 100755 => 100644 XMLBindings/APLXML_STS.cpp mode change 100755 => 100644 XMLBindings/APLXML_STS.h rename {APL => opendnp3/APL}/APL.vcxproj (100%) rename {APL => opendnp3/APL}/APL.vcxproj.filters (100%) rename {APL => opendnp3/APL}/ASIOSerialHelpers.cpp (97%) rename {APL => opendnp3/APL}/ASIOSerialHelpers.h (97%) rename {APL => opendnp3/APL}/AsyncLayerInterfaces.cpp (94%) rename {APL => opendnp3/APL}/AsyncLayerInterfaces.h (97%) rename {APL => opendnp3/APL}/AsyncResult.cpp (95%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/AsyncResult.h (90%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/AsyncTaskBase.cpp (97%) rename {APL => opendnp3/APL}/AsyncTaskBase.h (97%) rename {APL => opendnp3/APL}/AsyncTaskContinuous.cpp (90%) rename {APL => opendnp3/APL}/AsyncTaskContinuous.h (94%) rename {APL => opendnp3/APL}/AsyncTaskGroup.cpp (93%) rename {APL => opendnp3/APL}/AsyncTaskGroup.h (95%) rename {APL => opendnp3/APL}/AsyncTaskInterfaces.h (100%) rename {APL => opendnp3/APL}/AsyncTaskNonPeriodic.cpp (94%) rename {APL => opendnp3/APL}/AsyncTaskNonPeriodic.h (92%) rename {APL => opendnp3/APL}/AsyncTaskPeriodic.cpp (94%) rename {APL => opendnp3/APL}/AsyncTaskPeriodic.h (92%) rename {APL => opendnp3/APL}/AsyncTaskScheduler.cpp (91%) rename {APL => opendnp3/APL}/AsyncTaskScheduler.h (95%) rename {APL => opendnp3/APL}/BaseDataTypes.cpp (96%) rename {APL => opendnp3/APL}/BaseDataTypes.h (98%) rename {APL => opendnp3/APL}/BoundNotifier.h (96%) rename {APL => opendnp3/APL}/CRC.cpp (97%) rename {APL => opendnp3/APL}/CRC.h (97%) rename {APL => opendnp3/APL}/CachedLogVariable.h (97%) rename {APL => opendnp3/APL}/ChangeBuffer.h (95%) rename {APL => opendnp3/APL}/CommandInterfaces.h (98%) rename {APL => opendnp3/APL}/CommandManager.cpp (93%) rename {APL => opendnp3/APL}/CommandManager.h (94%) rename {APL => opendnp3/APL}/CommandQueue.cpp (98%) rename {APL => opendnp3/APL}/CommandQueue.h (94%) rename {APL => opendnp3/APL}/CommandResponseQueue.cpp (95%) rename {APL => opendnp3/APL}/CommandResponseQueue.h (91%) rename {APL => opendnp3/APL}/CommandTypes.cpp (97%) rename {APL => opendnp3/APL}/CommandTypes.h (99%) rename {APL => opendnp3/APL}/Configure.h (100%) rename {APL => opendnp3/APL}/CopyableBuffer.cpp (96%) rename {APL => opendnp3/APL}/CopyableBuffer.h (98%) rename {APL => opendnp3/APL}/DataInterfaces.h (97%) rename {APL => opendnp3/APL}/DataTypes.h (99%) rename {APL => opendnp3/APL}/DeleteAny.h (100%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/EventLock.cpp (97%) rename {APL => opendnp3/APL}/EventLock.h (94%) rename {APL => opendnp3/APL}/EventLockBase.h (95%) rename {APL => opendnp3/APL}/EventSet.h (97%) rename {APL => opendnp3/APL}/Exception.cpp (97%) rename {APL => opendnp3/APL}/Exception.h (98%) rename {APL => opendnp3/APL}/FlexibleDataObserver.cpp (97%) rename {APL => opendnp3/APL}/FlexibleDataObserver.h (98%) rename {APL => opendnp3/APL}/Function.h (100%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/GetKeys.h (100%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/IEventLock.h (100%) rename {APL => opendnp3/APL}/IHandlerAsync.cpp (96%) rename {APL => opendnp3/APL}/IHandlerAsync.h (96%) rename {APL => opendnp3/APL}/INotifier.h (100%) rename {APL => opendnp3/APL}/IOService.cpp (96%) rename {APL => opendnp3/APL}/IOService.h (100%) rename {APL => opendnp3/APL}/IOServiceThread.cpp (94%) rename {APL => opendnp3/APL}/IOServiceThread.h (92%) rename {APL => opendnp3/APL}/IPhysicalLayerAsync.h (98%) rename {APL => opendnp3/APL}/IPhysicalLayerObserver.h (95%) rename {APL => opendnp3/APL}/IPhysicalLayerSource.h (100%) rename {APL => opendnp3/APL}/ISubject.h (100%) rename {APL => opendnp3/APL}/ITimeSource.h (97%) rename {APL => opendnp3/APL}/ITimer.h (100%) rename {APL => opendnp3/APL}/ITimerSource.cpp (96%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/ITimerSource.h (91%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/ITransactable.h (100%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/Lock.h (96%) rename {APL => opendnp3/APL}/LockBase.cpp (96%) rename {APL => opendnp3/APL}/LockBase.h (97%) rename {APL => opendnp3/APL}/LockBoost.cpp (98%) rename {APL => opendnp3/APL}/LockBoost.h (94%) rename {APL => opendnp3/APL}/Log.cpp (96%) rename {APL => opendnp3/APL}/Log.h (90%) rename {APL => opendnp3/APL}/LogBase.h (97%) rename {APL => opendnp3/APL}/LogEntry.cpp (96%) rename {APL => opendnp3/APL}/LogEntry.h (95%) rename {APL => opendnp3/APL}/LogEntryCircularBuffer.cpp (97%) rename {APL => opendnp3/APL}/LogEntryCircularBuffer.h (89%) rename {APL => opendnp3/APL}/LogToFile.cpp (97%) rename {APL => opendnp3/APL}/LogToFile.h (92%) rename {APL => opendnp3/APL}/LogToStdio.cpp (94%) rename {APL => opendnp3/APL}/LogToStdio.h (95%) rename {APL => opendnp3/APL}/LogTypes.cpp (97%) rename {APL => opendnp3/APL}/LogTypes.h (100%) rename {APL => opendnp3/APL}/LogVar.h (99%) rename {APL => opendnp3/APL}/Loggable.cpp (90%) rename {APL => opendnp3/APL}/Loggable.h (96%) rename {APL => opendnp3/APL}/Logger.cpp (97%) rename {APL => opendnp3/APL}/Logger.h (95%) rename {APL => opendnp3/APL}/LowerLayerToPhysAdapter.cpp (96%) rename {APL => opendnp3/APL}/LowerLayerToPhysAdapter.h (96%) rename {APL => opendnp3/APL}/MetricBuffer.cpp (96%) rename {APL => opendnp3/APL}/MetricBuffer.h (91%) rename {APL => opendnp3/APL}/MultiplexingDataObserver.cpp (98%) rename {APL => opendnp3/APL}/MultiplexingDataObserver.h (96%) rename {APL => opendnp3/APL}/Notifier.h (94%) rename {APL => opendnp3/APL}/PackingTemplates.h (98%) rename {APL => opendnp3/APL}/PackingUnpacking.cpp (97%) rename {APL => opendnp3/APL}/PackingUnpacking.h (99%) rename {APL => opendnp3/APL}/Parsing.cpp (97%) rename {APL => opendnp3/APL}/Parsing.h (99%) rename {APL => opendnp3/APL}/PhysLayerSettings.h (95%) rename {APL => opendnp3/APL}/PhysLoopback.cpp (92%) rename {APL => opendnp3/APL}/PhysLoopback.h (94%) rename {APL => opendnp3/APL}/PhysicalLayerAsyncASIO.h (96%) rename {APL => opendnp3/APL}/PhysicalLayerAsyncBase.cpp (97%) rename {APL => opendnp3/APL}/PhysicalLayerAsyncBase.h (98%) rename {APL => opendnp3/APL}/PhysicalLayerAsyncBaseTCP.cpp (96%) rename {APL => opendnp3/APL}/PhysicalLayerAsyncBaseTCP.h (97%) rename {APL => opendnp3/APL}/PhysicalLayerAsyncSerial.cpp (93%) rename {APL => opendnp3/APL}/PhysicalLayerAsyncSerial.h (94%) rename {APL => opendnp3/APL}/PhysicalLayerAsyncTCPClient.cpp (91%) rename {APL => opendnp3/APL}/PhysicalLayerAsyncTCPClient.h (96%) rename {APL => opendnp3/APL}/PhysicalLayerAsyncTCPServer.cpp (94%) rename {APL => opendnp3/APL}/PhysicalLayerAsyncTCPServer.h (96%) rename {APL => opendnp3/APL}/PhysicalLayerAsyncTCPv4Client.h (96%) rename {APL => opendnp3/APL}/PhysicalLayerAsyncTCPv4Server.h (96%) rename {APL => opendnp3/APL}/PhysicalLayerAsyncTCPv6Client.h (96%) rename {APL => opendnp3/APL}/PhysicalLayerAsyncTCPv6Server.h (96%) rename {APL => opendnp3/APL}/PhysicalLayerFactory.cpp (89%) rename {APL => opendnp3/APL}/PhysicalLayerFactory.h (94%) rename {APL => opendnp3/APL}/PhysicalLayerFunctors.h (100%) rename {APL => opendnp3/APL}/PhysicalLayerInstance.cpp (90%) rename {APL => opendnp3/APL}/PhysicalLayerInstance.h (96%) rename {APL => opendnp3/APL}/PhysicalLayerManager.cpp (93%) rename {APL => opendnp3/APL}/PhysicalLayerManager.h (95%) rename {APL => opendnp3/APL}/PhysicalLayerMap.cpp (94%) rename {APL => opendnp3/APL}/PhysicalLayerMap.h (90%) rename {APL => opendnp3/APL}/PhysicalLayerMonitor.cpp (96%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/PhysicalLayerMonitor.h (95%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/PhysicalLayerMonitorStates.cpp (98%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/PhysicalLayerMonitorStates.h (98%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/PhysicalLayerStates.cpp (96%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/PhysicalLayerStates.h (99%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/PostingNotifier.cpp (96%) rename {APL => opendnp3/APL}/PostingNotifier.h (93%) rename {APL => opendnp3/APL}/PostingNotifierSource.cpp (92%) rename {APL => opendnp3/APL}/PostingNotifierSource.h (96%) rename {APL => opendnp3/APL}/ProtocolUtil.cpp (97%) rename {APL => opendnp3/APL}/ProtocolUtil.h (99%) rename {APL => opendnp3/APL}/QualityConverter.cpp (98%) rename {APL => opendnp3/APL}/QualityConverter.h (97%) rename {APL => opendnp3/APL}/QualityMasks.h (100%) rename {APL => opendnp3/APL}/QueueingFDO.h (94%) rename {APL => opendnp3/APL}/Random.h (100%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/RandomDouble.h (97%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/RandomizedBuffer.cpp (96%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/RandomizedBuffer.h (93%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/SerialTypes.h (100%) rename {APL => opendnp3/APL}/ShiftableBuffer.cpp (97%) rename {APL => opendnp3/APL}/ShiftableBuffer.h (99%) rename {APL => opendnp3/APL}/Singleton.h (100%) rename {APL => opendnp3/APL}/SubjectBase.h (93%) rename {APL => opendnp3/APL}/SuspendTimerSource.cpp (94%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/SuspendTimerSource.h (95%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/SyncVar.h (96%) rename {APL => opendnp3/APL}/Thread.h (89%) rename {APL => opendnp3/APL}/ThreadBase.cpp (96%) rename {APL => opendnp3/APL}/ThreadBase.h (97%) rename {APL => opendnp3/APL}/ThreadBoost.cpp (95%) rename {APL => opendnp3/APL}/ThreadBoost.h (94%) rename {APL => opendnp3/APL}/Threadable.cpp (97%) rename {APL => opendnp3/APL}/Threadable.h (100%) rename {APL => opendnp3/APL}/TimeBase.cpp (98%) rename {APL => opendnp3/APL}/TimeBase.h (98%) rename {APL => opendnp3/APL}/TimeBoost.cpp (97%) rename {APL => opendnp3/APL}/TimeBoost.h (97%) rename {APL => opendnp3/APL}/TimeSource.cpp (96%) rename {APL => opendnp3/APL}/TimeSource.h (94%) rename {APL => opendnp3/APL}/TimeTypes.h (96%) rename {APL => opendnp3/APL}/Timeout.cpp (98%) rename {APL => opendnp3/APL}/Timeout.h (96%) rename {APL => opendnp3/APL}/TimerASIO.cpp (97%) rename {APL => opendnp3/APL}/TimerASIO.h (97%) rename {APL => opendnp3/APL}/TimerSourceASIO.cpp (96%) rename {APL => opendnp3/APL}/TimerSourceASIO.h (94%) rename {APL => opendnp3/APL}/TimingTools.cpp (98%) rename {APL => opendnp3/APL}/TimingTools.h (94%) rename {APL => opendnp3/APL}/ToHex.cpp (97%) rename {APL => opendnp3/APL}/ToHex.h (97%) rename {APL => opendnp3/APL}/TrackingTaskGroup.cpp (92%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/TrackingTaskGroup.h (93%) mode change 100755 => 100644 rename {APL => opendnp3/APL}/Types.h (100%) rename {APL => opendnp3/APL}/Uncopyable.h (100%) rename {APL => opendnp3/APL}/Util.cpp (97%) rename {APL => opendnp3/APL}/Util.h (95%) rename {APL => opendnp3/APL}/rake.project.rb (100%) rename {DNP3 => opendnp3/DNP3}/APDU.cpp (98%) rename {DNP3 => opendnp3/DNP3}/APDU.h (96%) rename {DNP3 => opendnp3/DNP3}/APDUConstants.cpp (98%) rename {DNP3 => opendnp3/DNP3}/APDUConstants.h (100%) rename {DNP3 => opendnp3/DNP3}/AlwaysOpeningVtoRouter.cpp (95%) rename {DNP3 => opendnp3/DNP3}/AlwaysOpeningVtoRouter.h (97%) rename {DNP3 => opendnp3/DNP3}/AppChannelStates.cpp (96%) rename {DNP3 => opendnp3/DNP3}/AppChannelStates.h (96%) rename {DNP3 => opendnp3/DNP3}/AppConfig.h (95%) rename {DNP3 => opendnp3/DNP3}/AppHeader.cpp (98%) rename {DNP3 => opendnp3/DNP3}/AppHeader.h (98%) rename {DNP3 => opendnp3/DNP3}/AppInterfaces.cpp (92%) rename {DNP3 => opendnp3/DNP3}/AppInterfaces.h (99%) rename {DNP3 => opendnp3/DNP3}/AppLayer.cpp (98%) rename {DNP3 => opendnp3/DNP3}/AppLayer.h (92%) rename {DNP3 => opendnp3/DNP3}/AppLayerChannel.cpp (93%) rename {DNP3 => opendnp3/DNP3}/AppLayerChannel.h (97%) rename {DNP3 => opendnp3/DNP3}/AsyncStackManager.cpp (95%) rename {DNP3 => opendnp3/DNP3}/AsyncStackManager.h (94%) rename {DNP3 => opendnp3/DNP3}/BufferSetTypes.h (99%) rename {DNP3 => opendnp3/DNP3}/BufferTypes.cpp (93%) rename {DNP3 => opendnp3/DNP3}/BufferTypes.h (97%) rename {DNP3 => opendnp3/DNP3}/CTOHistory.h (100%) rename {DNP3 => opendnp3/DNP3}/ClassCounter.cpp (97%) rename {DNP3 => opendnp3/DNP3}/ClassCounter.h (95%) rename {DNP3 => opendnp3/DNP3}/ClassMask.h (97%) rename {DNP3 => opendnp3/DNP3}/ControlTasks.cpp (96%) rename {DNP3 => opendnp3/DNP3}/ControlTasks.h (93%) rename {DNP3 => opendnp3/DNP3}/DNP3.vcxproj (100%) rename {DNP3 => opendnp3/DNP3}/DNP3.vcxproj.filters (100%) rename {DNP3 => opendnp3/DNP3}/DNPCommandMaster.cpp (95%) rename {DNP3 => opendnp3/DNP3}/DNPCommandMaster.h (97%) rename {DNP3 => opendnp3/DNP3}/DNPConstants.h (100%) rename {DNP3 => opendnp3/DNP3}/DNPCrc.cpp (93%) rename {DNP3 => opendnp3/DNP3}/DNPCrc.h (97%) rename {DNP3 => opendnp3/DNP3}/DNPDatabaseTypes.h (95%) rename {DNP3 => opendnp3/DNP3}/DNPExceptions.h (97%) rename {DNP3 => opendnp3/DNP3}/DNPFromStream.h (96%) rename {DNP3 => opendnp3/DNP3}/DNPToStream.h (97%) rename {DNP3 => opendnp3/DNP3}/DataPoll.cpp (89%) rename {DNP3 => opendnp3/DNP3}/DataPoll.h (95%) rename {DNP3 => opendnp3/DNP3}/Database.cpp (98%) rename {DNP3 => opendnp3/DNP3}/Database.h (95%) rename {DNP3 => opendnp3/DNP3}/DatabaseInterfaces.h (92%) rename {DNP3 => opendnp3/DNP3}/DeviceTemplate.cpp (98%) rename {DNP3 => opendnp3/DNP3}/DeviceTemplate.h (96%) rename {DNP3 => opendnp3/DNP3}/DeviceTemplateTypes.h (95%) rename {DNP3 => opendnp3/DNP3}/EnhancedVto.cpp (92%) rename {DNP3 => opendnp3/DNP3}/EnhancedVto.h (97%) rename {DNP3 => opendnp3/DNP3}/EnhancedVtoRouter.cpp (98%) rename {DNP3 => opendnp3/DNP3}/EnhancedVtoRouter.h (99%) rename {DNP3 => opendnp3/DNP3}/EventBufferBase.h (99%) rename {DNP3 => opendnp3/DNP3}/EventBuffers.h (97%) rename {DNP3 => opendnp3/DNP3}/EventTypes.h (96%) rename {DNP3 => opendnp3/DNP3}/HeaderReadIterator.cpp (92%) rename {DNP3 => opendnp3/DNP3}/HeaderReadIterator.h (94%) rename {DNP3 => opendnp3/DNP3}/IFrameSink.h (98%) rename {DNP3 => opendnp3/DNP3}/ILinkContext.h (96%) rename {DNP3 => opendnp3/DNP3}/ILinkRouter.h (100%) rename {DNP3 => opendnp3/DNP3}/IStackObserver.cpp (96%) rename {DNP3 => opendnp3/DNP3}/IStackObserver.h (100%) rename {DNP3 => opendnp3/DNP3}/IVtoEventAcceptor.h (96%) mode change 100755 => 100644 rename {DNP3 => opendnp3/DNP3}/IndexedWriteIterator.cpp (94%) rename {DNP3 => opendnp3/DNP3}/IndexedWriteIterator.h (93%) rename {DNP3 => opendnp3/DNP3}/LinkChannel.cpp (90%) mode change 100755 => 100644 rename {DNP3 => opendnp3/DNP3}/LinkChannel.h (96%) mode change 100755 => 100644 rename {DNP3 => opendnp3/DNP3}/LinkConfig.h (98%) rename {DNP3 => opendnp3/DNP3}/LinkFrame.cpp (98%) rename {DNP3 => opendnp3/DNP3}/LinkFrame.h (97%) rename {DNP3 => opendnp3/DNP3}/LinkHeader.cpp (95%) rename {DNP3 => opendnp3/DNP3}/LinkHeader.h (98%) rename {DNP3 => opendnp3/DNP3}/LinkLayer.cpp (95%) rename {DNP3 => opendnp3/DNP3}/LinkLayer.h (95%) rename {DNP3 => opendnp3/DNP3}/LinkLayerConstants.cpp (97%) rename {DNP3 => opendnp3/DNP3}/LinkLayerConstants.h (98%) rename {DNP3 => opendnp3/DNP3}/LinkLayerReceiver.cpp (97%) rename {DNP3 => opendnp3/DNP3}/LinkLayerReceiver.h (92%) rename {DNP3 => opendnp3/DNP3}/LinkLayerRouter.cpp (96%) rename {DNP3 => opendnp3/DNP3}/LinkLayerRouter.h (94%) rename {DNP3 => opendnp3/DNP3}/LinkReceiverStates.cpp (89%) rename {DNP3 => opendnp3/DNP3}/LinkReceiverStates.h (94%) rename {DNP3 => opendnp3/DNP3}/LinkRoute.cpp (97%) rename {DNP3 => opendnp3/DNP3}/LinkRoute.h (98%) rename {DNP3 => opendnp3/DNP3}/Master.cpp (92%) rename {DNP3 => opendnp3/DNP3}/Master.h (88%) rename {DNP3 => opendnp3/DNP3}/MasterConfig.h (94%) rename {DNP3 => opendnp3/DNP3}/MasterConfigTypes.h (90%) rename {DNP3 => opendnp3/DNP3}/MasterSchedule.cpp (95%) rename {DNP3 => opendnp3/DNP3}/MasterSchedule.h (96%) rename {DNP3 => opendnp3/DNP3}/MasterStack.cpp (94%) rename {DNP3 => opendnp3/DNP3}/MasterStack.h (91%) rename {DNP3 => opendnp3/DNP3}/MasterStackConfig.h (89%) rename {DNP3 => opendnp3/DNP3}/MasterStates.cpp (93%) rename {DNP3 => opendnp3/DNP3}/MasterStates.h (95%) rename {DNP3 => opendnp3/DNP3}/MasterTaskBase.cpp (92%) rename {DNP3 => opendnp3/DNP3}/MasterTaskBase.h (99%) rename {DNP3 => opendnp3/DNP3}/ObjectHeader.cpp (98%) rename {DNP3 => opendnp3/DNP3}/ObjectHeader.h (96%) rename {DNP3 => opendnp3/DNP3}/ObjectInterfaces.cpp (97%) rename {DNP3 => opendnp3/DNP3}/ObjectInterfaces.h (99%) rename {DNP3 => opendnp3/DNP3}/ObjectReadIterator.cpp (96%) rename {DNP3 => opendnp3/DNP3}/ObjectReadIterator.h (95%) rename {DNP3 => opendnp3/DNP3}/ObjectWriteIterator.cpp (89%) rename {DNP3 => opendnp3/DNP3}/ObjectWriteIterator.h (91%) rename {DNP3 => opendnp3/DNP3}/Objects.cpp (98%) rename {DNP3 => opendnp3/DNP3}/Objects.h (99%) rename {DNP3 => opendnp3/DNP3}/PointClass.cpp (96%) rename {DNP3 => opendnp3/DNP3}/PointClass.h (100%) rename {DNP3 => opendnp3/DNP3}/PriLinkLayerStates.cpp (96%) rename {DNP3 => opendnp3/DNP3}/PriLinkLayerStates.h (96%) rename {DNP3 => opendnp3/DNP3}/ResponseContext.cpp (97%) rename {DNP3 => opendnp3/DNP3}/ResponseContext.h (94%) rename {DNP3 => opendnp3/DNP3}/ResponseLoader.cpp (97%) rename {DNP3 => opendnp3/DNP3}/ResponseLoader.h (94%) rename {DNP3 => opendnp3/DNP3}/SecLinkLayerStates.cpp (92%) rename {DNP3 => opendnp3/DNP3}/SecLinkLayerStates.h (95%) rename {DNP3 => opendnp3/DNP3}/Slave.cpp (97%) rename {DNP3 => opendnp3/DNP3}/Slave.h (93%) rename {DNP3 => opendnp3/DNP3}/SlaveConfig.cpp (96%) rename {DNP3 => opendnp3/DNP3}/SlaveConfig.h (97%) rename {DNP3 => opendnp3/DNP3}/SlaveEventBuffer.cpp (98%) rename {DNP3 => opendnp3/DNP3}/SlaveEventBuffer.h (96%) rename {DNP3 => opendnp3/DNP3}/SlaveResponseTypes.cpp (96%) rename {DNP3 => opendnp3/DNP3}/SlaveResponseTypes.h (96%) rename {DNP3 => opendnp3/DNP3}/SlaveStack.cpp (97%) rename {DNP3 => opendnp3/DNP3}/SlaveStack.h (88%) rename {DNP3 => opendnp3/DNP3}/SlaveStackConfig.h (87%) rename {DNP3 => opendnp3/DNP3}/SlaveStates.cpp (97%) rename {DNP3 => opendnp3/DNP3}/SlaveStates.h (97%) rename {DNP3 => opendnp3/DNP3}/SolicitedChannel.cpp (92%) rename {DNP3 => opendnp3/DNP3}/SolicitedChannel.h (97%) rename {DNP3 => opendnp3/DNP3}/Stack.cpp (94%) rename {DNP3 => opendnp3/DNP3}/Stack.h (88%) rename {DNP3 => opendnp3/DNP3}/StackManager.cpp (97%) rename {DNP3 => opendnp3/DNP3}/StackManager.h (92%) rename {DNP3 => opendnp3/DNP3}/StartupTasks.cpp (94%) rename {DNP3 => opendnp3/DNP3}/StartupTasks.h (96%) rename {DNP3 => opendnp3/DNP3}/TLS_Base.cpp (93%) rename {DNP3 => opendnp3/DNP3}/TLS_Base.h (95%) rename {DNP3 => opendnp3/DNP3}/TransportConstants.h (96%) rename {DNP3 => opendnp3/DNP3}/TransportLayer.cpp (95%) rename {DNP3 => opendnp3/DNP3}/TransportLayer.h (93%) rename {DNP3 => opendnp3/DNP3}/TransportRx.cpp (94%) rename {DNP3 => opendnp3/DNP3}/TransportRx.h (90%) rename {DNP3 => opendnp3/DNP3}/TransportStates.cpp (96%) rename {DNP3 => opendnp3/DNP3}/TransportStates.h (95%) rename {DNP3 => opendnp3/DNP3}/TransportTx.cpp (94%) rename {DNP3 => opendnp3/DNP3}/TransportTx.h (90%) rename {DNP3 => opendnp3/DNP3}/UnsolicitedChannel.cpp (93%) rename {DNP3 => opendnp3/DNP3}/UnsolicitedChannel.h (97%) rename {DNP3 => opendnp3/DNP3}/VtoConfig.h (96%) rename {DNP3 => opendnp3/DNP3}/VtoData.cpp (98%) rename {DNP3 => opendnp3/DNP3}/VtoData.h (97%) rename {DNP3 => opendnp3/DNP3}/VtoDataInterface.h (97%) rename {DNP3 => opendnp3/DNP3}/VtoEventBufferAdapter.h (93%) mode change 100755 => 100644 rename {DNP3 => opendnp3/DNP3}/VtoReader.cpp (94%) rename {DNP3 => opendnp3/DNP3}/VtoReader.h (93%) rename {DNP3 => opendnp3/DNP3}/VtoRouter.cpp (95%) rename {DNP3 => opendnp3/DNP3}/VtoRouter.h (97%) rename {DNP3 => opendnp3/DNP3}/VtoRouterManager.cpp (93%) rename {DNP3 => opendnp3/DNP3}/VtoRouterManager.h (94%) rename {DNP3 => opendnp3/DNP3}/VtoRouterSettings.cpp (96%) rename {DNP3 => opendnp3/DNP3}/VtoRouterSettings.h (98%) rename {DNP3 => opendnp3/DNP3}/VtoTransmitTask.cpp (96%) rename {DNP3 => opendnp3/DNP3}/VtoTransmitTask.h (96%) rename {DNP3 => opendnp3/DNP3}/VtoWriter.cpp (97%) rename {DNP3 => opendnp3/DNP3}/VtoWriter.h (92%) rename {DNP3 => opendnp3/DNP3}/rake.project.rb (100%) rename version.hpp => opendnp3/version.hpp (100%) diff --git a/APLTestTools/AsyncPhysTestObject.h b/APLTestTools/AsyncPhysTestObject.h index b14f78a4..d460fb5a 100644 --- a/APLTestTools/AsyncPhysTestObject.h +++ b/APLTestTools/AsyncPhysTestObject.h @@ -22,9 +22,9 @@ #include #include -#include -#include -#include +#include +#include +#include #include namespace apl diff --git a/APLTestTools/AsyncTestObject.cpp b/APLTestTools/AsyncTestObject.cpp index c573460c..02767e36 100644 --- a/APLTestTools/AsyncTestObject.cpp +++ b/APLTestTools/AsyncTestObject.cpp @@ -19,7 +19,7 @@ #include "AsyncTestObject.h" -#include +#include #include diff --git a/APLTestTools/AsyncTestObjectASIO.cpp b/APLTestTools/AsyncTestObjectASIO.cpp index d9db6674..e9c491be 100644 --- a/APLTestTools/AsyncTestObjectASIO.cpp +++ b/APLTestTools/AsyncTestObjectASIO.cpp @@ -20,9 +20,9 @@ #include "AsyncTestObjectASIO.h" #include -#include -#include -#include +#include +#include +#include namespace apl { diff --git a/APLTestTools/BufferHelpers.cpp b/APLTestTools/BufferHelpers.cpp index 1708f766..8b2ef138 100644 --- a/APLTestTools/BufferHelpers.cpp +++ b/APLTestTools/BufferHelpers.cpp @@ -18,8 +18,8 @@ // #include "BufferHelpers.h" -#include -#include +#include +#include #include #include diff --git a/APLTestTools/BufferHelpers.h b/APLTestTools/BufferHelpers.h index 0ea790fb..95a88f8d 100644 --- a/APLTestTools/BufferHelpers.h +++ b/APLTestTools/BufferHelpers.h @@ -19,7 +19,7 @@ #ifndef __BUFFER_HELPERS_H_ #define __BUFFER_HELPERS_H_ -#include +#include #include namespace apl diff --git a/APLTestTools/BufferTestObject.cpp b/APLTestTools/BufferTestObject.cpp index 7b72e007..be000331 100644 --- a/APLTestTools/BufferTestObject.cpp +++ b/APLTestTools/BufferTestObject.cpp @@ -24,7 +24,7 @@ #include #include -#include +#include namespace apl { diff --git a/APLTestTools/BufferTestObject.h b/APLTestTools/BufferTestObject.h index 71aeda69..cb7318dc 100644 --- a/APLTestTools/BufferTestObject.h +++ b/APLTestTools/BufferTestObject.h @@ -19,7 +19,7 @@ #ifndef __BUFFER_TEST_OBJECT_H_ #define __BUFFER_TEST_OBJECT_H_ -#include +#include #include #include diff --git a/APLTestTools/FanoutDataObserver.h b/APLTestTools/FanoutDataObserver.h old mode 100755 new mode 100644 index 88dbcec3..e042c7ee --- a/APLTestTools/FanoutDataObserver.h +++ b/APLTestTools/FanoutDataObserver.h @@ -19,7 +19,7 @@ #ifndef __FANOUT_DATA_OBSERVER_H_ #define __FANOUT_DATA_OBSERVER_H_ -#include +#include #include namespace apl diff --git a/APLTestTools/LogTester.cpp b/APLTestTools/LogTester.cpp index 3e8aaf49..6ffd29f6 100644 --- a/APLTestTools/LogTester.cpp +++ b/APLTestTools/LogTester.cpp @@ -18,7 +18,7 @@ // #include "LogTester.h" -#include +#include namespace apl { diff --git a/APLTestTools/LogTester.h b/APLTestTools/LogTester.h index ad6f0889..24c95521 100644 --- a/APLTestTools/LogTester.h +++ b/APLTestTools/LogTester.h @@ -19,7 +19,7 @@ #ifndef __LOG_TESTER_H_ #define __LOG_TESTER_H_ -#include +#include namespace apl { diff --git a/APLTestTools/LoopbackPhysicalLayerAsync.cpp b/APLTestTools/LoopbackPhysicalLayerAsync.cpp index 90deaa9f..f131260a 100644 --- a/APLTestTools/LoopbackPhysicalLayerAsync.cpp +++ b/APLTestTools/LoopbackPhysicalLayerAsync.cpp @@ -21,7 +21,7 @@ #include #include -#include +#include using namespace boost; using namespace boost::system; diff --git a/APLTestTools/LoopbackPhysicalLayerAsync.h b/APLTestTools/LoopbackPhysicalLayerAsync.h index f0caa8ba..45a8a323 100644 --- a/APLTestTools/LoopbackPhysicalLayerAsync.h +++ b/APLTestTools/LoopbackPhysicalLayerAsync.h @@ -19,8 +19,8 @@ #ifndef __LOOP_BACK_PHYSICAL_LAYER_ASYNC_H_ #define __LOOP_BACK_PHYSICAL_LAYER_ASYNC_H_ -#include -#include +#include +#include #include diff --git a/APLTestTools/MockCommandAcceptor.h b/APLTestTools/MockCommandAcceptor.h index 04e315ba..4f6e8693 100644 --- a/APLTestTools/MockCommandAcceptor.h +++ b/APLTestTools/MockCommandAcceptor.h @@ -19,8 +19,8 @@ #ifndef __MOCK_COMMAND_ACCEPTOR_H_ #define __MOCK_COMMAND_ACCEPTOR_H_ -#include -#include +#include +#include #include namespace apl diff --git a/APLTestTools/MockCommandHandler.h b/APLTestTools/MockCommandHandler.h index 5baf931c..4bd63dfc 100644 --- a/APLTestTools/MockCommandHandler.h +++ b/APLTestTools/MockCommandHandler.h @@ -19,7 +19,7 @@ #ifndef __MOCK_COMMAND_HANDLER_H_ #define __MOCK_COMMAND_HANDLER_H_ -#include +#include namespace apl { diff --git a/APLTestTools/MockLogSubscriber.h b/APLTestTools/MockLogSubscriber.h old mode 100755 new mode 100644 index 9e5ae1ee..be0dff8e --- a/APLTestTools/MockLogSubscriber.h +++ b/APLTestTools/MockLogSubscriber.h @@ -19,7 +19,7 @@ #ifndef __MOCK_LOG_SUBSCRIBER_H_ #define __MOCK_LOG_SUBSCRIBER_H_ -#include +#include #include namespace apl diff --git a/APLTestTools/MockLowerLayer.h b/APLTestTools/MockLowerLayer.h index b7e155f7..17dd045b 100644 --- a/APLTestTools/MockLowerLayer.h +++ b/APLTestTools/MockLowerLayer.h @@ -19,7 +19,7 @@ #ifndef __MOCK_LOWER_LAYER_H_ #define __MOCK_LOWER_LAYER_H_ -#include +#include #include "BufferTestObject.h" diff --git a/APLTestTools/MockNodeSaver.h b/APLTestTools/MockNodeSaver.h index 3a4c9ca1..ace572d9 100644 --- a/APLTestTools/MockNodeSaver.h +++ b/APLTestTools/MockNodeSaver.h @@ -21,7 +21,7 @@ #ifndef _MOCK_NODE_SAVER_H_ #define _MOCK_NODE_SAVER_H_ -#include +#include namespace apl { diff --git a/APLTestTools/MockNotifier.h b/APLTestTools/MockNotifier.h index 62fc2a1a..6dc1c41b 100644 --- a/APLTestTools/MockNotifier.h +++ b/APLTestTools/MockNotifier.h @@ -19,7 +19,7 @@ #ifndef _MOCK_NOTIFIER_H_ #define _MOCK_NOTIFIER_H_ -#include +#include namespace apl { diff --git a/APLTestTools/MockPhysicalLayerAsync.cpp b/APLTestTools/MockPhysicalLayerAsync.cpp index 4c071339..d8c8d6b9 100644 --- a/APLTestTools/MockPhysicalLayerAsync.cpp +++ b/APLTestTools/MockPhysicalLayerAsync.cpp @@ -19,7 +19,7 @@ #include "MockPhysicalLayerAsync.h" #include "BufferHelpers.h" -#include +#include #include #include diff --git a/APLTestTools/MockPhysicalLayerAsync.h b/APLTestTools/MockPhysicalLayerAsync.h index 08294732..5bbf44c6 100644 --- a/APLTestTools/MockPhysicalLayerAsync.h +++ b/APLTestTools/MockPhysicalLayerAsync.h @@ -19,8 +19,8 @@ #ifndef __MOCK_PHYSICAL_LAYER_ASYNC_H_ #define __MOCK_PHYSICAL_LAYER_ASYNC_H_ -#include -#include +#include +#include #include "BufferTestObject.h" diff --git a/APLTestTools/MockPhysicalLayerAsyncTS.cpp b/APLTestTools/MockPhysicalLayerAsyncTS.cpp index 1bde8f04..53dad638 100644 --- a/APLTestTools/MockPhysicalLayerAsyncTS.cpp +++ b/APLTestTools/MockPhysicalLayerAsyncTS.cpp @@ -20,7 +20,7 @@ #include #include -#include +#include using namespace boost::system; diff --git a/APLTestTools/MockPhysicalLayerAsyncTS.h b/APLTestTools/MockPhysicalLayerAsyncTS.h index 15a38871..ed7aa371 100644 --- a/APLTestTools/MockPhysicalLayerAsyncTS.h +++ b/APLTestTools/MockPhysicalLayerAsyncTS.h @@ -19,9 +19,9 @@ #ifndef __MOCK_PHYSICAL_LAYER_ASYNC_TS_H_ #define __MOCK_PHYSICAL_LAYER_ASYNC_TS_H_ -#include -#include -#include +#include +#include +#include #include diff --git a/APLTestTools/MockPhysicalLayerMonitor.cpp b/APLTestTools/MockPhysicalLayerMonitor.cpp old mode 100755 new mode 100644 index 6080b879..bbd0ffc9 --- a/APLTestTools/MockPhysicalLayerMonitor.cpp +++ b/APLTestTools/MockPhysicalLayerMonitor.cpp @@ -19,10 +19,10 @@ #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include diff --git a/APLTestTools/MockPhysicalLayerMonitor.h b/APLTestTools/MockPhysicalLayerMonitor.h old mode 100755 new mode 100644 index 65e93dfc..70a7f70b --- a/APLTestTools/MockPhysicalLayerMonitor.h +++ b/APLTestTools/MockPhysicalLayerMonitor.h @@ -17,8 +17,8 @@ #include -#include -#include +#include +#include #include diff --git a/APLTestTools/MockPhysicalLayerSource.cpp b/APLTestTools/MockPhysicalLayerSource.cpp index 1abab9cc..4c88789b 100644 --- a/APLTestTools/MockPhysicalLayerSource.cpp +++ b/APLTestTools/MockPhysicalLayerSource.cpp @@ -20,8 +20,8 @@ #include "MockPhysicalLayerSource.h" #include "MockPhysicalLayerAsync.h" -#include -#include +#include +#include namespace apl { diff --git a/APLTestTools/MockPhysicalLayerSource.h b/APLTestTools/MockPhysicalLayerSource.h index 93f6e38f..264a6d95 100644 --- a/APLTestTools/MockPhysicalLayerSource.h +++ b/APLTestTools/MockPhysicalLayerSource.h @@ -20,8 +20,8 @@ #ifndef __MOCK_PHYSICAL_LAYER_SOURCE_H_ #define __MOCK_PHYSICAL_LAYER_SOURCE_H_ -#include -#include +#include +#include #include diff --git a/APLTestTools/MockResponseAcceptor.h b/APLTestTools/MockResponseAcceptor.h index c199f038..123e456e 100644 --- a/APLTestTools/MockResponseAcceptor.h +++ b/APLTestTools/MockResponseAcceptor.h @@ -21,10 +21,10 @@ #include -#include -#include -#include -#include +#include +#include +#include +#include namespace apl { diff --git a/APLTestTools/MockTimerSource.h b/APLTestTools/MockTimerSource.h index fe7e6cf4..88746e70 100644 --- a/APLTestTools/MockTimerSource.h +++ b/APLTestTools/MockTimerSource.h @@ -20,7 +20,7 @@ #define __MOCK_TIMER_SOURCE_H_ -#include +#include #include #include diff --git a/APLTestTools/MockUpperLayer.cpp b/APLTestTools/MockUpperLayer.cpp index 5d7595f7..2cbfe21e 100644 --- a/APLTestTools/MockUpperLayer.cpp +++ b/APLTestTools/MockUpperLayer.cpp @@ -20,8 +20,8 @@ #include "BufferHelpers.h" -#include -#include +#include +#include #include namespace apl diff --git a/APLTestTools/MockUpperLayer.h b/APLTestTools/MockUpperLayer.h index ce06b0ee..12d1d5aa 100644 --- a/APLTestTools/MockUpperLayer.h +++ b/APLTestTools/MockUpperLayer.h @@ -19,7 +19,7 @@ #ifndef __MOCK_UPPER_LAYER_H_ #define __MOCK_UPPER_LAYER_H_ -#include +#include #include #include "BufferTestObject.h" diff --git a/APLTestTools/PhysicalLayerWrapper.cpp b/APLTestTools/PhysicalLayerWrapper.cpp index 37b061ce..92682d1d 100644 --- a/APLTestTools/PhysicalLayerWrapper.cpp +++ b/APLTestTools/PhysicalLayerWrapper.cpp @@ -18,7 +18,7 @@ // #include "PhysicalLayerWrapper.h" -#include +#include namespace apl { diff --git a/APLTestTools/PhysicalLayerWrapper.h b/APLTestTools/PhysicalLayerWrapper.h index 608c9cf6..9b3b52ed 100644 --- a/APLTestTools/PhysicalLayerWrapper.h +++ b/APLTestTools/PhysicalLayerWrapper.h @@ -19,11 +19,11 @@ #ifndef __PHYSICAL_LAYER_WRAPPER_H_ #define __PHYSICAL_LAYER_WRAPPER_H_ -#include -#include -#include +#include +#include +#include -#include +#include namespace apl { diff --git a/APLTestTools/PhysicalLayerWrapperFactory.h b/APLTestTools/PhysicalLayerWrapperFactory.h index 4920c783..142a3958 100644 --- a/APLTestTools/PhysicalLayerWrapperFactory.h +++ b/APLTestTools/PhysicalLayerWrapperFactory.h @@ -19,13 +19,12 @@ #ifndef _PHYSICAL_LAYER_FACTORY_H_ #define _PHYSICAL_LAYER_FACTORY_H_ - -#include "SerialTypes.h" -#include "Exception.h" -#include "PhysicalLayerFunctors.h" -#include +#include +#include +#include #include +#include namespace apl { diff --git a/APLTestTools/TestTypedefs.h b/APLTestTools/TestTypedefs.h index 2f885289..7a87ffbe 100644 --- a/APLTestTools/TestTypedefs.h +++ b/APLTestTools/TestTypedefs.h @@ -19,7 +19,7 @@ #ifndef __TEST_TYPEDEFS_H_ #define __TEST_TYPEDEFS_H_ -#include +#include #include namespace apl diff --git a/APLTestTools/WrappedTcpPipe.cpp b/APLTestTools/WrappedTcpPipe.cpp old mode 100755 new mode 100644 index c32e9b9e..a9ef545e --- a/APLTestTools/WrappedTcpPipe.cpp +++ b/APLTestTools/WrappedTcpPipe.cpp @@ -1,6 +1,6 @@ #include "WrappedTcpPipe.h" -#include +#include namespace apl { diff --git a/APLTestTools/WrappedTcpPipe.h b/APLTestTools/WrappedTcpPipe.h old mode 100755 new mode 100644 index 87d68d42..66be04aa --- a/APLTestTools/WrappedTcpPipe.h +++ b/APLTestTools/WrappedTcpPipe.h @@ -1,8 +1,8 @@ #ifndef __WRAPPED_TCP_PIPE_H_ #define __WRAPPED_TCP_PIPE_H_ -#include -#include +#include +#include #include "PhysicalLayerWrapper.h" diff --git a/APLXML/PhysicalLayerManagerXML.cpp b/APLXML/PhysicalLayerManagerXML.cpp index f1af2b3d..89283315 100644 --- a/APLXML/PhysicalLayerManagerXML.cpp +++ b/APLXML/PhysicalLayerManagerXML.cpp @@ -22,7 +22,7 @@ #include "PhysicalLayerXMLFactory.h" #include "XMLConversion.h" -#include +#include namespace apl { diff --git a/APLXML/PhysicalLayerManagerXML.h b/APLXML/PhysicalLayerManagerXML.h index e62acd95..5226938c 100644 --- a/APLXML/PhysicalLayerManagerXML.h +++ b/APLXML/PhysicalLayerManagerXML.h @@ -20,7 +20,7 @@ #define __PHYSICAL_LAYER_MANAGER_XML_ #include -#include +#include namespace APLXML_Base diff --git a/APLXML/PhysicalLayerXMLFactory.cpp b/APLXML/PhysicalLayerXMLFactory.cpp index 22ae8b58..4b3f49b1 100644 --- a/APLXML/PhysicalLayerXMLFactory.cpp +++ b/APLXML/PhysicalLayerXMLFactory.cpp @@ -20,7 +20,7 @@ #include "PhysicalLayerXMLFactory.h" -#include +#include #include namespace apl diff --git a/APLXML/PhysicalLayerXMLFactory.h b/APLXML/PhysicalLayerXMLFactory.h index f13c6c36..e12b347e 100644 --- a/APLXML/PhysicalLayerXMLFactory.h +++ b/APLXML/PhysicalLayerXMLFactory.h @@ -20,8 +20,8 @@ #define __PHYSICAL_LAYER_XML_FACTORY_H_ #include -#include -#include +#include +#include namespace apl { diff --git a/APLXML/SingleNodeSaver.h b/APLXML/SingleNodeSaver.h index 35ddcf18..3753d84e 100644 --- a/APLXML/SingleNodeSaver.h +++ b/APLXML/SingleNodeSaver.h @@ -24,7 +24,7 @@ #include "INodeSaver.h" #include "tinybinding.h" -#include +#include namespace apl { diff --git a/APLXML/XMLConversion.h b/APLXML/XMLConversion.h index 8d198841..28bdef40 100644 --- a/APLXML/XMLConversion.h +++ b/APLXML/XMLConversion.h @@ -19,7 +19,7 @@ #ifndef __XML_CONVERSION_H_ #define __XML_CONVERSION_H_ -#include +#include #include namespace apl diff --git a/APLXML/tinybinding.h b/APLXML/tinybinding.h index 052a8ca3..3629072a 100644 --- a/APLXML/tinybinding.h +++ b/APLXML/tinybinding.h @@ -21,10 +21,10 @@ #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include diff --git a/DNP3Java/ExtractFromJAR.java b/DNP3Java/ExtractFromJAR.java old mode 100755 new mode 100644 diff --git a/DNP3Java/JavaDNP3.i b/DNP3Java/JavaDNP3.i old mode 100755 new mode 100644 index 8620cb17..48b6265c --- a/DNP3Java/JavaDNP3.i +++ b/DNP3Java/JavaDNP3.i @@ -2,8 +2,8 @@ %{ /* Includes the header in the wrapper code */ -#include -#include +#include +#include using namespace apl; using namespace apl::dnp; @@ -59,53 +59,53 @@ namespace apl{ %ignore Transaction::Transaction(ITransactable* apTransactable); } -%include "APL/Types.h" -%include "APL/INotifier.h" -%include "APL/LogTypes.h" -%include "APL/LogEntry.h" -%include "APL/LogBase.h" -%include "APL/PhysicalLayerStates.h" -%include "APL/IPhysicalLayerObserver.h" -%include "APL/PhysLayerSettings.h" -%include "APL/SerialTypes.h" -%include "APL/QualityMasks.h" -%include "APL/CommandTypes.h" - -%include "APL/BaseDataTypes.h" +%include +%include +%include +%include +%include +%include +%include +%include +%include +%include +%include + +%include %template(DoublePoint) apl::TypedDataPoint; %template(UnsignedPoint) apl::TypedDataPoint; -%include "APL/DataTypes.h" +%include -%include "APL/ITransactable.h" -%include "APL/DataInterfaces.h" -%include "APL/CommandInterfaces.h" +%include +%include +%include -%include "DNP3/VtoRouterSettings.h" -%include "DNP3/VtoConfig.h" +%include +%include %template(VectorOfVtoRouterConfig) std::vector; -%include "DNP3/VtoData.h" -%include "DNP3/VtoDataInterface.h" +%include +%include -%include "DNP3/PointClass.h" -%include "DNP3/LinkConfig.h" -%include "DNP3/AppConfig.h" -%include "DNP3/MasterConfigTypes.h" -%include "DNP3/IStackObserver.h" -%include "DNP3/ClassMask.h" +%include +%include +%include +%include +%include +%include %template(VectorOfExceptionScan) std::vector; -%include "DNP3/MasterConfig.h" -%include "DNP3/SlaveConfig.h" +%include +%include -%include "DNP3/DeviceTemplateTypes.h" +%include %template(VectorOfEventPointRecord) std::vector; %template(VectorOfDeadbandPointRecord) std::vector; %template(VectorOfControlRecord) std::vector; %template(VectorOfPointRecord) std::vector; -%include "DNP3/DeviceTemplate.h" +%include -%include "DNP3/MasterStackConfig.h" -%include "DNP3/SlaveStackConfig.h" +%include +%include %include @@ -123,5 +123,5 @@ namespace apl{ } -%include "DNP3/StackManager.h" +%include diff --git a/DNP3Java/TestBinding.java b/DNP3Java/TestBinding.java old mode 100755 new mode 100644 diff --git a/DNP3Test/AppLayerTest.h b/DNP3Test/AppLayerTest.h index cc5969cc..2a2c2e94 100644 --- a/DNP3Test/AppLayerTest.h +++ b/DNP3Test/AppLayerTest.h @@ -21,7 +21,7 @@ #define __APP_LAYER_TEST_H_ #include -#include +#include #include #include diff --git a/DNP3Test/ComparingDataObserver.cpp b/DNP3Test/ComparingDataObserver.cpp old mode 100755 new mode 100644 diff --git a/DNP3Test/ComparingDataObserver.h b/DNP3Test/ComparingDataObserver.h old mode 100755 new mode 100644 index a0e7c3f8..8f267cf3 --- a/DNP3Test/ComparingDataObserver.h +++ b/DNP3Test/ComparingDataObserver.h @@ -19,11 +19,11 @@ #ifndef __COMPARING_DATA_OBSERVER_H_ #define __COMPARING_DATA_OBSERVER_H_ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include diff --git a/DNP3Test/DNPHelpers.cpp b/DNP3Test/DNPHelpers.cpp index efab27f9..e2e3985c 100644 --- a/DNP3Test/DNPHelpers.cpp +++ b/DNP3Test/DNPHelpers.cpp @@ -20,10 +20,10 @@ #include -#include -#include +#include +#include #include -#include +#include using namespace apl; using namespace apl::dnp; diff --git a/DNP3Test/DatabaseTestObject.h b/DNP3Test/DatabaseTestObject.h index b0b8e60a..a3409972 100644 --- a/DNP3Test/DatabaseTestObject.h +++ b/DNP3Test/DatabaseTestObject.h @@ -20,8 +20,8 @@ #define __DATABASE_TEST_OBJECT_H_ #include -#include -#include +#include +#include namespace apl { diff --git a/DNP3Test/IntegrationTest.cpp b/DNP3Test/IntegrationTest.cpp index 5382dce8..8ca61ee8 100644 --- a/DNP3Test/IntegrationTest.cpp +++ b/DNP3Test/IntegrationTest.cpp @@ -21,16 +21,16 @@ #include -#include -#include +#include +#include #include -#include -#include +#include +#include -#include -#include +#include +#include #include #include diff --git a/DNP3Test/IntegrationTest.h b/DNP3Test/IntegrationTest.h index 3dfbc8a0..12d50e10 100644 --- a/DNP3Test/IntegrationTest.h +++ b/DNP3Test/IntegrationTest.h @@ -23,12 +23,12 @@ #include #include #include -#include +#include -#include -#include +#include +#include -#include +#include #include "ComparingDataObserver.h" diff --git a/DNP3Test/LinkLayerRouterTest.h b/DNP3Test/LinkLayerRouterTest.h index d69e4282..f7307c5c 100644 --- a/DNP3Test/LinkLayerRouterTest.h +++ b/DNP3Test/LinkLayerRouterTest.h @@ -24,7 +24,7 @@ #include #include -#include +#include namespace apl diff --git a/DNP3Test/LinkLayerTest.h b/DNP3Test/LinkLayerTest.h index b9bc52f4..459905ad 100644 --- a/DNP3Test/LinkLayerTest.h +++ b/DNP3Test/LinkLayerTest.h @@ -23,8 +23,8 @@ #include #include -#include -#include +#include +#include namespace apl { diff --git a/DNP3Test/LinkReceiverTest.h b/DNP3Test/LinkReceiverTest.h index ebf76f11..04c20d78 100644 --- a/DNP3Test/LinkReceiverTest.h +++ b/DNP3Test/LinkReceiverTest.h @@ -19,7 +19,7 @@ #ifndef __LINK_RECEIVER_TEST_H_ #define __LINK_RECEIVER_TEST_H_ -#include +#include #include #include #include "MockFrameSink.h" diff --git a/DNP3Test/MasterTestObject.cpp b/DNP3Test/MasterTestObject.cpp index 15524280..6a19c7b8 100644 --- a/DNP3Test/MasterTestObject.cpp +++ b/DNP3Test/MasterTestObject.cpp @@ -20,7 +20,7 @@ #include #include -#include +#include using namespace std; diff --git a/DNP3Test/MasterTestObject.h b/DNP3Test/MasterTestObject.h index da08e755..9729af73 100644 --- a/DNP3Test/MasterTestObject.h +++ b/DNP3Test/MasterTestObject.h @@ -20,10 +20,10 @@ #define __MASTER_TEST_OBJECT_H_ #include -#include -#include +#include +#include #include -#include +#include #include "MockAppLayer.h" diff --git a/DNP3Test/MockAppLayer.cpp b/DNP3Test/MockAppLayer.cpp index 95d16c91..87cc7049 100644 --- a/DNP3Test/MockAppLayer.cpp +++ b/DNP3Test/MockAppLayer.cpp @@ -19,8 +19,8 @@ #include "MockAppLayer.h" #include -#include -#include +#include +#include namespace apl diff --git a/DNP3Test/MockAppLayer.h b/DNP3Test/MockAppLayer.h index 1798ebd2..d88102ce 100644 --- a/DNP3Test/MockAppLayer.h +++ b/DNP3Test/MockAppLayer.h @@ -20,10 +20,10 @@ #define __MOCK_APP_LAYER_H_ -#include -#include -#include -#include +#include +#include +#include +#include #include namespace apl diff --git a/DNP3Test/MockAppUser.h b/DNP3Test/MockAppUser.h index 22810c67..5f89ccf4 100644 --- a/DNP3Test/MockAppUser.h +++ b/DNP3Test/MockAppUser.h @@ -19,7 +19,7 @@ #ifndef __MOCK_APP_USER_H_ #define __MOCK_APP_USER_H_ -#include +#include #include diff --git a/DNP3Test/MockFrameSink.h b/DNP3Test/MockFrameSink.h index 402159b9..4862348c 100644 --- a/DNP3Test/MockFrameSink.h +++ b/DNP3Test/MockFrameSink.h @@ -19,8 +19,8 @@ #ifndef __MOCK_FRAME_SINK_H_ #define __MOCK_FRAME_SINK_H_ -#include -#include +#include +#include #include #include #include diff --git a/DNP3Test/QueueingStackObserver.h b/DNP3Test/QueueingStackObserver.h index 846cadea..d2a174ed 100644 --- a/DNP3Test/QueueingStackObserver.h +++ b/DNP3Test/QueueingStackObserver.h @@ -19,7 +19,7 @@ #ifndef __QUEUEING_STACK_OBSERVER_H_ #define __QUEUEING_STACK_OBSERVER_H_ -#include +#include #include namespace apl diff --git a/DNP3Test/ReadableVtoWriter.h b/DNP3Test/ReadableVtoWriter.h old mode 100755 new mode 100644 index 92b88c39..c00ccd4c --- a/DNP3Test/ReadableVtoWriter.h +++ b/DNP3Test/ReadableVtoWriter.h @@ -18,8 +18,8 @@ #ifndef __READABLE_VTO_WRITER_H_ #define __READABLE_VTO_WRITER_H_ -#include -#include +#include +#include namespace apl { diff --git a/DNP3Test/ResponseLoaderTestObject.cpp b/DNP3Test/ResponseLoaderTestObject.cpp index 5c0d4ae7..3a06664e 100644 --- a/DNP3Test/ResponseLoaderTestObject.cpp +++ b/DNP3Test/ResponseLoaderTestObject.cpp @@ -19,8 +19,8 @@ #include "ResponseLoaderTestObject.h" #include -#include -#include +#include +#include #include #include diff --git a/DNP3Test/ResponseLoaderTestObject.h b/DNP3Test/ResponseLoaderTestObject.h index 9a59b04a..f32b491d 100644 --- a/DNP3Test/ResponseLoaderTestObject.h +++ b/DNP3Test/ResponseLoaderTestObject.h @@ -19,10 +19,10 @@ #ifndef __RESPONSE_LOADER_TEST_OBJECT_H_ #define __RESPONSE_LOADER_TEST_OBJECT_H_ -#include -#include +#include +#include -#include +#include namespace apl { diff --git a/DNP3Test/SlaveTestObject.cpp b/DNP3Test/SlaveTestObject.cpp index e0648c2b..5f6224bd 100644 --- a/DNP3Test/SlaveTestObject.cpp +++ b/DNP3Test/SlaveTestObject.cpp @@ -19,7 +19,7 @@ #include "SlaveTestObject.h" #include -#include +#include namespace apl diff --git a/DNP3Test/SlaveTestObject.h b/DNP3Test/SlaveTestObject.h index bd2fffe8..8ee5ef51 100644 --- a/DNP3Test/SlaveTestObject.h +++ b/DNP3Test/SlaveTestObject.h @@ -20,13 +20,13 @@ #define __SLAVE_TEST_OBJECT_H_ #include -#include +#include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include "MockAppLayer.h" diff --git a/DNP3Test/StartupTeardownTest.cpp b/DNP3Test/StartupTeardownTest.cpp index a1c9a9c8..cce9fc86 100644 --- a/DNP3Test/StartupTeardownTest.cpp +++ b/DNP3Test/StartupTeardownTest.cpp @@ -19,9 +19,9 @@ #include "StartupTeardownTest.h" -#include -#include -#include +#include +#include +#include #include #include diff --git a/DNP3Test/StartupTeardownTest.h b/DNP3Test/StartupTeardownTest.h index 7da6a4d0..9a0799cf 100644 --- a/DNP3Test/StartupTeardownTest.h +++ b/DNP3Test/StartupTeardownTest.h @@ -19,9 +19,9 @@ #ifndef __STARTUP_TEARDOWN_TEST_H_ #define __STARTUP_TEARDOWN_TEST_H_ -#include -#include -#include +#include +#include +#include namespace boost diff --git a/DNP3Test/TestAPDU.cpp b/DNP3Test/TestAPDU.cpp index cca291d9..f7c76617 100644 --- a/DNP3Test/TestAPDU.cpp +++ b/DNP3Test/TestAPDU.cpp @@ -19,12 +19,12 @@ #include #include -#include -#include -#include +#include +#include +#include -#include -#include +#include +#include #include #include diff --git a/DNP3Test/TestAPDUWriting.cpp b/DNP3Test/TestAPDUWriting.cpp index 8a6e9d6b..2472e906 100644 --- a/DNP3Test/TestAPDUWriting.cpp +++ b/DNP3Test/TestAPDUWriting.cpp @@ -19,15 +19,15 @@ #include #include -#include -#include -#include -#include - -#include -#include -#include -#include +#include +#include +#include +#include + +#include +#include +#include +#include #include #include diff --git a/DNP3Test/TestAppLayer.cpp b/DNP3Test/TestAppLayer.cpp index 6fb9c4a1..0c9e5386 100644 --- a/DNP3Test/TestAppLayer.cpp +++ b/DNP3Test/TestAppLayer.cpp @@ -18,7 +18,7 @@ // #include -#include +#include #include #include diff --git a/DNP3Test/TestCRC.cpp b/DNP3Test/TestCRC.cpp index c5e25035..755c2105 100644 --- a/DNP3Test/TestCRC.cpp +++ b/DNP3Test/TestCRC.cpp @@ -20,7 +20,7 @@ #include #include -#include +#include #include #include diff --git a/DNP3Test/TestEnhancedVtoRouter.cpp b/DNP3Test/TestEnhancedVtoRouter.cpp index 267e8a8a..b30ba9c4 100644 --- a/DNP3Test/TestEnhancedVtoRouter.cpp +++ b/DNP3Test/TestEnhancedVtoRouter.cpp @@ -19,8 +19,8 @@ #include -#include -#include +#include +#include #include #include @@ -28,10 +28,10 @@ #include #include -#include -#include -#include -#include +#include +#include +#include +#include using namespace std; using namespace apl; diff --git a/DNP3Test/TestEventBufferBase.cpp b/DNP3Test/TestEventBufferBase.cpp index ad2cd173..af46b64e 100644 --- a/DNP3Test/TestEventBufferBase.cpp +++ b/DNP3Test/TestEventBufferBase.cpp @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include diff --git a/DNP3Test/TestEventBuffers.cpp b/DNP3Test/TestEventBuffers.cpp index cb671d08..547bfc26 100644 --- a/DNP3Test/TestEventBuffers.cpp +++ b/DNP3Test/TestEventBuffers.cpp @@ -19,9 +19,9 @@ #include #include -#include -#include -#include +#include +#include +#include #include #include diff --git a/DNP3Test/TestIntegration.cpp b/DNP3Test/TestIntegration.cpp index 2d0d0e88..552b05f4 100644 --- a/DNP3Test/TestIntegration.cpp +++ b/DNP3Test/TestIntegration.cpp @@ -18,8 +18,8 @@ #include #include -#include -#include +#include +#include #include diff --git a/DNP3Test/TestLinkFrameDNP.cpp b/DNP3Test/TestLinkFrameDNP.cpp index ed958ddc..5e41d0f7 100644 --- a/DNP3Test/TestLinkFrameDNP.cpp +++ b/DNP3Test/TestLinkFrameDNP.cpp @@ -19,8 +19,8 @@ #include #include -#include -#include +#include +#include #include #include "DNPHelpers.h" diff --git a/DNP3Test/TestLinkLayer.cpp b/DNP3Test/TestLinkLayer.cpp index aee1ac70..d228ae85 100644 --- a/DNP3Test/TestLinkLayer.cpp +++ b/DNP3Test/TestLinkLayer.cpp @@ -19,8 +19,8 @@ #include #include -#include -#include +#include +#include #include #include "LinkLayerTest.h" diff --git a/DNP3Test/TestLinkLayerRouter.cpp b/DNP3Test/TestLinkLayerRouter.cpp index 9085cc85..8279215e 100644 --- a/DNP3Test/TestLinkLayerRouter.cpp +++ b/DNP3Test/TestLinkLayerRouter.cpp @@ -20,10 +20,10 @@ #include #include -#include -#include +#include +#include -#include +#include #include "LinkLayerRouterTest.h" #include "MockFrameSink.h" diff --git a/DNP3Test/TestLinkRoute.cpp b/DNP3Test/TestLinkRoute.cpp index d01fc603..a1c0eaf5 100644 --- a/DNP3Test/TestLinkRoute.cpp +++ b/DNP3Test/TestLinkRoute.cpp @@ -18,7 +18,7 @@ // #include -#include +#include #include #include diff --git a/DNP3Test/TestMaster.cpp b/DNP3Test/TestMaster.cpp index 182df3c8..5120a7d4 100644 --- a/DNP3Test/TestMaster.cpp +++ b/DNP3Test/TestMaster.cpp @@ -20,8 +20,8 @@ #include -#include -#include +#include +#include #include "MasterTestObject.h" #include "QueueingStackObserver.h" diff --git a/DNP3Test/TestObjects.cpp b/DNP3Test/TestObjects.cpp index f2010f21..f6fb74c1 100644 --- a/DNP3Test/TestObjects.cpp +++ b/DNP3Test/TestObjects.cpp @@ -19,7 +19,7 @@ #include #include -#include +#include using namespace apl; using namespace std; diff --git a/DNP3Test/TestSlave.cpp b/DNP3Test/TestSlave.cpp index 58ca6f8e..c27d679b 100644 --- a/DNP3Test/TestSlave.cpp +++ b/DNP3Test/TestSlave.cpp @@ -23,10 +23,10 @@ #include "SlaveTestObject.h" -#include -#include -#include -#include +#include +#include +#include +#include using namespace std; using namespace apl; diff --git a/DNP3Test/TestSlaveEventBuffer.cpp b/DNP3Test/TestSlaveEventBuffer.cpp index 8ad1afdc..e1f9a907 100644 --- a/DNP3Test/TestSlaveEventBuffer.cpp +++ b/DNP3Test/TestSlaveEventBuffer.cpp @@ -19,10 +19,10 @@ #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include using namespace std; diff --git a/DNP3Test/TestStackManager.cpp b/DNP3Test/TestStackManager.cpp old mode 100755 new mode 100644 index 81bf222d..4980b15d --- a/DNP3Test/TestStackManager.cpp +++ b/DNP3Test/TestStackManager.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include using namespace apl; using namespace apl::dnp; diff --git a/DNP3Test/TestTransportLayer.cpp b/DNP3Test/TestTransportLayer.cpp index 77e42f83..b6baef78 100644 --- a/DNP3Test/TestTransportLayer.cpp +++ b/DNP3Test/TestTransportLayer.cpp @@ -20,11 +20,11 @@ #include #include "TransportTestObject.h" -#include +#include -#include -#include -#include +#include +#include +#include #include diff --git a/DNP3Test/TestTransportLoopback.cpp b/DNP3Test/TestTransportLoopback.cpp index ede0e640..8cc466ce 100644 --- a/DNP3Test/TestTransportLoopback.cpp +++ b/DNP3Test/TestTransportLoopback.cpp @@ -23,14 +23,14 @@ #include #include -#include +#include #include -#include -#include +#include +#include #include #include -#include +#include using namespace std; using namespace apl; diff --git a/DNP3Test/TestTransportScalability.cpp b/DNP3Test/TestTransportScalability.cpp index fb5d3d7e..286c1530 100644 --- a/DNP3Test/TestTransportScalability.cpp +++ b/DNP3Test/TestTransportScalability.cpp @@ -24,8 +24,8 @@ #include #include -#include -#include +#include +#include #include diff --git a/DNP3Test/TestVtoInterface.cpp b/DNP3Test/TestVtoInterface.cpp index 52792ef1..6579449c 100644 --- a/DNP3Test/TestVtoInterface.cpp +++ b/DNP3Test/TestVtoInterface.cpp @@ -19,20 +19,20 @@ #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include using namespace std; using namespace apl; diff --git a/DNP3Test/TestVtoLoopbackIntegration.cpp b/DNP3Test/TestVtoLoopbackIntegration.cpp index 389193fd..8c194f2f 100644 --- a/DNP3Test/TestVtoLoopbackIntegration.cpp +++ b/DNP3Test/TestVtoLoopbackIntegration.cpp @@ -17,8 +17,8 @@ #include -#include -#include +#include +#include #include diff --git a/DNP3Test/TestVtoOnewayIntegration.cpp b/DNP3Test/TestVtoOnewayIntegration.cpp old mode 100755 new mode 100644 index 0c34942d..60176d1c --- a/DNP3Test/TestVtoOnewayIntegration.cpp +++ b/DNP3Test/TestVtoOnewayIntegration.cpp @@ -18,7 +18,7 @@ #include -#include +#include #include #include "VtoIntegrationTestBase.h" diff --git a/DNP3Test/TestVtoRouter.cpp b/DNP3Test/TestVtoRouter.cpp index 6fe7cfc7..8c37ac5f 100644 --- a/DNP3Test/TestVtoRouter.cpp +++ b/DNP3Test/TestVtoRouter.cpp @@ -19,16 +19,16 @@ #include -#include -#include +#include +#include #include #include #include #include -#include -#include +#include +#include #include "ReadableVtoWriter.h" diff --git a/DNP3Test/TestVtoRouterManager.cpp b/DNP3Test/TestVtoRouterManager.cpp index e5e045aa..220bb808 100644 --- a/DNP3Test/TestVtoRouterManager.cpp +++ b/DNP3Test/TestVtoRouterManager.cpp @@ -17,13 +17,13 @@ #include -#include -#include -#include +#include +#include +#include -#include -#include -#include +#include +#include +#include #include #include diff --git a/DNP3Test/TestVtoWriter.cpp b/DNP3Test/TestVtoWriter.cpp old mode 100755 new mode 100644 index 018a2239..02898df8 --- a/DNP3Test/TestVtoWriter.cpp +++ b/DNP3Test/TestVtoWriter.cpp @@ -18,9 +18,9 @@ // #include -#include -#include -#include +#include +#include +#include using namespace std; using namespace apl; diff --git a/DNP3Test/TransportIntegrationStack.cpp b/DNP3Test/TransportIntegrationStack.cpp index 50cf811b..39471610 100644 --- a/DNP3Test/TransportIntegrationStack.cpp +++ b/DNP3Test/TransportIntegrationStack.cpp @@ -18,7 +18,7 @@ // #include "TransportIntegrationStack.h" -#include +#include namespace apl { diff --git a/DNP3Test/TransportIntegrationStack.h b/DNP3Test/TransportIntegrationStack.h index b091cf02..25be1bce 100644 --- a/DNP3Test/TransportIntegrationStack.h +++ b/DNP3Test/TransportIntegrationStack.h @@ -19,9 +19,9 @@ #ifndef __TRANSPORT_INTEGRATION_STACK_H_ #define __TRANSPORT_INTEGRATION_STACK_H_ -#include -#include -#include +#include +#include +#include #include diff --git a/DNP3Test/TransportLoopbackTestObject.cpp b/DNP3Test/TransportLoopbackTestObject.cpp index 15c43657..7ce75aa7 100644 --- a/DNP3Test/TransportLoopbackTestObject.cpp +++ b/DNP3Test/TransportLoopbackTestObject.cpp @@ -18,7 +18,7 @@ // #include "TransportLoopbackTestObject.h" -#include +#include #include #include diff --git a/DNP3Test/TransportLoopbackTestObject.h b/DNP3Test/TransportLoopbackTestObject.h index 629c19e4..1a286c5c 100644 --- a/DNP3Test/TransportLoopbackTestObject.h +++ b/DNP3Test/TransportLoopbackTestObject.h @@ -21,13 +21,13 @@ #include -#include +#include #include #include -#include -#include -#include +#include +#include +#include namespace apl { diff --git a/DNP3Test/TransportScalabilityTestObject.h b/DNP3Test/TransportScalabilityTestObject.h index f4c57f9d..d67d5b67 100644 --- a/DNP3Test/TransportScalabilityTestObject.h +++ b/DNP3Test/TransportScalabilityTestObject.h @@ -22,7 +22,7 @@ #include "TransportStackPair.h" #include -#include +#include #include namespace apl diff --git a/DNP3Test/TransportStackPair.cpp b/DNP3Test/TransportStackPair.cpp index ec4ccfce..cc435c84 100644 --- a/DNP3Test/TransportStackPair.cpp +++ b/DNP3Test/TransportStackPair.cpp @@ -21,7 +21,7 @@ #include -#include +#include namespace apl { diff --git a/DNP3Test/TransportStackPair.h b/DNP3Test/TransportStackPair.h index 1f6bad1b..b8be4034 100644 --- a/DNP3Test/TransportStackPair.h +++ b/DNP3Test/TransportStackPair.h @@ -28,9 +28,9 @@ class io_service; } -#include -#include -#include +#include +#include +#include #include "TransportIntegrationStack.h" diff --git a/DNP3Test/TransportTestObject.cpp b/DNP3Test/TransportTestObject.cpp index 69060977..713a4b5c 100644 --- a/DNP3Test/TransportTestObject.cpp +++ b/DNP3Test/TransportTestObject.cpp @@ -19,7 +19,7 @@ #include "TransportTestObject.h" #include -#include +#include #include #include diff --git a/DNP3Test/TransportTestObject.h b/DNP3Test/TransportTestObject.h index d5a9aa2f..d150c6d9 100644 --- a/DNP3Test/TransportTestObject.h +++ b/DNP3Test/TransportTestObject.h @@ -19,14 +19,14 @@ #ifndef __TRANSPORT_TEST_OBJECT_H_ #define __TRANSPORT_TEST_OBJECT_H_ -#include +#include #include #include #include #include -#include +#include #include namespace apl diff --git a/DNP3Test/VtoIntegrationTestBase.cpp b/DNP3Test/VtoIntegrationTestBase.cpp old mode 100755 new mode 100644 index 9328b229..83e6044b --- a/DNP3Test/VtoIntegrationTestBase.cpp +++ b/DNP3Test/VtoIntegrationTestBase.cpp @@ -16,11 +16,11 @@ */ #include "VtoIntegrationTestBase.h" -#include +#include -#include -#include -#include +#include +#include +#include /** Platforms have different reserved port ranges */ diff --git a/DNP3Test/VtoIntegrationTestBase.h b/DNP3Test/VtoIntegrationTestBase.h old mode 100755 new mode 100644 index 6d04c794..05186fce --- a/DNP3Test/VtoIntegrationTestBase.h +++ b/DNP3Test/VtoIntegrationTestBase.h @@ -23,13 +23,13 @@ #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include -#include +#include /** Platforms have different reserved port ranges */ diff --git a/DNP3XML/XML_DNP3.cpp b/DNP3XML/XML_DNP3.cpp index 05763007..826d64fa 100644 --- a/DNP3XML/XML_DNP3.cpp +++ b/DNP3XML/XML_DNP3.cpp @@ -18,15 +18,15 @@ // #include "XML_DNP3.h" -#include #include +#include -#include +#include +#include +#include +#include -#include -#include -#include -#include +#include namespace apl { diff --git a/DNP3XML/XmlToConfig.cpp b/DNP3XML/XmlToConfig.cpp index 2b2d712d..b26d2ad2 100644 --- a/DNP3XML/XmlToConfig.cpp +++ b/DNP3XML/XmlToConfig.cpp @@ -26,16 +26,16 @@ #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include using namespace APLXML_Base; diff --git a/DNP3XML/XmlToConfig.h b/DNP3XML/XmlToConfig.h index 0131b1c3..022a8e1a 100644 --- a/DNP3XML/XmlToConfig.h +++ b/DNP3XML/XmlToConfig.h @@ -19,15 +19,14 @@ #ifndef __XML_TO_CONFIG_H_ #define __XML_TO_CONFIG_H_ -#include - +#include +#include -#include -#include #include -#include #include +#include +#include namespace APLXML_DNP { diff --git a/Makefile.am b/Makefile.am index 00ecb747..e098126c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -20,146 +20,146 @@ libopendnp3_la_LDFLAGS = -version-info 0:0:0 libopendnp3_la_LIBADD = $(BOOST_LDFLAGS) $(CORE_BOOST_LIBS) libopendnp3_la_DEPENDENCIES = libopendnp3_la_SOURCES = \ - APL/ASIOSerialHelpers.cpp \ - APL/AsyncLayerInterfaces.cpp \ - APL/AsyncResult.cpp \ - APL/AsyncTaskBase.cpp \ - APL/AsyncTaskContinuous.cpp \ - APL/AsyncTaskGroup.cpp \ - APL/AsyncTaskNonPeriodic.cpp \ - APL/AsyncTaskPeriodic.cpp \ - APL/AsyncTaskScheduler.cpp \ - APL/BaseDataTypes.cpp \ - APL/CommandManager.cpp \ - APL/CommandQueue.cpp \ - APL/CommandResponseQueue.cpp \ - APL/CommandTypes.cpp \ - APL/CopyableBuffer.cpp \ - APL/CRC.cpp \ - APL/EventLock.cpp \ - APL/Exception.cpp \ - APL/FlexibleDataObserver.cpp \ - APL/IHandlerAsync.cpp \ - APL/ITimerSource.cpp \ - APL/IOService.cpp \ - APL/IOServiceThread.cpp \ - APL/LockBase.cpp \ - APL/LockBoost.cpp \ - APL/Log.cpp \ - APL/LogEntryCircularBuffer.cpp \ - APL/LogEntry.cpp \ - APL/Loggable.cpp \ - APL/Logger.cpp \ - APL/LogToFile.cpp \ - APL/LogToStdio.cpp \ - APL/LogTypes.cpp \ - APL/LowerLayerToPhysAdapter.cpp \ - APL/MetricBuffer.cpp \ - APL/MultiplexingDataObserver.cpp \ - APL/PackingUnpacking.cpp \ - APL/Parsing.cpp \ - APL/PhysicalLayerAsyncBase.cpp \ - APL/PhysicalLayerAsyncBaseTCP.cpp \ - APL/PhysicalLayerAsyncSerial.cpp \ - APL/PhysicalLayerAsyncTCPClient.cpp \ - APL/PhysicalLayerAsyncTCPServer.cpp \ - APL/PhysicalLayerFactory.cpp \ - APL/PhysicalLayerInstance.cpp \ - APL/PhysicalLayerManager.cpp \ - APL/PhysicalLayerMap.cpp \ - APL/PhysicalLayerMonitor.cpp \ - APL/PhysicalLayerMonitorStates.cpp \ - APL/PhysicalLayerStates.cpp \ - APL/PhysLoopback.cpp \ - APL/PostingNotifier.cpp \ - APL/PostingNotifierSource.cpp \ - APL/ProtocolUtil.cpp \ - APL/QualityConverter.cpp \ - APL/RandomizedBuffer.cpp \ - APL/ShiftableBuffer.cpp \ - APL/SuspendTimerSource.cpp \ - APL/Threadable.cpp \ - APL/ThreadBase.cpp \ - APL/ThreadBoost.cpp \ - APL/TimeBase.cpp \ - APL/TimeBoost.cpp \ - APL/Timeout.cpp \ - APL/TimerASIO.cpp \ - APL/TimerSourceASIO.cpp \ - APL/TimeSource.cpp \ - APL/TimingTools.cpp \ - APL/ToHex.cpp \ - APL/TrackingTaskGroup.cpp \ - APL/Util.cpp \ - DNP3/AlwaysOpeningVtoRouter.cpp \ - DNP3/APDUConstants.cpp \ - DNP3/APDU.cpp \ - DNP3/AppChannelStates.cpp \ - DNP3/AppHeader.cpp \ - DNP3/AppInterfaces.cpp \ - DNP3/AppLayerChannel.cpp \ - DNP3/AppLayer.cpp \ - DNP3/AsyncStackManager.cpp \ - DNP3/BufferTypes.cpp \ - DNP3/ClassCounter.cpp \ - DNP3/ControlTasks.cpp \ - DNP3/Database.cpp \ - DNP3/DataPoll.cpp \ - DNP3/DeviceTemplate.cpp \ - DNP3/DNPCommandMaster.cpp \ - DNP3/DNPCrc.cpp \ - DNP3/EnhancedVto.cpp \ - DNP3/EnhancedVtoRouter.cpp \ - DNP3/HeaderReadIterator.cpp \ - DNP3/IndexedWriteIterator.cpp \ - DNP3/IStackObserver.cpp \ - DNP3/LinkChannel.cpp \ - DNP3/LinkFrame.cpp \ - DNP3/LinkHeader.cpp \ - DNP3/LinkLayerConstants.cpp \ - DNP3/LinkLayer.cpp \ - DNP3/LinkLayerReceiver.cpp \ - DNP3/LinkLayerRouter.cpp \ - DNP3/LinkReceiverStates.cpp \ - DNP3/LinkRoute.cpp \ - DNP3/Master.cpp \ - DNP3/MasterSchedule.cpp \ - DNP3/MasterStack.cpp \ - DNP3/MasterStates.cpp \ - DNP3/MasterTaskBase.cpp \ - DNP3/ObjectHeader.cpp \ - DNP3/ObjectInterfaces.cpp \ - DNP3/ObjectReadIterator.cpp \ - DNP3/Objects.cpp \ - DNP3/ObjectWriteIterator.cpp \ - DNP3/PointClass.cpp \ - DNP3/PriLinkLayerStates.cpp \ - DNP3/ResponseContext.cpp \ - DNP3/ResponseLoader.cpp \ - DNP3/SecLinkLayerStates.cpp \ - DNP3/SlaveConfig.cpp \ - DNP3/Slave.cpp \ - DNP3/SlaveEventBuffer.cpp \ - DNP3/SlaveResponseTypes.cpp \ - DNP3/SlaveStack.cpp \ - DNP3/SlaveStates.cpp \ - DNP3/SolicitedChannel.cpp \ - DNP3/Stack.cpp \ - DNP3/StackManager.cpp \ - DNP3/StartupTasks.cpp \ - DNP3/TLS_Base.cpp \ - DNP3/TransportLayer.cpp \ - DNP3/TransportRx.cpp \ - DNP3/TransportStates.cpp \ - DNP3/TransportTx.cpp \ - DNP3/UnsolicitedChannel.cpp \ - DNP3/VtoData.cpp \ - DNP3/VtoReader.cpp \ - DNP3/VtoRouter.cpp \ - DNP3/VtoRouterManager.cpp \ - DNP3/VtoRouterSettings.cpp \ - DNP3/VtoTransmitTask.cpp \ - DNP3/VtoWriter.cpp + opendnp3/APL/ASIOSerialHelpers.cpp \ + opendnp3/APL/AsyncLayerInterfaces.cpp \ + opendnp3/APL/AsyncResult.cpp \ + opendnp3/APL/AsyncTaskBase.cpp \ + opendnp3/APL/AsyncTaskContinuous.cpp \ + opendnp3/APL/AsyncTaskGroup.cpp \ + opendnp3/APL/AsyncTaskNonPeriodic.cpp \ + opendnp3/APL/AsyncTaskPeriodic.cpp \ + opendnp3/APL/AsyncTaskScheduler.cpp \ + opendnp3/APL/BaseDataTypes.cpp \ + opendnp3/APL/CommandManager.cpp \ + opendnp3/APL/CommandQueue.cpp \ + opendnp3/APL/CommandResponseQueue.cpp \ + opendnp3/APL/CommandTypes.cpp \ + opendnp3/APL/CopyableBuffer.cpp \ + opendnp3/APL/CRC.cpp \ + opendnp3/APL/EventLock.cpp \ + opendnp3/APL/Exception.cpp \ + opendnp3/APL/FlexibleDataObserver.cpp \ + opendnp3/APL/IHandlerAsync.cpp \ + opendnp3/APL/ITimerSource.cpp \ + opendnp3/APL/IOService.cpp \ + opendnp3/APL/IOServiceThread.cpp \ + opendnp3/APL/LockBase.cpp \ + opendnp3/APL/LockBoost.cpp \ + opendnp3/APL/Log.cpp \ + opendnp3/APL/LogEntryCircularBuffer.cpp \ + opendnp3/APL/LogEntry.cpp \ + opendnp3/APL/Loggable.cpp \ + opendnp3/APL/Logger.cpp \ + opendnp3/APL/LogToFile.cpp \ + opendnp3/APL/LogToStdio.cpp \ + opendnp3/APL/LogTypes.cpp \ + opendnp3/APL/LowerLayerToPhysAdapter.cpp \ + opendnp3/APL/MetricBuffer.cpp \ + opendnp3/APL/MultiplexingDataObserver.cpp \ + opendnp3/APL/PackingUnpacking.cpp \ + opendnp3/APL/Parsing.cpp \ + opendnp3/APL/PhysicalLayerAsyncBase.cpp \ + opendnp3/APL/PhysicalLayerAsyncBaseTCP.cpp \ + opendnp3/APL/PhysicalLayerAsyncSerial.cpp \ + opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp \ + opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp \ + opendnp3/APL/PhysicalLayerFactory.cpp \ + opendnp3/APL/PhysicalLayerInstance.cpp \ + opendnp3/APL/PhysicalLayerManager.cpp \ + opendnp3/APL/PhysicalLayerMap.cpp \ + opendnp3/APL/PhysicalLayerMonitor.cpp \ + opendnp3/APL/PhysicalLayerMonitorStates.cpp \ + opendnp3/APL/PhysicalLayerStates.cpp \ + opendnp3/APL/PhysLoopback.cpp \ + opendnp3/APL/PostingNotifier.cpp \ + opendnp3/APL/PostingNotifierSource.cpp \ + opendnp3/APL/ProtocolUtil.cpp \ + opendnp3/APL/QualityConverter.cpp \ + opendnp3/APL/RandomizedBuffer.cpp \ + opendnp3/APL/ShiftableBuffer.cpp \ + opendnp3/APL/SuspendTimerSource.cpp \ + opendnp3/APL/Threadable.cpp \ + opendnp3/APL/ThreadBase.cpp \ + opendnp3/APL/ThreadBoost.cpp \ + opendnp3/APL/TimeBase.cpp \ + opendnp3/APL/TimeBoost.cpp \ + opendnp3/APL/Timeout.cpp \ + opendnp3/APL/TimerASIO.cpp \ + opendnp3/APL/TimerSourceASIO.cpp \ + opendnp3/APL/TimeSource.cpp \ + opendnp3/APL/TimingTools.cpp \ + opendnp3/APL/ToHex.cpp \ + opendnp3/APL/TrackingTaskGroup.cpp \ + opendnp3/APL/Util.cpp \ + opendnp3/DNP3/AlwaysOpeningVtoRouter.cpp \ + opendnp3/DNP3/APDUConstants.cpp \ + opendnp3/DNP3/APDU.cpp \ + opendnp3/DNP3/AppChannelStates.cpp \ + opendnp3/DNP3/AppHeader.cpp \ + opendnp3/DNP3/AppInterfaces.cpp \ + opendnp3/DNP3/AppLayerChannel.cpp \ + opendnp3/DNP3/AppLayer.cpp \ + opendnp3/DNP3/AsyncStackManager.cpp \ + opendnp3/DNP3/BufferTypes.cpp \ + opendnp3/DNP3/ClassCounter.cpp \ + opendnp3/DNP3/ControlTasks.cpp \ + opendnp3/DNP3/Database.cpp \ + opendnp3/DNP3/DataPoll.cpp \ + opendnp3/DNP3/DeviceTemplate.cpp \ + opendnp3/DNP3/DNPCommandMaster.cpp \ + opendnp3/DNP3/DNPCrc.cpp \ + opendnp3/DNP3/EnhancedVto.cpp \ + opendnp3/DNP3/EnhancedVtoRouter.cpp \ + opendnp3/DNP3/HeaderReadIterator.cpp \ + opendnp3/DNP3/IndexedWriteIterator.cpp \ + opendnp3/DNP3/IStackObserver.cpp \ + opendnp3/DNP3/LinkChannel.cpp \ + opendnp3/DNP3/LinkFrame.cpp \ + opendnp3/DNP3/LinkHeader.cpp \ + opendnp3/DNP3/LinkLayerConstants.cpp \ + opendnp3/DNP3/LinkLayer.cpp \ + opendnp3/DNP3/LinkLayerReceiver.cpp \ + opendnp3/DNP3/LinkLayerRouter.cpp \ + opendnp3/DNP3/LinkReceiverStates.cpp \ + opendnp3/DNP3/LinkRoute.cpp \ + opendnp3/DNP3/Master.cpp \ + opendnp3/DNP3/MasterSchedule.cpp \ + opendnp3/DNP3/MasterStack.cpp \ + opendnp3/DNP3/MasterStates.cpp \ + opendnp3/DNP3/MasterTaskBase.cpp \ + opendnp3/DNP3/ObjectHeader.cpp \ + opendnp3/DNP3/ObjectInterfaces.cpp \ + opendnp3/DNP3/ObjectReadIterator.cpp \ + opendnp3/DNP3/Objects.cpp \ + opendnp3/DNP3/ObjectWriteIterator.cpp \ + opendnp3/DNP3/PointClass.cpp \ + opendnp3/DNP3/PriLinkLayerStates.cpp \ + opendnp3/DNP3/ResponseContext.cpp \ + opendnp3/DNP3/ResponseLoader.cpp \ + opendnp3/DNP3/SecLinkLayerStates.cpp \ + opendnp3/DNP3/SlaveConfig.cpp \ + opendnp3/DNP3/Slave.cpp \ + opendnp3/DNP3/SlaveEventBuffer.cpp \ + opendnp3/DNP3/SlaveResponseTypes.cpp \ + opendnp3/DNP3/SlaveStack.cpp \ + opendnp3/DNP3/SlaveStates.cpp \ + opendnp3/DNP3/SolicitedChannel.cpp \ + opendnp3/DNP3/Stack.cpp \ + opendnp3/DNP3/StackManager.cpp \ + opendnp3/DNP3/StartupTasks.cpp \ + opendnp3/DNP3/TLS_Base.cpp \ + opendnp3/DNP3/TransportLayer.cpp \ + opendnp3/DNP3/TransportRx.cpp \ + opendnp3/DNP3/TransportStates.cpp \ + opendnp3/DNP3/TransportTx.cpp \ + opendnp3/DNP3/UnsolicitedChannel.cpp \ + opendnp3/DNP3/VtoData.cpp \ + opendnp3/DNP3/VtoReader.cpp \ + opendnp3/DNP3/VtoRouter.cpp \ + opendnp3/DNP3/VtoRouterManager.cpp \ + opendnp3/DNP3/VtoRouterSettings.cpp \ + opendnp3/DNP3/VtoTransmitTask.cpp \ + opendnp3/DNP3/VtoWriter.cpp if WANT_JAVA JAVA_DIR=$(top_srcdir)/java @@ -300,221 +300,227 @@ DNP3Java/PythonDNP3.cpp: DNP3Java/JavaDNP3.i BUILT_SOURCES += DNP3Java/PythonDNP3.cpp endif -nobase_pkginclude_HEADERS= \ - version.hpp \ - APL/ASIOSerialHelpers.h \ - APL/AsyncLayerInterfaces.h \ - APL/AsyncResult.h \ - APL/AsyncTaskBase.h \ - APL/AsyncTaskContinuous.h \ - APL/AsyncTaskGroup.h \ - APL/AsyncTaskInterfaces.h \ - APL/AsyncTaskNonPeriodic.h \ - APL/AsyncTaskPeriodic.h \ - APL/AsyncTaskScheduler.h \ - APL/BaseDataTypes.h \ - APL/BoundNotifier.h \ - APL/CachedLogVariable.h \ - APL/ChangeBuffer.h \ - APL/CommandInterfaces.h \ - APL/CommandManager.h \ - APL/CommandQueue.h \ - APL/CommandResponseQueue.h \ - APL/CommandTypes.h \ - APL/Configure.h \ - APL/CopyableBuffer.h \ - APL/CRC.h \ - APL/DataInterfaces.h \ - APL/DataTypes.h \ - APL/DeleteAny.h \ - APL/EventLockBase.h \ - APL/EventLock.h \ - APL/EventSet.h \ - APL/Exception.h \ - APL/FlexibleDataObserver.h \ - APL/Function.h \ - APL/GetKeys.h \ - APL/IEventLock.h \ - APL/IHandlerAsync.h \ - APL/INotifier.h \ - APL/IOService.h \ - APL/IOServiceThread.h \ - APL/IPhysicalLayerAsync.h \ - APL/IPhysicalLayerObserver.h \ - APL/IPhysicalLayerSource.h \ - APL/ISubject.h \ - APL/ITimer.h \ - APL/ITimerSource.h \ - APL/ITimeSource.h \ - APL/ITransactable.h \ - APL/LockBase.h \ - APL/LockBoost.h \ - APL/Lock.h \ - APL/LogBase.h \ - APL/LogEntryCircularBuffer.h \ - APL/LogEntry.h \ - APL/Loggable.h \ - APL/Logger.h \ - APL/Log.h \ - APL/LogToFile.h \ - APL/LogToStdio.h \ - APL/LogTypes.h \ - APL/LogVar.h \ - APL/LowerLayerToPhysAdapter.h \ - APL/MetricBuffer.h \ - APL/MultiplexingDataObserver.h \ - APL/Notifier.h \ - APL/PackingTemplates.h \ - APL/PackingUnpacking.h \ - APL/Parsing.h \ - APL/PhysicalLayerAsyncASIO.h \ - APL/PhysicalLayerAsyncBase.h \ - APL/PhysicalLayerAsyncBaseTCP.h \ - APL/PhysicalLayerAsyncSerial.h \ - APL/PhysicalLayerAsyncTCPClient.h \ - APL/PhysicalLayerAsyncTCPServer.h \ - APL/PhysicalLayerAsyncTCPv4Client.h \ - APL/PhysicalLayerAsyncTCPv4Server.h \ - APL/PhysicalLayerAsyncTCPv6Client.h \ - APL/PhysicalLayerAsyncTCPv6Server.h \ - APL/PhysicalLayerFactory.h \ - APL/PhysicalLayerFunctors.h \ - APL/PhysicalLayerInstance.h \ - APL/PhysicalLayerManager.h \ - APL/PhysicalLayerMap.h \ - APL/PhysicalLayerMonitor.h \ - APL/PhysicalLayerMonitorStates.h \ - APL/PhysicalLayerStates.h \ - APL/PhysLayerSettings.h \ - APL/PhysLoopback.h \ - APL/PostingNotifier.h \ - APL/PostingNotifierSource.h \ - APL/ProtocolUtil.h \ - APL/QualityConverter.h \ - APL/QualityMasks.h \ - APL/QueueingFDO.h \ - APL/Random.h \ - APL/RandomDouble.h \ - APL/RandomizedBuffer.h \ - APL/SerialTypes.h \ - APL/ShiftableBuffer.h \ - APL/Singleton.h \ - APL/SubjectBase.h \ - APL/SuspendTimerSource.h \ - APL/SyncVar.h \ - APL/Threadable.h \ - APL/ThreadBase.h \ - APL/ThreadBoost.h \ - APL/Thread.h \ - APL/TimeBase.h \ - APL/TimeBoost.h \ - APL/Timeout.h \ - APL/TimerASIO.h \ - APL/TimerSourceASIO.h \ - APL/TimeSource.h \ - APL/TimeTypes.h \ - APL/TimingTools.h \ - APL/ToHex.h \ - APL/TrackingTaskGroup.h \ - APL/Types.h \ - APL/Uncopyable.h \ - APL/Util.h \ - DNP3/AlwaysOpeningVtoRouter.h \ - DNP3/APDUConstants.h \ - DNP3/APDU.h \ - DNP3/AppChannelStates.h \ - DNP3/AppConfig.h \ - DNP3/AppHeader.h \ - DNP3/AppInterfaces.h \ - DNP3/AppLayerChannel.h \ - DNP3/AppLayer.h \ - DNP3/AsyncStackManager.h \ - DNP3/BufferSetTypes.h \ - DNP3/BufferTypes.h \ - DNP3/ClassCounter.h \ - DNP3/ClassMask.h \ - DNP3/ControlTasks.h \ - DNP3/CTOHistory.h \ - DNP3/Database.h \ - DNP3/DatabaseInterfaces.h \ - DNP3/DataPoll.h \ - DNP3/DeviceTemplate.h \ - DNP3/DeviceTemplateTypes.h \ - DNP3/DNPCommandMaster.h \ - DNP3/DNPConstants.h \ - DNP3/DNPCrc.h \ - DNP3/DNPDatabaseTypes.h \ - DNP3/DNPExceptions.h \ - DNP3/DNPFromStream.h \ - DNP3/DNPToStream.h \ - DNP3/EnhancedVto.h \ - DNP3/EnhancedVtoRouter.h \ - DNP3/EventBufferBase.h \ - DNP3/EventBuffers.h \ - DNP3/EventTypes.h \ - DNP3/HeaderReadIterator.h \ - DNP3/IFrameSink.h \ - DNP3/ILinkContext.h \ - DNP3/ILinkRouter.h \ - DNP3/IndexedWriteIterator.h \ - DNP3/IStackObserver.h \ - DNP3/IVtoEventAcceptor.h \ - DNP3/LinkChannel.h \ - DNP3/LinkConfig.h \ - DNP3/LinkFrame.h \ - DNP3/LinkHeader.h \ - DNP3/LinkLayerConstants.h \ - DNP3/LinkLayer.h \ - DNP3/LinkLayerReceiver.h \ - DNP3/LinkLayerRouter.h \ - DNP3/LinkReceiverStates.h \ - DNP3/LinkRoute.h \ - DNP3/MasterConfig.h \ - DNP3/MasterConfigTypes.h \ - DNP3/Master.h \ - DNP3/MasterSchedule.h \ - DNP3/MasterStackConfig.h \ - DNP3/MasterStack.h \ - DNP3/MasterStates.h \ - DNP3/MasterTaskBase.h \ - DNP3/ObjectHeader.h \ - DNP3/ObjectInterfaces.h \ - DNP3/ObjectReadIterator.h \ - DNP3/Objects.h \ - DNP3/ObjectWriteIterator.h \ - DNP3/PointClass.h \ - DNP3/PriLinkLayerStates.h \ - DNP3/ResponseContext.h \ - DNP3/ResponseLoader.h \ - DNP3/SecLinkLayerStates.h \ - DNP3/SlaveConfig.h \ - DNP3/SlaveEventBuffer.h \ - DNP3/Slave.h \ - DNP3/SlaveResponseTypes.h \ - DNP3/SlaveStackConfig.h \ - DNP3/SlaveStack.h \ - DNP3/SlaveStates.h \ - DNP3/SolicitedChannel.h \ - DNP3/Stack.h \ - DNP3/StackManager.h \ - DNP3/StartupTasks.h \ - DNP3/TLS_Base.h \ - DNP3/TransportConstants.h \ - DNP3/TransportLayer.h \ - DNP3/TransportRx.h \ - DNP3/TransportStates.h \ - DNP3/TransportTx.h \ - DNP3/UnsolicitedChannel.h \ - DNP3/VtoConfig.h \ - DNP3/VtoData.h \ - DNP3/VtoDataInterface.h \ - DNP3/VtoEventBufferAdapter.h \ - DNP3/VtoReader.h \ - DNP3/VtoRouter.h \ - DNP3/VtoRouterManager.h \ - DNP3/VtoRouterSettings.h \ - DNP3/VtoTransmitTask.h \ - DNP3/VtoWriter.h +aplheadersdir = $(pkgincludedir)/APL +dnpheadersdir = $(pkgincludedir)/DNP3 + +pkginclude_HEADERS = opendnp3/version.hpp + +aplheaders_HEADERS = \ + opendnp3/APL/ASIOSerialHelpers.h \ + opendnp3/APL/AsyncLayerInterfaces.h \ + opendnp3/APL/AsyncResult.h \ + opendnp3/APL/AsyncTaskBase.h \ + opendnp3/APL/AsyncTaskContinuous.h \ + opendnp3/APL/AsyncTaskGroup.h \ + opendnp3/APL/AsyncTaskInterfaces.h \ + opendnp3/APL/AsyncTaskNonPeriodic.h \ + opendnp3/APL/AsyncTaskPeriodic.h \ + opendnp3/APL/AsyncTaskScheduler.h \ + opendnp3/APL/BaseDataTypes.h \ + opendnp3/APL/BoundNotifier.h \ + opendnp3/APL/CachedLogVariable.h \ + opendnp3/APL/ChangeBuffer.h \ + opendnp3/APL/CommandInterfaces.h \ + opendnp3/APL/CommandManager.h \ + opendnp3/APL/CommandQueue.h \ + opendnp3/APL/CommandResponseQueue.h \ + opendnp3/APL/CommandTypes.h \ + opendnp3/APL/Configure.h \ + opendnp3/APL/CopyableBuffer.h \ + opendnp3/APL/CRC.h \ + opendnp3/APL/DataInterfaces.h \ + opendnp3/APL/DataTypes.h \ + opendnp3/APL/DeleteAny.h \ + opendnp3/APL/EventLockBase.h \ + opendnp3/APL/EventLock.h \ + opendnp3/APL/EventSet.h \ + opendnp3/APL/Exception.h \ + opendnp3/APL/FlexibleDataObserver.h \ + opendnp3/APL/Function.h \ + opendnp3/APL/GetKeys.h \ + opendnp3/APL/IEventLock.h \ + opendnp3/APL/IHandlerAsync.h \ + opendnp3/APL/INotifier.h \ + opendnp3/APL/IOService.h \ + opendnp3/APL/IOServiceThread.h \ + opendnp3/APL/IPhysicalLayerAsync.h \ + opendnp3/APL/IPhysicalLayerObserver.h \ + opendnp3/APL/IPhysicalLayerSource.h \ + opendnp3/APL/ISubject.h \ + opendnp3/APL/ITimer.h \ + opendnp3/APL/ITimerSource.h \ + opendnp3/APL/ITimeSource.h \ + opendnp3/APL/ITransactable.h \ + opendnp3/APL/LockBase.h \ + opendnp3/APL/LockBoost.h \ + opendnp3/APL/Lock.h \ + opendnp3/APL/LogBase.h \ + opendnp3/APL/LogEntryCircularBuffer.h \ + opendnp3/APL/LogEntry.h \ + opendnp3/APL/Loggable.h \ + opendnp3/APL/Logger.h \ + opendnp3/APL/Log.h \ + opendnp3/APL/LogToFile.h \ + opendnp3/APL/LogToStdio.h \ + opendnp3/APL/LogTypes.h \ + opendnp3/APL/LogVar.h \ + opendnp3/APL/LowerLayerToPhysAdapter.h \ + opendnp3/APL/MetricBuffer.h \ + opendnp3/APL/MultiplexingDataObserver.h \ + opendnp3/APL/Notifier.h \ + opendnp3/APL/PackingTemplates.h \ + opendnp3/APL/PackingUnpacking.h \ + opendnp3/APL/Parsing.h \ + opendnp3/APL/PhysicalLayerAsyncASIO.h \ + opendnp3/APL/PhysicalLayerAsyncBase.h \ + opendnp3/APL/PhysicalLayerAsyncBaseTCP.h \ + opendnp3/APL/PhysicalLayerAsyncSerial.h \ + opendnp3/APL/PhysicalLayerAsyncTCPClient.h \ + opendnp3/APL/PhysicalLayerAsyncTCPServer.h \ + opendnp3/APL/PhysicalLayerAsyncTCPv4Client.h \ + opendnp3/APL/PhysicalLayerAsyncTCPv4Server.h \ + opendnp3/APL/PhysicalLayerAsyncTCPv6Client.h \ + opendnp3/APL/PhysicalLayerAsyncTCPv6Server.h \ + opendnp3/APL/PhysicalLayerFactory.h \ + opendnp3/APL/PhysicalLayerFunctors.h \ + opendnp3/APL/PhysicalLayerInstance.h \ + opendnp3/APL/PhysicalLayerManager.h \ + opendnp3/APL/PhysicalLayerMap.h \ + opendnp3/APL/PhysicalLayerMonitor.h \ + opendnp3/APL/PhysicalLayerMonitorStates.h \ + opendnp3/APL/PhysicalLayerStates.h \ + opendnp3/APL/PhysLayerSettings.h \ + opendnp3/APL/PhysLoopback.h \ + opendnp3/APL/PostingNotifier.h \ + opendnp3/APL/PostingNotifierSource.h \ + opendnp3/APL/ProtocolUtil.h \ + opendnp3/APL/QualityConverter.h \ + opendnp3/APL/QualityMasks.h \ + opendnp3/APL/QueueingFDO.h \ + opendnp3/APL/Random.h \ + opendnp3/APL/RandomDouble.h \ + opendnp3/APL/RandomizedBuffer.h \ + opendnp3/APL/SerialTypes.h \ + opendnp3/APL/ShiftableBuffer.h \ + opendnp3/APL/Singleton.h \ + opendnp3/APL/SubjectBase.h \ + opendnp3/APL/SuspendTimerSource.h \ + opendnp3/APL/SyncVar.h \ + opendnp3/APL/Threadable.h \ + opendnp3/APL/ThreadBase.h \ + opendnp3/APL/ThreadBoost.h \ + opendnp3/APL/Thread.h \ + opendnp3/APL/TimeBase.h \ + opendnp3/APL/TimeBoost.h \ + opendnp3/APL/Timeout.h \ + opendnp3/APL/TimerASIO.h \ + opendnp3/APL/TimerSourceASIO.h \ + opendnp3/APL/TimeSource.h \ + opendnp3/APL/TimeTypes.h \ + opendnp3/APL/TimingTools.h \ + opendnp3/APL/ToHex.h \ + opendnp3/APL/TrackingTaskGroup.h \ + opendnp3/APL/Types.h \ + opendnp3/APL/Uncopyable.h \ + opendnp3/APL/Util.h + +dnpheaders_HEADERS = \ + opendnp3/DNP3/AlwaysOpeningVtoRouter.h \ + opendnp3/DNP3/APDUConstants.h \ + opendnp3/DNP3/APDU.h \ + opendnp3/DNP3/AppChannelStates.h \ + opendnp3/DNP3/AppConfig.h \ + opendnp3/DNP3/AppHeader.h \ + opendnp3/DNP3/AppInterfaces.h \ + opendnp3/DNP3/AppLayerChannel.h \ + opendnp3/DNP3/AppLayer.h \ + opendnp3/DNP3/AsyncStackManager.h \ + opendnp3/DNP3/BufferSetTypes.h \ + opendnp3/DNP3/BufferTypes.h \ + opendnp3/DNP3/ClassCounter.h \ + opendnp3/DNP3/ClassMask.h \ + opendnp3/DNP3/ControlTasks.h \ + opendnp3/DNP3/CTOHistory.h \ + opendnp3/DNP3/Database.h \ + opendnp3/DNP3/DatabaseInterfaces.h \ + opendnp3/DNP3/DataPoll.h \ + opendnp3/DNP3/DeviceTemplate.h \ + opendnp3/DNP3/DeviceTemplateTypes.h \ + opendnp3/DNP3/DNPCommandMaster.h \ + opendnp3/DNP3/DNPConstants.h \ + opendnp3/DNP3/DNPCrc.h \ + opendnp3/DNP3/DNPDatabaseTypes.h \ + opendnp3/DNP3/DNPExceptions.h \ + opendnp3/DNP3/DNPFromStream.h \ + opendnp3/DNP3/DNPToStream.h \ + opendnp3/DNP3/EnhancedVto.h \ + opendnp3/DNP3/EnhancedVtoRouter.h \ + opendnp3/DNP3/EventBufferBase.h \ + opendnp3/DNP3/EventBuffers.h \ + opendnp3/DNP3/EventTypes.h \ + opendnp3/DNP3/HeaderReadIterator.h \ + opendnp3/DNP3/IFrameSink.h \ + opendnp3/DNP3/ILinkContext.h \ + opendnp3/DNP3/ILinkRouter.h \ + opendnp3/DNP3/IndexedWriteIterator.h \ + opendnp3/DNP3/IStackObserver.h \ + opendnp3/DNP3/IVtoEventAcceptor.h \ + opendnp3/DNP3/LinkChannel.h \ + opendnp3/DNP3/LinkConfig.h \ + opendnp3/DNP3/LinkFrame.h \ + opendnp3/DNP3/LinkHeader.h \ + opendnp3/DNP3/LinkLayerConstants.h \ + opendnp3/DNP3/LinkLayer.h \ + opendnp3/DNP3/LinkLayerReceiver.h \ + opendnp3/DNP3/LinkLayerRouter.h \ + opendnp3/DNP3/LinkReceiverStates.h \ + opendnp3/DNP3/LinkRoute.h \ + opendnp3/DNP3/MasterConfig.h \ + opendnp3/DNP3/MasterConfigTypes.h \ + opendnp3/DNP3/Master.h \ + opendnp3/DNP3/MasterSchedule.h \ + opendnp3/DNP3/MasterStackConfig.h \ + opendnp3/DNP3/MasterStack.h \ + opendnp3/DNP3/MasterStates.h \ + opendnp3/DNP3/MasterTaskBase.h \ + opendnp3/DNP3/ObjectHeader.h \ + opendnp3/DNP3/ObjectInterfaces.h \ + opendnp3/DNP3/ObjectReadIterator.h \ + opendnp3/DNP3/Objects.h \ + opendnp3/DNP3/ObjectWriteIterator.h \ + opendnp3/DNP3/PointClass.h \ + opendnp3/DNP3/PriLinkLayerStates.h \ + opendnp3/DNP3/ResponseContext.h \ + opendnp3/DNP3/ResponseLoader.h \ + opendnp3/DNP3/SecLinkLayerStates.h \ + opendnp3/DNP3/SlaveConfig.h \ + opendnp3/DNP3/SlaveEventBuffer.h \ + opendnp3/DNP3/Slave.h \ + opendnp3/DNP3/SlaveResponseTypes.h \ + opendnp3/DNP3/SlaveStackConfig.h \ + opendnp3/DNP3/SlaveStack.h \ + opendnp3/DNP3/SlaveStates.h \ + opendnp3/DNP3/SolicitedChannel.h \ + opendnp3/DNP3/Stack.h \ + opendnp3/DNP3/StackManager.h \ + opendnp3/DNP3/StartupTasks.h \ + opendnp3/DNP3/TLS_Base.h \ + opendnp3/DNP3/TransportConstants.h \ + opendnp3/DNP3/TransportLayer.h \ + opendnp3/DNP3/TransportRx.h \ + opendnp3/DNP3/TransportStates.h \ + opendnp3/DNP3/TransportTx.h \ + opendnp3/DNP3/UnsolicitedChannel.h \ + opendnp3/DNP3/VtoConfig.h \ + opendnp3/DNP3/VtoData.h \ + opendnp3/DNP3/VtoDataInterface.h \ + opendnp3/DNP3/VtoEventBufferAdapter.h \ + opendnp3/DNP3/VtoReader.h \ + opendnp3/DNP3/VtoRouter.h \ + opendnp3/DNP3/VtoRouterManager.h \ + opendnp3/DNP3/VtoRouterSettings.h \ + opendnp3/DNP3/VtoTransmitTask.h \ + opendnp3/DNP3/VtoWriter.h bin_PROGRAMS = testset @@ -637,9 +643,9 @@ DOCBOOK2HTML=docbook2html DOCBOOK2PDF=docbook2pdf astyle: - ${ASTYLE} ${srcdir}/APL/*.cpp ${srcdir}/APL/*.h + ${ASTYLE} ${srcdir}/opendnp3/APL/*.cpp ${srcdir}/opendnp3/APL/*.h ${ASTYLE} ${srcdir}/APLTestTools/*.cpp ${srcdir}/APLTestTools/*.h - ${ASTYLE} ${srcdir}/DNP3/*.cpp ${srcdir}/DNP3/*.h + ${ASTYLE} ${srcdir}/opendnp3/DNP3/*.cpp ${srcdir}/opendnp3/DNP3/*.h ${ASTYLE} ${srcdir}/DNP3Test/*.cpp ${srcdir}/DNP3Test/*.h docs: docs-html docs-pdf diff --git a/Terminal/ControlResponseTE.cpp b/Terminal/ControlResponseTE.cpp old mode 100755 new mode 100644 index d08541d8..2eca3115 --- a/Terminal/ControlResponseTE.cpp +++ b/Terminal/ControlResponseTE.cpp @@ -1,8 +1,8 @@ #include "ControlResponseTE.h" -#include -#include -#include +#include +#include +#include namespace apl { diff --git a/Terminal/ControlResponseTE.h b/Terminal/ControlResponseTE.h old mode 100755 new mode 100644 index ef8da1a1..d70aff35 --- a/Terminal/ControlResponseTE.h +++ b/Terminal/ControlResponseTE.h @@ -1,10 +1,10 @@ #ifndef __CONTROL_RESPONSE_TERMINAL_EXTENSION_H_ #define __CONTROL_RESPONSE_TERMINAL_EXTENSION_H_ -#include -#include -#include -#include +#include +#include +#include +#include #include "TerminalInterfaces.h" diff --git a/Terminal/ControlTerminalExtension.cpp b/Terminal/ControlTerminalExtension.cpp old mode 100755 new mode 100644 index 569bbde2..fc1c56fe --- a/Terminal/ControlTerminalExtension.cpp +++ b/Terminal/ControlTerminalExtension.cpp @@ -1,11 +1,11 @@ #include "ControlTerminalExtension.h" -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include diff --git a/Terminal/ControlTerminalExtension.h b/Terminal/ControlTerminalExtension.h old mode 100755 new mode 100644 index fbadc996..b95813cd --- a/Terminal/ControlTerminalExtension.h +++ b/Terminal/ControlTerminalExtension.h @@ -3,8 +3,8 @@ #include "TerminalInterfaces.h" -#include -#include +#include +#include #include diff --git a/Terminal/DOTerminalExtension.cpp b/Terminal/DOTerminalExtension.cpp old mode 100755 new mode 100644 index e8b2416e..3e9e2225 --- a/Terminal/DOTerminalExtension.cpp +++ b/Terminal/DOTerminalExtension.cpp @@ -1,8 +1,8 @@ #include "DOTerminalExtension.h" -#include -#include -#include +#include +#include +#include #include #include diff --git a/Terminal/DOTerminalExtension.h b/Terminal/DOTerminalExtension.h old mode 100755 new mode 100644 index 76ca1db7..d54aa103 --- a/Terminal/DOTerminalExtension.h +++ b/Terminal/DOTerminalExtension.h @@ -3,9 +3,9 @@ #include "TerminalInterfaces.h" -#include -#include -#include +#include +#include +#include #include #include diff --git a/Terminal/FlexibleObserverTerminalExtension.cpp b/Terminal/FlexibleObserverTerminalExtension.cpp old mode 100755 new mode 100644 index 519d4192..27337c31 --- a/Terminal/FlexibleObserverTerminalExtension.cpp +++ b/Terminal/FlexibleObserverTerminalExtension.cpp @@ -1,12 +1,12 @@ #include "FlexibleObserverTerminalExtension.h" -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include diff --git a/Terminal/FlexibleObserverTerminalExtension.h b/Terminal/FlexibleObserverTerminalExtension.h old mode 100755 new mode 100644 index 564edaf9..07caf348 --- a/Terminal/FlexibleObserverTerminalExtension.h +++ b/Terminal/FlexibleObserverTerminalExtension.h @@ -3,9 +3,9 @@ #include "TerminalInterfaces.h" -#include -#include -#include +#include +#include +#include #include #include diff --git a/Terminal/LineReader.cpp b/Terminal/LineReader.cpp old mode 100755 new mode 100644 index 915748bf..0f82603a --- a/Terminal/LineReader.cpp +++ b/Terminal/LineReader.cpp @@ -1,6 +1,6 @@ #include "LineReader.h" -#include +#include using namespace std; diff --git a/Terminal/LineReader.h b/Terminal/LineReader.h old mode 100755 new mode 100644 index a8ba5b83..5c4e2b2f --- a/Terminal/LineReader.h +++ b/Terminal/LineReader.h @@ -1,9 +1,9 @@ #ifndef __LINE_READER_H_ #define __LINE_READER_H_ -#include -#include -#include +#include +#include +#include #include namespace apl diff --git a/Terminal/LogTerminalExtension.cpp b/Terminal/LogTerminalExtension.cpp old mode 100755 new mode 100644 index ec1fbed9..6e9430c4 --- a/Terminal/LogTerminalExtension.cpp +++ b/Terminal/LogTerminalExtension.cpp @@ -1,7 +1,7 @@ #include "LogTerminalExtension.h" -#include -#include +#include +#include #include #include diff --git a/Terminal/LogTerminalExtension.h b/Terminal/LogTerminalExtension.h old mode 100755 new mode 100644 index 2eaf7a85..dd17d489 --- a/Terminal/LogTerminalExtension.h +++ b/Terminal/LogTerminalExtension.h @@ -1,9 +1,9 @@ #ifndef __LOG_TERMINAL_EXTENSION_H_ #define __LOG_TERMINAL_EXTENSION_H_ -#include -#include -#include +#include +#include +#include #include "TerminalInterfaces.h" diff --git a/Terminal/PhysicalLayerIOStreamAsync.cpp b/Terminal/PhysicalLayerIOStreamAsync.cpp old mode 100755 new mode 100644 diff --git a/Terminal/PhysicalLayerIOStreamAsync.h b/Terminal/PhysicalLayerIOStreamAsync.h old mode 100755 new mode 100644 diff --git a/Terminal/PhysicalLayerSyncProxy.cpp b/Terminal/PhysicalLayerSyncProxy.cpp old mode 100755 new mode 100644 diff --git a/Terminal/PhysicalLayerSyncProxy.h b/Terminal/PhysicalLayerSyncProxy.h old mode 100755 new mode 100644 index 535ea63d..463dae78 --- a/Terminal/PhysicalLayerSyncProxy.h +++ b/Terminal/PhysicalLayerSyncProxy.h @@ -1,10 +1,10 @@ #ifndef __PHYSICAL_LAYER_SYNC_PROXY_H_ #define __PHYSICAL_LAYER_SYNC_PROXY_H_ -#include -#include -#include -#include +#include +#include +#include +#include #include #include diff --git a/Terminal/Terminal.cpp b/Terminal/Terminal.cpp old mode 100755 new mode 100644 index 9706c8f9..ea0776c8 --- a/Terminal/Terminal.cpp +++ b/Terminal/Terminal.cpp @@ -1,11 +1,11 @@ #include "Terminal.h" -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include diff --git a/Terminal/Terminal.h b/Terminal/Terminal.h old mode 100755 new mode 100644 index 9ddd5bde..ca4bf02d --- a/Terminal/Terminal.h +++ b/Terminal/Terminal.h @@ -5,8 +5,8 @@ #include "LineReader.h" #include "TerminalInterfaces.h" -#include -#include +#include +#include #include #include diff --git a/Terminal/TerminalInterfaces.cpp b/Terminal/TerminalInterfaces.cpp old mode 100755 new mode 100644 diff --git a/Terminal/TerminalInterfaces.h b/Terminal/TerminalInterfaces.h old mode 100755 new mode 100644 index 7f316424..5a861193 --- a/Terminal/TerminalInterfaces.h +++ b/Terminal/TerminalInterfaces.h @@ -25,9 +25,9 @@ #include #include -#include -#include -#include +#include +#include +#include namespace apl { diff --git a/Terminal/TokenNode.h b/Terminal/TokenNode.h old mode 100755 new mode 100644 diff --git a/TerminalTest/TestPhysicalLayerSyncProxy.cpp b/TerminalTest/TestPhysicalLayerSyncProxy.cpp old mode 100755 new mode 100644 index f058fecd..f575ee9b --- a/TerminalTest/TestPhysicalLayerSyncProxy.cpp +++ b/TerminalTest/TestPhysicalLayerSyncProxy.cpp @@ -3,10 +3,10 @@ #include #include -#include +#include #include #include -#include +#include #include #include diff --git a/TerminalTest/TestTerminal.cpp b/TerminalTest/TestTerminal.cpp old mode 100755 new mode 100644 index dc1889cc..d084c246 --- a/TerminalTest/TestTerminal.cpp +++ b/TerminalTest/TestTerminal.cpp @@ -1,9 +1,9 @@ #define BOOST_TEST_MODULE terminal #include -#include -#include -#include +#include +#include +#include #include #include diff --git a/TestAPL/AsyncPhysBaseTest.h b/TestAPL/AsyncPhysBaseTest.h index 74792aa0..4e74af71 100644 --- a/TestAPL/AsyncPhysBaseTest.h +++ b/TestAPL/AsyncPhysBaseTest.h @@ -19,7 +19,7 @@ #ifndef __ASYNC_PHYS_BASE_TEST_H_ #define __ASYNC_PHYS_BASE_TEST_H_ -#include +#include #include #include diff --git a/TestAPL/AsyncSerialTestObject.h b/TestAPL/AsyncSerialTestObject.h index 5f1636fe..cc225f35 100644 --- a/TestAPL/AsyncSerialTestObject.h +++ b/TestAPL/AsyncSerialTestObject.h @@ -23,8 +23,8 @@ #include #include -#include -#include +#include +#include #include namespace apl diff --git a/TestAPL/TestASIO.cpp b/TestAPL/TestASIO.cpp index fe48b0a0..77011118 100644 --- a/TestAPL/TestASIO.cpp +++ b/TestAPL/TestASIO.cpp @@ -19,13 +19,13 @@ #include -#include +#include #include #include #include #include -#include +#include using namespace std; using namespace boost; diff --git a/TestAPL/TestAsyncTask.cpp b/TestAPL/TestAsyncTask.cpp index e36b816b..ce2f583a 100644 --- a/TestAPL/TestAsyncTask.cpp +++ b/TestAPL/TestAsyncTask.cpp @@ -19,12 +19,12 @@ #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include diff --git a/TestAPL/TestCastLongLongDouble.cpp b/TestAPL/TestCastLongLongDouble.cpp index 7ecfd6de..14c7124c 100644 --- a/TestAPL/TestCastLongLongDouble.cpp +++ b/TestAPL/TestCastLongLongDouble.cpp @@ -25,9 +25,9 @@ A manual method is included that gets around the problem as well. #include #include -#include +#include #include "math.h" -#include +#include #include #include diff --git a/TestAPL/TestCommandQueue.cpp b/TestAPL/TestCommandQueue.cpp index 3062d095..914a2103 100644 --- a/TestAPL/TestCommandQueue.cpp +++ b/TestAPL/TestCommandQueue.cpp @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include diff --git a/TestAPL/TestCommandTypes.cpp b/TestAPL/TestCommandTypes.cpp index 722d47cf..a8ebcdbb 100644 --- a/TestAPL/TestCommandTypes.cpp +++ b/TestAPL/TestCommandTypes.cpp @@ -19,7 +19,7 @@ #include #include -#include +#include #include using namespace apl; diff --git a/TestAPL/TestLocks.cpp b/TestAPL/TestLocks.cpp index 74597d52..a9237828 100644 --- a/TestAPL/TestLocks.cpp +++ b/TestAPL/TestLocks.cpp @@ -19,10 +19,10 @@ #include #include -#include -#include -#include -#include +#include +#include +#include +#include using namespace apl; diff --git a/TestAPL/TestLog.cpp b/TestAPL/TestLog.cpp index ba5e006c..32ec07dd 100644 --- a/TestAPL/TestLog.cpp +++ b/TestAPL/TestLog.cpp @@ -19,10 +19,10 @@ #include #include -#include -#include +#include +#include #include -#include +#include #include #include #include diff --git a/TestAPL/TestMisc.cpp b/TestAPL/TestMisc.cpp index 5b697342..beddc020 100644 --- a/TestAPL/TestMisc.cpp +++ b/TestAPL/TestMisc.cpp @@ -31,8 +31,8 @@ using namespace std; -#include -#include +#include +#include #include diff --git a/TestAPL/TestPackingUnpacking.cpp b/TestAPL/TestPackingUnpacking.cpp index 93c5acc1..5721cf89 100644 --- a/TestAPL/TestPackingUnpacking.cpp +++ b/TestAPL/TestPackingUnpacking.cpp @@ -20,9 +20,9 @@ #include -#include -#include -#include +#include +#include +#include #include #include diff --git a/TestAPL/TestParsing.cpp b/TestAPL/TestParsing.cpp index 9996a82a..c8a897e7 100644 --- a/TestAPL/TestParsing.cpp +++ b/TestAPL/TestParsing.cpp @@ -19,7 +19,7 @@ #include #include -#include +#include BOOST_AUTO_TEST_SUITE(Parsing) diff --git a/TestAPL/TestPhysicalLayerAsyncBase.cpp b/TestAPL/TestPhysicalLayerAsyncBase.cpp index 05824c41..88309a87 100644 --- a/TestAPL/TestPhysicalLayerAsyncBase.cpp +++ b/TestAPL/TestPhysicalLayerAsyncBase.cpp @@ -21,7 +21,7 @@ #include "AsyncPhysBaseTest.h" -#include +#include using namespace apl; diff --git a/TestAPL/TestPhysicalLayerAsyncSerial.cpp b/TestAPL/TestPhysicalLayerAsyncSerial.cpp index 85fbc727..64593da1 100644 --- a/TestAPL/TestPhysicalLayerAsyncSerial.cpp +++ b/TestAPL/TestPhysicalLayerAsyncSerial.cpp @@ -24,10 +24,10 @@ #include #include -#include -#include +#include +#include #include -#include +#include using namespace apl; using namespace boost; diff --git a/TestAPL/TestPhysicalLayerAsyncTCP.cpp b/TestAPL/TestPhysicalLayerAsyncTCP.cpp index 7980b6cf..c11f4fb8 100644 --- a/TestAPL/TestPhysicalLayerAsyncTCP.cpp +++ b/TestAPL/TestPhysicalLayerAsyncTCP.cpp @@ -21,12 +21,12 @@ #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include diff --git a/TestAPL/TestPhysicalLayerLoopback.cpp b/TestAPL/TestPhysicalLayerLoopback.cpp old mode 100755 new mode 100644 index 18e92cfe..80e523b7 --- a/TestAPL/TestPhysicalLayerLoopback.cpp +++ b/TestAPL/TestPhysicalLayerLoopback.cpp @@ -19,8 +19,8 @@ #include -#include -#include +#include +#include #include #include #include diff --git a/TestAPL/TestPhysicalLayerMonitor.cpp b/TestAPL/TestPhysicalLayerMonitor.cpp old mode 100755 new mode 100644 index 5fe60979..b3519fd7 --- a/TestAPL/TestPhysicalLayerMonitor.cpp +++ b/TestAPL/TestPhysicalLayerMonitor.cpp @@ -19,10 +19,10 @@ #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include diff --git a/TestAPL/TestQualityMasks.cpp b/TestAPL/TestQualityMasks.cpp index 8de75cbb..2f7e20a6 100644 --- a/TestAPL/TestQualityMasks.cpp +++ b/TestAPL/TestQualityMasks.cpp @@ -19,8 +19,8 @@ #include #include -#include -#include +#include +#include BOOST_AUTO_TEST_SUITE(QualityMasks) diff --git a/TestAPL/TestShiftableBuffer.cpp b/TestAPL/TestShiftableBuffer.cpp index 45488bcc..a52e8f4f 100644 --- a/TestAPL/TestShiftableBuffer.cpp +++ b/TestAPL/TestShiftableBuffer.cpp @@ -19,8 +19,8 @@ #include #include -#include -#include +#include +#include using namespace apl; diff --git a/TestAPL/TestSyncVar.cpp b/TestAPL/TestSyncVar.cpp index 20fa00a1..4efffb20 100644 --- a/TestAPL/TestSyncVar.cpp +++ b/TestAPL/TestSyncVar.cpp @@ -22,9 +22,9 @@ #include #include -#include -#include -#include +#include +#include +#include using namespace std; using namespace apl; diff --git a/TestAPL/TestThreading.cpp b/TestAPL/TestThreading.cpp index 90d70c30..ca756dde 100644 --- a/TestAPL/TestThreading.cpp +++ b/TestAPL/TestThreading.cpp @@ -18,15 +18,15 @@ // #include #include -#include -#include +#include +#include #include using namespace std; -#include -#include -#include +#include +#include +#include using namespace apl; diff --git a/TestAPL/TestTime.cpp b/TestAPL/TestTime.cpp index c22db944..11c1df64 100644 --- a/TestAPL/TestTime.cpp +++ b/TestAPL/TestTime.cpp @@ -20,17 +20,17 @@ #include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include -#include +#include #include #include diff --git a/TestAPL/TestTimers.cpp b/TestAPL/TestTimers.cpp index 52371c73..2a610e39 100644 --- a/TestAPL/TestTimers.cpp +++ b/TestAPL/TestTimers.cpp @@ -21,10 +21,10 @@ #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include diff --git a/TestAPL/TestTypes.cpp b/TestAPL/TestTypes.cpp index df457113..a72858b4 100644 --- a/TestAPL/TestTypes.cpp +++ b/TestAPL/TestTypes.cpp @@ -19,7 +19,7 @@ #define BOOST_TEST_MODULE apl #include -#include +#include #include using namespace std; diff --git a/TestAPL/TestUtil.cpp b/TestAPL/TestUtil.cpp index 07b9317e..62a35284 100644 --- a/TestAPL/TestUtil.cpp +++ b/TestAPL/TestUtil.cpp @@ -19,7 +19,7 @@ #include #include -#include +#include #include using namespace std; diff --git a/TestAPL/TestXmlBinding.cpp b/TestAPL/TestXmlBinding.cpp index ce9ae55e..1650eccb 100644 --- a/TestAPL/TestXmlBinding.cpp +++ b/TestAPL/TestXmlBinding.cpp @@ -19,8 +19,8 @@ #include -#include -#include +#include +#include #include #include #include diff --git a/TestSet/AddressScanner.cpp b/TestSet/AddressScanner.cpp old mode 100755 new mode 100644 index 519c9ee4..4cbddbb4 --- a/TestSet/AddressScanner.cpp +++ b/TestSet/AddressScanner.cpp @@ -18,7 +18,7 @@ #include "AddressScanner.h" -#include +#include #include #include diff --git a/TestSet/AddressScanner.h b/TestSet/AddressScanner.h old mode 100755 new mode 100644 index f4f60b78..3c8f926f --- a/TestSet/AddressScanner.h +++ b/TestSet/AddressScanner.h @@ -20,14 +20,14 @@ #define __ADDRESS_SCANNER_H_ #include -#include -#include -#include -#include - -#include -#include -#include +#include +#include +#include +#include + +#include +#include +#include namespace APLXML_MTS { diff --git a/TestSet/StackHelpers.cpp b/TestSet/StackHelpers.cpp index 9adbce83..3ecb3fee 100644 --- a/TestSet/StackHelpers.cpp +++ b/TestSet/StackHelpers.cpp @@ -18,10 +18,10 @@ // #include "StackHelpers.h" -#include -#include -#include -#include +#include +#include +#include +#include #include #include diff --git a/TestSet/StackHelpers.h b/TestSet/StackHelpers.h index 84499b02..082c987a 100644 --- a/TestSet/StackHelpers.h +++ b/TestSet/StackHelpers.h @@ -19,16 +19,16 @@ #ifndef __STACK_HELPERS_H_ #define __STACK_HELPERS_H_ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include diff --git a/TestSet/main.cpp b/TestSet/main.cpp index 7736d5fa..c2c66626 100644 --- a/TestSet/main.cpp +++ b/TestSet/main.cpp @@ -27,7 +27,7 @@ #include "StackHelpers.h" #include "AddressScanner.h" -#include +#include #include diff --git a/XMLBindings/APLXML_Base.cpp b/XMLBindings/APLXML_Base.cpp old mode 100755 new mode 100644 diff --git a/XMLBindings/APLXML_Base.h b/XMLBindings/APLXML_Base.h old mode 100755 new mode 100644 diff --git a/XMLBindings/APLXML_DNP.cpp b/XMLBindings/APLXML_DNP.cpp old mode 100755 new mode 100644 diff --git a/XMLBindings/APLXML_DNP.h b/XMLBindings/APLXML_DNP.h old mode 100755 new mode 100644 diff --git a/XMLBindings/APLXML_MTS.cpp b/XMLBindings/APLXML_MTS.cpp old mode 100755 new mode 100644 diff --git a/XMLBindings/APLXML_MTS.h b/XMLBindings/APLXML_MTS.h old mode 100755 new mode 100644 diff --git a/XMLBindings/APLXML_STS.cpp b/XMLBindings/APLXML_STS.cpp old mode 100755 new mode 100644 diff --git a/XMLBindings/APLXML_STS.h b/XMLBindings/APLXML_STS.h old mode 100755 new mode 100644 diff --git a/demos/master-cpp/DemoMain.cpp b/demos/master-cpp/DemoMain.cpp index 8857d880..84ee8d1c 100755 --- a/demos/master-cpp/DemoMain.cpp +++ b/demos/master-cpp/DemoMain.cpp @@ -21,8 +21,8 @@ #include -#include -#include +#include +#include using namespace std; using namespace apl; diff --git a/demos/master-cpp/MasterDemo.h b/demos/master-cpp/MasterDemo.h index 8579bf88..0169ab5b 100755 --- a/demos/master-cpp/MasterDemo.h +++ b/demos/master-cpp/MasterDemo.h @@ -20,20 +20,20 @@ #ifndef __MASTER_DEMO_H_ #define __MASTER_DEMO_H_ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include namespace apl { namespace dnp { diff --git a/demos/slave-cpp/DemoMain.cpp b/demos/slave-cpp/DemoMain.cpp index 382b624a..ed345c3e 100755 --- a/demos/slave-cpp/DemoMain.cpp +++ b/demos/slave-cpp/DemoMain.cpp @@ -22,8 +22,8 @@ #include #include -#include -#include +#include +#include using namespace std; using namespace apl; diff --git a/demos/slave-cpp/SlaveDemo.h b/demos/slave-cpp/SlaveDemo.h index cce33b36..92301f63 100755 --- a/demos/slave-cpp/SlaveDemo.h +++ b/demos/slave-cpp/SlaveDemo.h @@ -20,19 +20,19 @@ #ifndef __SLAVE_DEMO_H_ #define __SLAVE_DEMO_H_ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include namespace apl { diff --git a/APL/APL.vcxproj b/opendnp3/APL/APL.vcxproj similarity index 100% rename from APL/APL.vcxproj rename to opendnp3/APL/APL.vcxproj diff --git a/APL/APL.vcxproj.filters b/opendnp3/APL/APL.vcxproj.filters similarity index 100% rename from APL/APL.vcxproj.filters rename to opendnp3/APL/APL.vcxproj.filters diff --git a/APL/ASIOSerialHelpers.cpp b/opendnp3/APL/ASIOSerialHelpers.cpp similarity index 97% rename from APL/ASIOSerialHelpers.cpp rename to opendnp3/APL/ASIOSerialHelpers.cpp index 45b8b607..93a76a81 100644 --- a/APL/ASIOSerialHelpers.cpp +++ b/opendnp3/APL/ASIOSerialHelpers.cpp @@ -17,12 +17,11 @@ // under the License. // -#include "ASIOSerialHelpers.h" - -#include -#include "Exception.h" +#include +#include #include +#include using namespace boost::asio; using namespace boost::system; diff --git a/APL/ASIOSerialHelpers.h b/opendnp3/APL/ASIOSerialHelpers.h similarity index 97% rename from APL/ASIOSerialHelpers.h rename to opendnp3/APL/ASIOSerialHelpers.h index f8a85e58..d0bb050c 100644 --- a/APL/ASIOSerialHelpers.h +++ b/opendnp3/APL/ASIOSerialHelpers.h @@ -19,9 +19,9 @@ #ifndef _ASIO_SERIAL_HELPERS_H_ #define _ASIO_SERIAL_HELPERS_H_ -#include +#include -#include "SerialTypes.h" +#include namespace boost { diff --git a/APL/AsyncLayerInterfaces.cpp b/opendnp3/APL/AsyncLayerInterfaces.cpp similarity index 94% rename from APL/AsyncLayerInterfaces.cpp rename to opendnp3/APL/AsyncLayerInterfaces.cpp index d6be1fe2..dbb11dbd 100644 --- a/APL/AsyncLayerInterfaces.cpp +++ b/opendnp3/APL/AsyncLayerInterfaces.cpp @@ -16,12 +16,10 @@ // specific language governing permissions and limitations // under the License. // -#include "AsyncLayerInterfaces.h" - - -#include "Exception.h" -#include "Logger.h" -#include "ToHex.h" +#include +#include +#include +#include namespace apl { diff --git a/APL/AsyncLayerInterfaces.h b/opendnp3/APL/AsyncLayerInterfaces.h similarity index 97% rename from APL/AsyncLayerInterfaces.h rename to opendnp3/APL/AsyncLayerInterfaces.h index 19dc3851..7034c70c 100644 --- a/APL/AsyncLayerInterfaces.h +++ b/opendnp3/APL/AsyncLayerInterfaces.h @@ -19,10 +19,8 @@ #ifndef __ASYNC_LAYER_INTERFACES_H_ #define __ASYNC_LAYER_INTERFACES_H_ - - -#include "Types.h" -#include "Loggable.h" +#include +#include /* Reusable asynchronous interfaces for protocol stacks. diff --git a/APL/AsyncResult.cpp b/opendnp3/APL/AsyncResult.cpp old mode 100755 new mode 100644 similarity index 95% rename from APL/AsyncResult.cpp rename to opendnp3/APL/AsyncResult.cpp index 73725d98..3ffba5bb --- a/APL/AsyncResult.cpp +++ b/opendnp3/APL/AsyncResult.cpp @@ -17,14 +17,14 @@ // under the License. // -#include "AsyncResult.h" +#include namespace apl { AsyncResult::AsyncResult() : mIsComplete(false) { - + } void AsyncResult::Complete() @@ -35,7 +35,7 @@ void AsyncResult::Complete() void AsyncResult::Success() { - CriticalSection cs(&mLock); + CriticalSection cs(&mLock); this->Complete(); cs.Broadcast(); } diff --git a/APL/AsyncResult.h b/opendnp3/APL/AsyncResult.h old mode 100755 new mode 100644 similarity index 90% rename from APL/AsyncResult.h rename to opendnp3/APL/AsyncResult.h index 974c86d6..ce03e44f --- a/APL/AsyncResult.h +++ b/opendnp3/APL/AsyncResult.h @@ -19,9 +19,9 @@ #ifndef __ASYNC_RESULT_H_ #define __ASYNC_RESULT_H_ -#include "Lock.h" -#include "Exception.h" -#include "Function.h" +#include +#include +#include namespace apl { @@ -34,7 +34,7 @@ class AsyncResult void Success(); void Failure(const FunctionVoidZero& arFun); - void Wait(); + void Wait(); private: void Complete(); diff --git a/APL/AsyncTaskBase.cpp b/opendnp3/APL/AsyncTaskBase.cpp similarity index 97% rename from APL/AsyncTaskBase.cpp rename to opendnp3/APL/AsyncTaskBase.cpp index 9cbe5b70..2b127ba3 100644 --- a/APL/AsyncTaskBase.cpp +++ b/opendnp3/APL/AsyncTaskBase.cpp @@ -16,11 +16,9 @@ // specific language governing permissions and limitations // under the License. // -#include "AsyncTaskBase.h" - - -#include "Exception.h" -#include "AsyncTaskGroup.h" +#include +#include +#include #include diff --git a/APL/AsyncTaskBase.h b/opendnp3/APL/AsyncTaskBase.h similarity index 97% rename from APL/AsyncTaskBase.h rename to opendnp3/APL/AsyncTaskBase.h index 34a1ce7f..a75f98cb 100644 --- a/APL/AsyncTaskBase.h +++ b/opendnp3/APL/AsyncTaskBase.h @@ -19,13 +19,12 @@ #ifndef __ASYNC_TASK_BASE_H_ #define __ASYNC_TASK_BASE_H_ +#include +#include +#include -#include "AsyncTaskInterfaces.h" -#include "Types.h" -#include "Uncopyable.h" - -#include #include +#include namespace apl { diff --git a/APL/AsyncTaskContinuous.cpp b/opendnp3/APL/AsyncTaskContinuous.cpp similarity index 90% rename from APL/AsyncTaskContinuous.cpp rename to opendnp3/APL/AsyncTaskContinuous.cpp index 6fd04584..9419c03f 100644 --- a/APL/AsyncTaskContinuous.cpp +++ b/opendnp3/APL/AsyncTaskContinuous.cpp @@ -16,10 +16,9 @@ // specific language governing permissions and limitations // under the License. // -#include "AsyncTaskContinuous.h" - -#include "AsyncTaskGroup.h" -#include "Exception.h" +#include +#include +#include #include diff --git a/APL/AsyncTaskContinuous.h b/opendnp3/APL/AsyncTaskContinuous.h similarity index 94% rename from APL/AsyncTaskContinuous.h rename to opendnp3/APL/AsyncTaskContinuous.h index a41dee52..e49c5ce4 100644 --- a/APL/AsyncTaskContinuous.h +++ b/opendnp3/APL/AsyncTaskContinuous.h @@ -19,8 +19,8 @@ #ifndef __ASYNC_TASK_CONTINUOUS_H_ #define __ASYNC_TASK_CONTINUOUS_H_ -#include "AsyncTaskInterfaces.h" -#include "AsyncTaskBase.h" +#include +#include namespace apl { diff --git a/APL/AsyncTaskGroup.cpp b/opendnp3/APL/AsyncTaskGroup.cpp similarity index 93% rename from APL/AsyncTaskGroup.cpp rename to opendnp3/APL/AsyncTaskGroup.cpp index 3c868610..b3a62897 100644 --- a/APL/AsyncTaskGroup.cpp +++ b/opendnp3/APL/AsyncTaskGroup.cpp @@ -16,19 +16,17 @@ // specific language governing permissions and limitations // under the License. // -#include "AsyncTaskGroup.h" +#include +#include +#include +#include +#include +#include +#include +#include -#include "AsyncTaskBase.h" -#include "AsyncTaskPeriodic.h" -#include "AsyncTaskNonPeriodic.h" -#include "AsyncTaskContinuous.h" -#include "AsyncTaskScheduler.h" -#include "Exception.h" - -#include "ITimerSource.h" - -#include #include +#include using namespace boost::posix_time; diff --git a/APL/AsyncTaskGroup.h b/opendnp3/APL/AsyncTaskGroup.h similarity index 95% rename from APL/AsyncTaskGroup.h rename to opendnp3/APL/AsyncTaskGroup.h index 9da44dc1..f27de4c0 100644 --- a/APL/AsyncTaskGroup.h +++ b/opendnp3/APL/AsyncTaskGroup.h @@ -19,14 +19,13 @@ #ifndef __ASYNC_TASK_GROUP_H_ #define __ASYNC_TASK_GROUP_H_ +#include +#include +#include -#include "Types.h" -#include "AsyncTaskInterfaces.h" -#include "Uncopyable.h" - -#include -#include #include +#include +#include namespace apl { diff --git a/APL/AsyncTaskInterfaces.h b/opendnp3/APL/AsyncTaskInterfaces.h similarity index 100% rename from APL/AsyncTaskInterfaces.h rename to opendnp3/APL/AsyncTaskInterfaces.h diff --git a/APL/AsyncTaskNonPeriodic.cpp b/opendnp3/APL/AsyncTaskNonPeriodic.cpp similarity index 94% rename from APL/AsyncTaskNonPeriodic.cpp rename to opendnp3/APL/AsyncTaskNonPeriodic.cpp index 7306add2..7d4a993b 100644 --- a/APL/AsyncTaskNonPeriodic.cpp +++ b/opendnp3/APL/AsyncTaskNonPeriodic.cpp @@ -16,9 +16,8 @@ // specific language governing permissions and limitations // under the License. // -#include "AsyncTaskNonPeriodic.h" - -#include "AsyncTaskGroup.h" +#include +#include using namespace boost::posix_time; diff --git a/APL/AsyncTaskNonPeriodic.h b/opendnp3/APL/AsyncTaskNonPeriodic.h similarity index 92% rename from APL/AsyncTaskNonPeriodic.h rename to opendnp3/APL/AsyncTaskNonPeriodic.h index 343fa6b8..8ce63877 100644 --- a/APL/AsyncTaskNonPeriodic.h +++ b/opendnp3/APL/AsyncTaskNonPeriodic.h @@ -19,13 +19,13 @@ #ifndef __ASYNC_TASK_NON_PERIODIC_H_ #define __ASYNC_TASK_NON_PERIODIC_H_ -#include "AsyncTaskInterfaces.h" -#include "AsyncTaskBase.h" -#include "Types.h" -#include "Uncopyable.h" +#include +#include +#include +#include -#include #include +#include namespace apl { diff --git a/APL/AsyncTaskPeriodic.cpp b/opendnp3/APL/AsyncTaskPeriodic.cpp similarity index 94% rename from APL/AsyncTaskPeriodic.cpp rename to opendnp3/APL/AsyncTaskPeriodic.cpp index 0c7488db..3b4f38d2 100644 --- a/APL/AsyncTaskPeriodic.cpp +++ b/opendnp3/APL/AsyncTaskPeriodic.cpp @@ -16,9 +16,8 @@ // specific language governing permissions and limitations // under the License. // -#include "AsyncTaskPeriodic.h" - -#include "AsyncTaskGroup.h" +#include +#include using namespace boost::posix_time; diff --git a/APL/AsyncTaskPeriodic.h b/opendnp3/APL/AsyncTaskPeriodic.h similarity index 92% rename from APL/AsyncTaskPeriodic.h rename to opendnp3/APL/AsyncTaskPeriodic.h index e29e4517..91c4638e 100644 --- a/APL/AsyncTaskPeriodic.h +++ b/opendnp3/APL/AsyncTaskPeriodic.h @@ -19,14 +19,13 @@ #ifndef __ASYNC_TASK_PERIODIC_H_ #define __ASYNC_TASK_PERIODIC_H_ +#include +#include +#include +#include -#include "AsyncTaskInterfaces.h" -#include "AsyncTaskBase.h" -#include "Types.h" -#include "Uncopyable.h" - -#include #include +#include namespace apl { diff --git a/APL/AsyncTaskScheduler.cpp b/opendnp3/APL/AsyncTaskScheduler.cpp similarity index 91% rename from APL/AsyncTaskScheduler.cpp rename to opendnp3/APL/AsyncTaskScheduler.cpp index 9f6a78ab..459209ce 100644 --- a/APL/AsyncTaskScheduler.cpp +++ b/opendnp3/APL/AsyncTaskScheduler.cpp @@ -16,15 +16,13 @@ // specific language governing permissions and limitations // under the License. // -#include "AsyncTaskScheduler.h" +#include +#include +#include +#include -#include "AsyncTaskGroup.h" -#include "AsyncTaskBase.h" -#include "Exception.h" - -#include #include - +#include #include using namespace std; diff --git a/APL/AsyncTaskScheduler.h b/opendnp3/APL/AsyncTaskScheduler.h similarity index 95% rename from APL/AsyncTaskScheduler.h rename to opendnp3/APL/AsyncTaskScheduler.h index 02afdd1b..59fdf410 100644 --- a/APL/AsyncTaskScheduler.h +++ b/opendnp3/APL/AsyncTaskScheduler.h @@ -19,12 +19,11 @@ #ifndef __ASYNC_TASK_SCHEDULER_H_ #define __ASYNC_TASK_SCHEDULER_H_ +#include +#include -#include #include - -#include "TimeSource.h" -#include "Lock.h" +#include namespace apl { diff --git a/APL/BaseDataTypes.cpp b/opendnp3/APL/BaseDataTypes.cpp similarity index 96% rename from APL/BaseDataTypes.cpp rename to opendnp3/APL/BaseDataTypes.cpp index 106562d9..2ed398c4 100644 --- a/APL/BaseDataTypes.cpp +++ b/opendnp3/APL/BaseDataTypes.cpp @@ -16,11 +16,8 @@ // specific language governing permissions and limitations // under the License. // -#include "BaseDataTypes.h" - -#include "TimingTools.h" - - +#include +#include using namespace std; diff --git a/APL/BaseDataTypes.h b/opendnp3/APL/BaseDataTypes.h similarity index 98% rename from APL/BaseDataTypes.h rename to opendnp3/APL/BaseDataTypes.h index 07686917..e70cbd7d 100644 --- a/APL/BaseDataTypes.h +++ b/opendnp3/APL/BaseDataTypes.h @@ -19,15 +19,14 @@ #ifndef __BASE_DATA_TYPES_H_ #define __BASE_DATA_TYPES_H_ +#include +#include +#include -#include "Types.h" -#include "QualityMasks.h" -#include "QualityConverter.h" - -#include -#include #include #include +#include +#include #include #ifdef max diff --git a/APL/BoundNotifier.h b/opendnp3/APL/BoundNotifier.h similarity index 96% rename from APL/BoundNotifier.h rename to opendnp3/APL/BoundNotifier.h index 8dbc4ab7..4cbd96c0 100644 --- a/APL/BoundNotifier.h +++ b/opendnp3/APL/BoundNotifier.h @@ -19,7 +19,8 @@ #ifndef __BOUND_NOTIFIER_H_ #define __BOUND_NOTIFIER_H_ -#include "INotifier.h" +#include + #include namespace apl diff --git a/APL/CRC.cpp b/opendnp3/APL/CRC.cpp similarity index 97% rename from APL/CRC.cpp rename to opendnp3/APL/CRC.cpp index fde25392..7b1f873d 100644 --- a/APL/CRC.cpp +++ b/opendnp3/APL/CRC.cpp @@ -16,7 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "CRC.h" +#include namespace apl { diff --git a/APL/CRC.h b/opendnp3/APL/CRC.h similarity index 97% rename from APL/CRC.h rename to opendnp3/APL/CRC.h index bc4f72ab..ec51840a 100644 --- a/APL/CRC.h +++ b/opendnp3/APL/CRC.h @@ -19,7 +19,8 @@ #ifndef __CRC_H_ #define __CRC_H_ -#include "Types.h" +#include + #include namespace apl diff --git a/APL/CachedLogVariable.h b/opendnp3/APL/CachedLogVariable.h similarity index 97% rename from APL/CachedLogVariable.h rename to opendnp3/APL/CachedLogVariable.h index 2975656b..1bb5bdbe 100644 --- a/APL/CachedLogVariable.h +++ b/opendnp3/APL/CachedLogVariable.h @@ -19,11 +19,11 @@ #ifndef __CachedLogVariable_H_ #define __CachedLogVariable_H_ +#include + +#include #include #include -#include -#include "Logger.h" - namespace apl { diff --git a/APL/ChangeBuffer.h b/opendnp3/APL/ChangeBuffer.h similarity index 95% rename from APL/ChangeBuffer.h rename to opendnp3/APL/ChangeBuffer.h index e4891bea..d83735b1 100644 --- a/APL/ChangeBuffer.h +++ b/opendnp3/APL/ChangeBuffer.h @@ -19,11 +19,11 @@ #ifndef __CHANGE_BUFFER_H_ #define __CHANGE_BUFFER_H_ -#include "DataTypes.h" -#include "DataInterfaces.h" -#include "TimingTools.h" -#include "INotifier.h" -#include "SubjectBase.h" +#include +#include +#include +#include +#include #include diff --git a/APL/CommandInterfaces.h b/opendnp3/APL/CommandInterfaces.h similarity index 98% rename from APL/CommandInterfaces.h rename to opendnp3/APL/CommandInterfaces.h index 3c53e74d..86ca8ab5 100644 --- a/APL/CommandInterfaces.h +++ b/opendnp3/APL/CommandInterfaces.h @@ -19,8 +19,8 @@ #ifndef __COMMAND_INTERFACES_H_ #define __COMMAND_INTERFACES_H_ -#include "CommandTypes.h" -#include "INotifier.h" +#include +#include namespace apl { @@ -34,7 +34,7 @@ class IResponseAcceptor virtual ~IResponseAcceptor() {}; /** - * This function is called when the command request succeeds or fails. + * This function is called when the command request succeeds or fails. * @param arResponse Contains a description of whether the command succeeded/failed. * @param aSequence ID that is echoed for correlation purposes * diff --git a/APL/CommandManager.cpp b/opendnp3/APL/CommandManager.cpp similarity index 93% rename from APL/CommandManager.cpp rename to opendnp3/APL/CommandManager.cpp index ea9c494e..e6ac453a 100644 --- a/APL/CommandManager.cpp +++ b/opendnp3/APL/CommandManager.cpp @@ -16,10 +16,9 @@ // specific language governing permissions and limitations // under the License. // -#include "CommandManager.h" - -#include "Exception.h" -#include "Configure.h" +#include +#include +#include #include diff --git a/APL/CommandManager.h b/opendnp3/APL/CommandManager.h similarity index 94% rename from APL/CommandManager.h rename to opendnp3/APL/CommandManager.h index b98cd667..1b7b7230 100644 --- a/APL/CommandManager.h +++ b/opendnp3/APL/CommandManager.h @@ -19,12 +19,11 @@ #ifndef __COMMAND_MANAGER_H_ #define __COMMAND_MANAGER_H_ +#include +#include -#include "CommandInterfaces.h" -#include "Uncopyable.h" - -#include #include +#include namespace apl { diff --git a/APL/CommandQueue.cpp b/opendnp3/APL/CommandQueue.cpp similarity index 98% rename from APL/CommandQueue.cpp rename to opendnp3/APL/CommandQueue.cpp index 2b7b9dab..019e4d12 100644 --- a/APL/CommandQueue.cpp +++ b/opendnp3/APL/CommandQueue.cpp @@ -17,12 +17,11 @@ // under the License. // -#include "CommandQueue.h" +#include namespace apl { - apl::CommandTypes CommandQueue::Next() { CriticalSection cs(&mLock); diff --git a/APL/CommandQueue.h b/opendnp3/APL/CommandQueue.h similarity index 94% rename from APL/CommandQueue.h rename to opendnp3/APL/CommandQueue.h index c1852262..878d1c34 100644 --- a/APL/CommandQueue.h +++ b/opendnp3/APL/CommandQueue.h @@ -19,10 +19,11 @@ #ifndef __COMMAND_QUEUE_H_ #define __COMMAND_QUEUE_H_ -#include "CommandTypes.h" -#include "INotifier.h" -#include "CommandInterfaces.h" -#include "Lock.h" +#include +#include +#include +#include + #include namespace apl diff --git a/APL/CommandResponseQueue.cpp b/opendnp3/APL/CommandResponseQueue.cpp similarity index 95% rename from APL/CommandResponseQueue.cpp rename to opendnp3/APL/CommandResponseQueue.cpp index 51445f83..d7b384c1 100644 --- a/APL/CommandResponseQueue.cpp +++ b/opendnp3/APL/CommandResponseQueue.cpp @@ -16,11 +16,10 @@ // specific language governing permissions and limitations // under the License. // -#include "CommandResponseQueue.h" - +#include +#include #include -#include "TimingTools.h" namespace apl { diff --git a/APL/CommandResponseQueue.h b/opendnp3/APL/CommandResponseQueue.h similarity index 91% rename from APL/CommandResponseQueue.h rename to opendnp3/APL/CommandResponseQueue.h index 02ddde2d..28212c26 100644 --- a/APL/CommandResponseQueue.h +++ b/opendnp3/APL/CommandResponseQueue.h @@ -19,10 +19,10 @@ #ifndef __COMMAND_RESPONSE_QUEUE_H_ #define __COMMAND_RESPONSE_QUEUE_H_ -#include "CommandInterfaces.h" -#include "INotifier.h" -#include "Lock.h" -#include "SubjectBase.h" +#include +#include +#include +#include #include diff --git a/APL/CommandTypes.cpp b/opendnp3/APL/CommandTypes.cpp similarity index 97% rename from APL/CommandTypes.cpp rename to opendnp3/APL/CommandTypes.cpp index f5205464..3d9859f5 100644 --- a/APL/CommandTypes.cpp +++ b/opendnp3/APL/CommandTypes.cpp @@ -16,9 +16,9 @@ // specific language governing permissions and limitations // under the License. // -#include "CommandTypes.h" -#include "PackingUnpacking.h" -#include "Exception.h" +#include +#include +#include #include #include diff --git a/APL/CommandTypes.h b/opendnp3/APL/CommandTypes.h similarity index 99% rename from APL/CommandTypes.h rename to opendnp3/APL/CommandTypes.h index 8d2978b4..31b851fd 100644 --- a/APL/CommandTypes.h +++ b/opendnp3/APL/CommandTypes.h @@ -19,9 +19,10 @@ #ifndef __CONTROL_TYPES_H_ #define __CONTROL_TYPES_H_ -#include "Types.h" -#include +#include + #include +#include namespace apl { diff --git a/APL/Configure.h b/opendnp3/APL/Configure.h similarity index 100% rename from APL/Configure.h rename to opendnp3/APL/Configure.h diff --git a/APL/CopyableBuffer.cpp b/opendnp3/APL/CopyableBuffer.cpp similarity index 96% rename from APL/CopyableBuffer.cpp rename to opendnp3/APL/CopyableBuffer.cpp index 90de1ce6..b7444df0 100644 --- a/APL/CopyableBuffer.cpp +++ b/opendnp3/APL/CopyableBuffer.cpp @@ -16,12 +16,11 @@ // specific language governing permissions and limitations // under the License. // -#include "CopyableBuffer.h" +#include +#include #include -#include "ToHex.h" - namespace apl { diff --git a/APL/CopyableBuffer.h b/opendnp3/APL/CopyableBuffer.h similarity index 98% rename from APL/CopyableBuffer.h rename to opendnp3/APL/CopyableBuffer.h index ecd02c3f..b65e233a 100644 --- a/APL/CopyableBuffer.h +++ b/opendnp3/APL/CopyableBuffer.h @@ -19,10 +19,11 @@ #ifndef __COPYABLE_BUFFER_H_ #define __COPYABLE_BUFFER_H_ -#include "Types.h" -#include +#include + #include #include +#include namespace apl { diff --git a/APL/DataInterfaces.h b/opendnp3/APL/DataInterfaces.h similarity index 97% rename from APL/DataInterfaces.h rename to opendnp3/APL/DataInterfaces.h index b35199df..9a50dad6 100644 --- a/APL/DataInterfaces.h +++ b/opendnp3/APL/DataInterfaces.h @@ -19,9 +19,8 @@ #ifndef __DATA_INTERFACES_H_ #define __DATA_INTERFACES_H_ -#include "DataTypes.h" -#include "ITransactable.h" - +#include +#include namespace apl { diff --git a/APL/DataTypes.h b/opendnp3/APL/DataTypes.h similarity index 99% rename from APL/DataTypes.h rename to opendnp3/APL/DataTypes.h index 423528e7..cc16947d 100644 --- a/APL/DataTypes.h +++ b/opendnp3/APL/DataTypes.h @@ -19,7 +19,7 @@ #ifndef __DATA_TYPES_H_ #define __DATA_TYPES_H_ -#include "BaseDataTypes.h" +#include namespace apl { diff --git a/APL/DeleteAny.h b/opendnp3/APL/DeleteAny.h old mode 100755 new mode 100644 similarity index 100% rename from APL/DeleteAny.h rename to opendnp3/APL/DeleteAny.h diff --git a/APL/EventLock.cpp b/opendnp3/APL/EventLock.cpp similarity index 97% rename from APL/EventLock.cpp rename to opendnp3/APL/EventLock.cpp index d5b29787..b21f4373 100644 --- a/APL/EventLock.cpp +++ b/opendnp3/APL/EventLock.cpp @@ -16,9 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "EventLock.h" - - +#include namespace apl { diff --git a/APL/EventLock.h b/opendnp3/APL/EventLock.h similarity index 94% rename from APL/EventLock.h rename to opendnp3/APL/EventLock.h index b576924f..a9ce549e 100644 --- a/APL/EventLock.h +++ b/opendnp3/APL/EventLock.h @@ -19,10 +19,8 @@ #ifndef __EVENT_LOCK_H_ #define __EVENT_LOCK_H_ - - -#include "Types.h" -#include "EventLockBase.h" +#include +#include namespace apl { diff --git a/APL/EventLockBase.h b/opendnp3/APL/EventLockBase.h similarity index 95% rename from APL/EventLockBase.h rename to opendnp3/APL/EventLockBase.h index 3b968889..86812be5 100644 --- a/APL/EventLockBase.h +++ b/opendnp3/APL/EventLockBase.h @@ -19,11 +19,11 @@ #ifndef __EVENT_LOCK_BASE_H_ #define __EVENT_LOCK_BASE_H_ -#include +#include +#include +#include -#include "Notifier.h" -#include "Lock.h" -#include "IEventLock.h" +#include namespace apl { diff --git a/APL/EventSet.h b/opendnp3/APL/EventSet.h similarity index 97% rename from APL/EventSet.h rename to opendnp3/APL/EventSet.h index bd96b176..4f928036 100644 --- a/APL/EventSet.h +++ b/opendnp3/APL/EventSet.h @@ -19,8 +19,8 @@ #ifndef __EVENT_SET_H_ #define __EVENT_SET_H_ +#include -#include "Types.h" #include namespace apl diff --git a/APL/Exception.cpp b/opendnp3/APL/Exception.cpp similarity index 97% rename from APL/Exception.cpp rename to opendnp3/APL/Exception.cpp index 4715d6e0..67a04a1d 100644 --- a/APL/Exception.cpp +++ b/opendnp3/APL/Exception.cpp @@ -16,7 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "Exception.h" +#include #include diff --git a/APL/Exception.h b/opendnp3/APL/Exception.h similarity index 98% rename from APL/Exception.h rename to opendnp3/APL/Exception.h index 779ff600..24cb503b 100644 --- a/APL/Exception.h +++ b/opendnp3/APL/Exception.h @@ -19,11 +19,11 @@ #ifndef __EXCEPTION_H_ #define __EXCEPTION_H_ +#include #include -#include #include -#include "Configure.h" +#include namespace apl { diff --git a/APL/FlexibleDataObserver.cpp b/opendnp3/APL/FlexibleDataObserver.cpp similarity index 97% rename from APL/FlexibleDataObserver.cpp rename to opendnp3/APL/FlexibleDataObserver.cpp index e7cbcc6b..36f0b70b 100644 --- a/APL/FlexibleDataObserver.cpp +++ b/opendnp3/APL/FlexibleDataObserver.cpp @@ -16,8 +16,8 @@ // specific language governing permissions and limitations // under the License. // -#include "FlexibleDataObserver.h" -#include "TimingTools.h" +#include +#include namespace apl { diff --git a/APL/FlexibleDataObserver.h b/opendnp3/APL/FlexibleDataObserver.h similarity index 98% rename from APL/FlexibleDataObserver.h rename to opendnp3/APL/FlexibleDataObserver.h index 25151177..d6aef34c 100644 --- a/APL/FlexibleDataObserver.h +++ b/opendnp3/APL/FlexibleDataObserver.h @@ -19,10 +19,10 @@ #ifndef __FLEXIBLE_DATA_OBSERVER_H_ #define __FLEXIBLE_DATA_OBSERVER_H_ -#include "DataInterfaces.h" -#include "Lock.h" -#include "SubjectBase.h" -#include "Util.h" +#include +#include +#include +#include #include #include diff --git a/APL/Function.h b/opendnp3/APL/Function.h old mode 100755 new mode 100644 similarity index 100% rename from APL/Function.h rename to opendnp3/APL/Function.h diff --git a/APL/GetKeys.h b/opendnp3/APL/GetKeys.h old mode 100755 new mode 100644 similarity index 100% rename from APL/GetKeys.h rename to opendnp3/APL/GetKeys.h diff --git a/APL/IEventLock.h b/opendnp3/APL/IEventLock.h similarity index 100% rename from APL/IEventLock.h rename to opendnp3/APL/IEventLock.h diff --git a/APL/IHandlerAsync.cpp b/opendnp3/APL/IHandlerAsync.cpp similarity index 96% rename from APL/IHandlerAsync.cpp rename to opendnp3/APL/IHandlerAsync.cpp index 4b50a454..531434b4 100644 --- a/APL/IHandlerAsync.cpp +++ b/opendnp3/APL/IHandlerAsync.cpp @@ -16,7 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "IHandlerAsync.h" +#include namespace apl { diff --git a/APL/IHandlerAsync.h b/opendnp3/APL/IHandlerAsync.h similarity index 96% rename from APL/IHandlerAsync.h rename to opendnp3/APL/IHandlerAsync.h index 620ac407..0f8ea7aa 100644 --- a/APL/IHandlerAsync.h +++ b/opendnp3/APL/IHandlerAsync.h @@ -19,7 +19,7 @@ #ifndef __I_HANDLER_ASYNC_H_ #define __I_HANDLER_ASYNC_H_ -#include "AsyncLayerInterfaces.h" +#include namespace apl { diff --git a/APL/INotifier.h b/opendnp3/APL/INotifier.h similarity index 100% rename from APL/INotifier.h rename to opendnp3/APL/INotifier.h diff --git a/APL/IOService.cpp b/opendnp3/APL/IOService.cpp similarity index 96% rename from APL/IOService.cpp rename to opendnp3/APL/IOService.cpp index 8f393541..f536e5c6 100644 --- a/APL/IOService.cpp +++ b/opendnp3/APL/IOService.cpp @@ -17,7 +17,8 @@ // under the License. // -#include "IOService.h" +#include + #include namespace apl diff --git a/APL/IOService.h b/opendnp3/APL/IOService.h similarity index 100% rename from APL/IOService.h rename to opendnp3/APL/IOService.h diff --git a/APL/IOServiceThread.cpp b/opendnp3/APL/IOServiceThread.cpp similarity index 94% rename from APL/IOServiceThread.cpp rename to opendnp3/APL/IOServiceThread.cpp index 8dd5197e..94fcc329 100644 --- a/APL/IOServiceThread.cpp +++ b/opendnp3/APL/IOServiceThread.cpp @@ -17,10 +17,9 @@ // under the License. // -#include "IOServiceThread.h" - -#include "Exception.h" -#include "Logger.h" +#include +#include +#include #include #include diff --git a/APL/IOServiceThread.h b/opendnp3/APL/IOServiceThread.h similarity index 92% rename from APL/IOServiceThread.h rename to opendnp3/APL/IOServiceThread.h index 8088b5d4..e5749bd6 100644 --- a/APL/IOServiceThread.h +++ b/opendnp3/APL/IOServiceThread.h @@ -19,9 +19,9 @@ #ifndef __IO_SERVICE_THREAD_H_ #define __IO_SERVICE_THREAD_H_ -#include "Thread.h" -#include "TimerSourceASIO.h" -#include "Loggable.h" +#include +#include +#include namespace boost { diff --git a/APL/IPhysicalLayerAsync.h b/opendnp3/APL/IPhysicalLayerAsync.h similarity index 98% rename from APL/IPhysicalLayerAsync.h rename to opendnp3/APL/IPhysicalLayerAsync.h index 88934697..7c785017 100644 --- a/APL/IPhysicalLayerAsync.h +++ b/opendnp3/APL/IPhysicalLayerAsync.h @@ -18,7 +18,7 @@ #ifndef _I_PHYSICAL_LAYER_ASYNC_H_ #define _I_PHYSICAL_LAYER_ASYNC_H_ -#include "AsyncLayerInterfaces.h" +#include namespace apl { diff --git a/APL/IPhysicalLayerObserver.h b/opendnp3/APL/IPhysicalLayerObserver.h similarity index 95% rename from APL/IPhysicalLayerObserver.h rename to opendnp3/APL/IPhysicalLayerObserver.h index e6b8cb1c..f0fd6c8a 100644 --- a/APL/IPhysicalLayerObserver.h +++ b/opendnp3/APL/IPhysicalLayerObserver.h @@ -19,9 +19,9 @@ #ifndef __I_PHYSICAL_LAYER_OBSERVER_H_ #define __I_PHYSICAL_LAYER_OBSERVER_H_ -#include +#include -#include "PhysicalLayerStates.h" +#include namespace apl { diff --git a/APL/IPhysicalLayerSource.h b/opendnp3/APL/IPhysicalLayerSource.h similarity index 100% rename from APL/IPhysicalLayerSource.h rename to opendnp3/APL/IPhysicalLayerSource.h diff --git a/APL/ISubject.h b/opendnp3/APL/ISubject.h similarity index 100% rename from APL/ISubject.h rename to opendnp3/APL/ISubject.h diff --git a/APL/ITimeSource.h b/opendnp3/APL/ITimeSource.h similarity index 97% rename from APL/ITimeSource.h rename to opendnp3/APL/ITimeSource.h index 8aa1a2ec..4829155c 100644 --- a/APL/ITimeSource.h +++ b/opendnp3/APL/ITimeSource.h @@ -19,7 +19,7 @@ #ifndef __I_TIME_SOURCE_H_ #define __I_TIME_SOURCE_H_ -#include "Types.h" +#include namespace boost { diff --git a/APL/ITimer.h b/opendnp3/APL/ITimer.h similarity index 100% rename from APL/ITimer.h rename to opendnp3/APL/ITimer.h diff --git a/APL/ITimerSource.cpp b/opendnp3/APL/ITimerSource.cpp old mode 100755 new mode 100644 similarity index 96% rename from APL/ITimerSource.cpp rename to opendnp3/APL/ITimerSource.cpp index 38b629b1..b297bf38 --- a/APL/ITimerSource.cpp +++ b/opendnp3/APL/ITimerSource.cpp @@ -16,7 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "ITimerSource.h" +#include #include diff --git a/APL/ITimerSource.h b/opendnp3/APL/ITimerSource.h old mode 100755 new mode 100644 similarity index 91% rename from APL/ITimerSource.h rename to opendnp3/APL/ITimerSource.h index e3d48df9..26afd6df --- a/APL/ITimerSource.h +++ b/opendnp3/APL/ITimerSource.h @@ -19,10 +19,10 @@ #ifndef __I_TIMER_SOURCE_H_ #define __I_TIMER_SOURCE_H_ -#include "Types.h" -#include "TimeTypes.h" -#include "ITimer.h" -#include "Function.h" +#include +#include +#include +#include namespace apl { @@ -59,8 +59,8 @@ class ITimerSource virtual ITimer* Start(const boost::posix_time::ptime&, const FunctionVoidZero&) = 0; /** Thread-safe way to post an event to handled asynchronously */ - virtual void Post(const FunctionVoidZero&) = 0; - + virtual void Post(const FunctionVoidZero&) = 0; + /** Thread safe way to execute a function synchronously */ virtual void PostSync(const FunctionVoidZero&) = 0; diff --git a/APL/ITransactable.h b/opendnp3/APL/ITransactable.h old mode 100755 new mode 100644 similarity index 100% rename from APL/ITransactable.h rename to opendnp3/APL/ITransactable.h diff --git a/APL/Lock.h b/opendnp3/APL/Lock.h similarity index 96% rename from APL/Lock.h rename to opendnp3/APL/Lock.h index e932bf98..dc0e0d54 100644 --- a/APL/Lock.h +++ b/opendnp3/APL/Lock.h @@ -19,7 +19,7 @@ #ifndef __LOCK_H_ #define __LOCK_H_ -#include "LockBoost.h" +#include namespace apl { diff --git a/APL/LockBase.cpp b/opendnp3/APL/LockBase.cpp similarity index 96% rename from APL/LockBase.cpp rename to opendnp3/APL/LockBase.cpp index 0764db4e..fec1448d 100644 --- a/APL/LockBase.cpp +++ b/opendnp3/APL/LockBase.cpp @@ -16,7 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "LockBase.h" +#include namespace apl { diff --git a/APL/LockBase.h b/opendnp3/APL/LockBase.h similarity index 97% rename from APL/LockBase.h rename to opendnp3/APL/LockBase.h index b7d623f0..d78b87a7 100644 --- a/APL/LockBase.h +++ b/opendnp3/APL/LockBase.h @@ -19,13 +19,11 @@ #ifndef __I_LOCK_BASE_H_ #define __I_LOCK_BASE_H_ +#include +#include - -//includes size_t -#include #include -#include "Types.h" -#include "Uncopyable.h" +#include namespace apl { diff --git a/APL/LockBoost.cpp b/opendnp3/APL/LockBoost.cpp similarity index 98% rename from APL/LockBoost.cpp rename to opendnp3/APL/LockBoost.cpp index a299ad5d..6eeeb87b 100644 --- a/APL/LockBoost.cpp +++ b/opendnp3/APL/LockBoost.cpp @@ -17,8 +17,8 @@ // under the License. // +#include -#include "LockBoost.h" #include namespace apl diff --git a/APL/LockBoost.h b/opendnp3/APL/LockBoost.h similarity index 94% rename from APL/LockBoost.h rename to opendnp3/APL/LockBoost.h index fa00b3cb..f29d047c 100644 --- a/APL/LockBoost.h +++ b/opendnp3/APL/LockBoost.h @@ -17,13 +17,12 @@ // under the License. // - #ifndef _LOCK_BOOST_H_ #define _LOCK_BOOST_H_ -#include "LockBase.h" -#include "Uncopyable.h" -#include "Configure.h" +#include +#include +#include #ifdef APL_PLATFORM_WIN #pragma warning( disable : 4996 ) diff --git a/APL/Log.cpp b/opendnp3/APL/Log.cpp similarity index 96% rename from APL/Log.cpp rename to opendnp3/APL/Log.cpp index 75524944..b7a8f4ef 100644 --- a/APL/Log.cpp +++ b/opendnp3/APL/Log.cpp @@ -17,12 +17,13 @@ // under the License. // +#include +#include +#include + +#include #include #include -#include -#include "Log.h" -#include "Thread.h" -#include "Exception.h" using namespace std; diff --git a/APL/Log.h b/opendnp3/APL/Log.h similarity index 90% rename from APL/Log.h rename to opendnp3/APL/Log.h index ff515ab6..2e41f6a3 100644 --- a/APL/Log.h +++ b/opendnp3/APL/Log.h @@ -20,17 +20,17 @@ #define __EVENT_LOG_H_ +#include +#include +#include +#include +#include +#include + #include #include #include -#include "LogBase.h" -#include "TimeTypes.h" -#include "Logger.h" -#include "EventLock.h" -#include "Uncopyable.h" -#include "LogEntryCircularBuffer.h" - namespace apl { diff --git a/APL/LogBase.h b/opendnp3/APL/LogBase.h similarity index 97% rename from APL/LogBase.h rename to opendnp3/APL/LogBase.h index b62563e9..90fd03e4 100644 --- a/APL/LogBase.h +++ b/opendnp3/APL/LogBase.h @@ -19,7 +19,7 @@ #ifndef __LOG_BASE_H_ #define __LOG_BASE_H_ -#include "LogEntry.h" +#include namespace apl { diff --git a/APL/LogEntry.cpp b/opendnp3/APL/LogEntry.cpp similarity index 96% rename from APL/LogEntry.cpp rename to opendnp3/APL/LogEntry.cpp index 4d7ede69..41ad8b55 100644 --- a/APL/LogEntry.cpp +++ b/opendnp3/APL/LogEntry.cpp @@ -16,12 +16,11 @@ // specific language governing permissions and limitations // under the License. // -#include "LogEntry.h" - +#include +#include +#include #include -#include "Util.h" -#include "Parsing.h" using namespace std; diff --git a/APL/LogEntry.h b/opendnp3/APL/LogEntry.h similarity index 95% rename from APL/LogEntry.h rename to opendnp3/APL/LogEntry.h index d15c100d..19fd2d51 100644 --- a/APL/LogEntry.h +++ b/opendnp3/APL/LogEntry.h @@ -19,10 +19,10 @@ #ifndef __LOG_ENTRY_H_ #define __LOG_ENTRY_H_ -#include "LogTypes.h" -#include "Parsing.h" -#include "Types.h" -#include "TimingTools.h" +#include +#include +#include +#include #include diff --git a/APL/LogEntryCircularBuffer.cpp b/opendnp3/APL/LogEntryCircularBuffer.cpp similarity index 97% rename from APL/LogEntryCircularBuffer.cpp rename to opendnp3/APL/LogEntryCircularBuffer.cpp index 78aceb42..7cb0dfc1 100644 --- a/APL/LogEntryCircularBuffer.cpp +++ b/opendnp3/APL/LogEntryCircularBuffer.cpp @@ -16,7 +16,8 @@ // specific language governing permissions and limitations // under the License. // -#include "LogEntryCircularBuffer.h" +#include + #include namespace apl diff --git a/APL/LogEntryCircularBuffer.h b/opendnp3/APL/LogEntryCircularBuffer.h similarity index 89% rename from APL/LogEntryCircularBuffer.h rename to opendnp3/APL/LogEntryCircularBuffer.h index 34246339..7a4d4a05 100644 --- a/APL/LogEntryCircularBuffer.h +++ b/opendnp3/APL/LogEntryCircularBuffer.h @@ -20,16 +20,15 @@ #ifndef __LOG_ENTRY_CIRCULAR_BUFFER_H_ #define __LOG_ENTRY_CIRCULAR_BUFFER_H_ +#include +#include +#include +#include +#include #include #include -#include "LogEntry.h" -#include "EventLock.h" -#include "Uncopyable.h" -#include "SubjectBase.h" -#include "LogBase.h" - namespace apl { diff --git a/APL/LogToFile.cpp b/opendnp3/APL/LogToFile.cpp similarity index 97% rename from APL/LogToFile.cpp rename to opendnp3/APL/LogToFile.cpp index b21809a4..ff355846 100644 --- a/APL/LogToFile.cpp +++ b/opendnp3/APL/LogToFile.cpp @@ -17,15 +17,12 @@ // under the License. // - -#include "LogToFile.h" -#include "Util.h" +#include +#include namespace apl { - - LogToFile :: LogToFile(EventLog* apLog, const std::string aFileName, const bool aOverwriteFile) : LogEntryCircularBuffer(1000), mpThread(NULL), mpLog(apLog), mFileName(aFileName), mOverwriteFile(aOverwriteFile) { diff --git a/APL/LogToFile.h b/opendnp3/APL/LogToFile.h similarity index 92% rename from APL/LogToFile.h rename to opendnp3/APL/LogToFile.h index 5d9a2b77..c480b06b 100644 --- a/APL/LogToFile.h +++ b/opendnp3/APL/LogToFile.h @@ -16,21 +16,19 @@ // specific language governing permissions and limitations // under the License. // - - #ifndef _LOG_TO_FILE_H_ #define _LOG_TO_FILE_H_ +#include +#include +#include + #include #include -#include #include +#include #include -#include "Log.h" -#include "LogEntryCircularBuffer.h" -#include "Thread.h" - namespace apl { diff --git a/APL/LogToStdio.cpp b/opendnp3/APL/LogToStdio.cpp similarity index 94% rename from APL/LogToStdio.cpp rename to opendnp3/APL/LogToStdio.cpp index 5b3b191e..4ad4476f 100644 --- a/APL/LogToStdio.cpp +++ b/opendnp3/APL/LogToStdio.cpp @@ -16,9 +16,9 @@ // specific language governing permissions and limitations // under the License. // -#include "LogToStdio.h" +#include +#include -#include "LogEntry.h" #include namespace apl diff --git a/APL/LogToStdio.h b/opendnp3/APL/LogToStdio.h similarity index 95% rename from APL/LogToStdio.h rename to opendnp3/APL/LogToStdio.h index 6a13e5b6..e0b26970 100644 --- a/APL/LogToStdio.h +++ b/opendnp3/APL/LogToStdio.h @@ -19,8 +19,8 @@ #ifndef __LOG_TO_STDIO_H_ #define __LOG_TO_STDIO_H_ -#include "Lock.h" -#include "LogBase.h" +#include +#include namespace apl { diff --git a/APL/LogTypes.cpp b/opendnp3/APL/LogTypes.cpp similarity index 97% rename from APL/LogTypes.cpp rename to opendnp3/APL/LogTypes.cpp index aaf6feca..cb734a66 100644 --- a/APL/LogTypes.cpp +++ b/opendnp3/APL/LogTypes.cpp @@ -17,8 +17,8 @@ // under the License. // -#include "LogTypes.h" -#include "Util.h" +#include +#include #include diff --git a/APL/LogTypes.h b/opendnp3/APL/LogTypes.h similarity index 100% rename from APL/LogTypes.h rename to opendnp3/APL/LogTypes.h diff --git a/APL/LogVar.h b/opendnp3/APL/LogVar.h similarity index 99% rename from APL/LogVar.h rename to opendnp3/APL/LogVar.h index 3d182839..4597fa01 100644 --- a/APL/LogVar.h +++ b/opendnp3/APL/LogVar.h @@ -21,7 +21,6 @@ #include - namespace apl { diff --git a/APL/Loggable.cpp b/opendnp3/APL/Loggable.cpp similarity index 90% rename from APL/Loggable.cpp rename to opendnp3/APL/Loggable.cpp index dd888838..187c97b7 100644 --- a/APL/Loggable.cpp +++ b/opendnp3/APL/Loggable.cpp @@ -16,12 +16,11 @@ // specific language governing permissions and limitations // under the License. // -#include "Loggable.h" - +#include +#include +#include #include -#include "Log.h" -#include "Logger.h" namespace apl { diff --git a/APL/Loggable.h b/opendnp3/APL/Loggable.h similarity index 96% rename from APL/Loggable.h rename to opendnp3/APL/Loggable.h index 2f89d4d2..07c47ae0 100644 --- a/APL/Loggable.h +++ b/opendnp3/APL/Loggable.h @@ -19,9 +19,8 @@ #ifndef __LOGGABLE_H_ #define __LOGGABLE_H_ -#include "Configure.h" -#include "LogBase.h" - +#include +#include namespace apl { diff --git a/APL/Logger.cpp b/opendnp3/APL/Logger.cpp similarity index 97% rename from APL/Logger.cpp rename to opendnp3/APL/Logger.cpp index 97e2ee65..2e921aaa 100644 --- a/APL/Logger.cpp +++ b/opendnp3/APL/Logger.cpp @@ -16,12 +16,13 @@ // specific language governing permissions and limitations // under the License. // -#include "Logger.h" +#include +#include + #include -#include "Log.h" #include -using namespace std; +using namespace std; namespace apl { diff --git a/APL/Logger.h b/opendnp3/APL/Logger.h similarity index 95% rename from APL/Logger.h rename to opendnp3/APL/Logger.h index 5da949d3..efc78eda 100644 --- a/APL/Logger.h +++ b/opendnp3/APL/Logger.h @@ -19,14 +19,14 @@ #ifndef __LOGGER_H_ #define __LOGGER_H_ +#include +#include +#include +#include + +#include #include #include -#include -#include "Lock.h" -#include "LogEntry.h" -#include "LogBase.h" -#include "LogVar.h" - namespace apl { diff --git a/APL/LowerLayerToPhysAdapter.cpp b/opendnp3/APL/LowerLayerToPhysAdapter.cpp similarity index 96% rename from APL/LowerLayerToPhysAdapter.cpp rename to opendnp3/APL/LowerLayerToPhysAdapter.cpp index fd52a23e..dd01f684 100644 --- a/APL/LowerLayerToPhysAdapter.cpp +++ b/opendnp3/APL/LowerLayerToPhysAdapter.cpp @@ -16,10 +16,8 @@ // specific language governing permissions and limitations // under the License. // -#include "LowerLayerToPhysAdapter.h" - - -#include "IPhysicalLayerAsync.h" +#include +#include namespace apl { diff --git a/APL/LowerLayerToPhysAdapter.h b/opendnp3/APL/LowerLayerToPhysAdapter.h similarity index 96% rename from APL/LowerLayerToPhysAdapter.h rename to opendnp3/APL/LowerLayerToPhysAdapter.h index 37e5bce0..f69a102c 100644 --- a/APL/LowerLayerToPhysAdapter.h +++ b/opendnp3/APL/LowerLayerToPhysAdapter.h @@ -19,9 +19,8 @@ #ifndef __LOWER_LAYER_TO_PHYS_ADAPTER_H_ #define __LOWER_LAYER_TO_PHYS_ADAPTER_H_ - -#include "IHandlerAsync.h" -#include "AsyncLayerInterfaces.h" +#include +#include namespace apl { diff --git a/APL/MetricBuffer.cpp b/opendnp3/APL/MetricBuffer.cpp similarity index 96% rename from APL/MetricBuffer.cpp rename to opendnp3/APL/MetricBuffer.cpp index 71ebb2eb..94b9fd8e 100644 --- a/APL/MetricBuffer.cpp +++ b/opendnp3/APL/MetricBuffer.cpp @@ -16,8 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "MetricBuffer.h" - +#include namespace apl { diff --git a/APL/MetricBuffer.h b/opendnp3/APL/MetricBuffer.h similarity index 91% rename from APL/MetricBuffer.h rename to opendnp3/APL/MetricBuffer.h index dbb80843..946ce44d 100644 --- a/APL/MetricBuffer.h +++ b/opendnp3/APL/MetricBuffer.h @@ -19,13 +19,13 @@ #ifndef __METRIC_BUFFER_H_ #define __METRIC_BUFFER_H_ -#include "LogBase.h" -#include "SubjectBase.h" -#include "Uncopyable.h" -#include "Lock.h" +#include +#include +#include +#include -#include #include +#include namespace apl { diff --git a/APL/MultiplexingDataObserver.cpp b/opendnp3/APL/MultiplexingDataObserver.cpp similarity index 98% rename from APL/MultiplexingDataObserver.cpp rename to opendnp3/APL/MultiplexingDataObserver.cpp index 416c315b..0e5d544f 100644 --- a/APL/MultiplexingDataObserver.cpp +++ b/opendnp3/APL/MultiplexingDataObserver.cpp @@ -17,7 +17,7 @@ // under the License. // -#include "MultiplexingDataObserver.h" +#include namespace apl { diff --git a/APL/MultiplexingDataObserver.h b/opendnp3/APL/MultiplexingDataObserver.h similarity index 96% rename from APL/MultiplexingDataObserver.h rename to opendnp3/APL/MultiplexingDataObserver.h index 348fd33b..20d57047 100644 --- a/APL/MultiplexingDataObserver.h +++ b/opendnp3/APL/MultiplexingDataObserver.h @@ -19,9 +19,9 @@ #ifndef __MULTIPLEXING_DATA_OBSERVER_H_ #define __MULTIPLEXING_DATA_OBSERVER_H_ +#include +#include -#include "DataInterfaces.h" -#include "Lock.h" #include namespace apl diff --git a/APL/Notifier.h b/opendnp3/APL/Notifier.h similarity index 94% rename from APL/Notifier.h rename to opendnp3/APL/Notifier.h index 7a57d66f..441f1273 100644 --- a/APL/Notifier.h +++ b/opendnp3/APL/Notifier.h @@ -19,8 +19,8 @@ #ifndef __NOTIFIER_H_ #define __NOTIFIER_H_ -#include "IEventLock.h" -#include "INotifier.h" +#include +#include namespace apl { diff --git a/APL/PackingTemplates.h b/opendnp3/APL/PackingTemplates.h similarity index 98% rename from APL/PackingTemplates.h rename to opendnp3/APL/PackingTemplates.h index 0ca1156c..d25173db 100644 --- a/APL/PackingTemplates.h +++ b/opendnp3/APL/PackingTemplates.h @@ -19,8 +19,8 @@ #ifndef __PACKING_TEMPLATES_H_ #define __PACKING_TEMPLATES_H_ +#include -#include "Types.h" #include namespace apl diff --git a/APL/PackingUnpacking.cpp b/opendnp3/APL/PackingUnpacking.cpp similarity index 97% rename from APL/PackingUnpacking.cpp rename to opendnp3/APL/PackingUnpacking.cpp index bd830ebf..50586aee 100644 --- a/APL/PackingUnpacking.cpp +++ b/opendnp3/APL/PackingUnpacking.cpp @@ -16,8 +16,10 @@ // specific language governing permissions and limitations // under the License. // -#include "PackingUnpacking.h" +#include +#include +#include #ifdef max #undef max @@ -27,9 +29,6 @@ #undef min #endif -#include "Util.h" -#include - namespace apl { const boost::uint8_t UInt8::Max = std::numeric_limits::max(); diff --git a/APL/PackingUnpacking.h b/opendnp3/APL/PackingUnpacking.h similarity index 99% rename from APL/PackingUnpacking.h rename to opendnp3/APL/PackingUnpacking.h index 9888efa8..cf4e0e8d 100644 --- a/APL/PackingUnpacking.h +++ b/opendnp3/APL/PackingUnpacking.h @@ -19,11 +19,11 @@ #ifndef __PACKING_UNPACKING_H_ #define __PACKING_UNPACKING_H_ +#include -#include "Types.h" -#include -#include #include +#include +#include #ifdef max #undef max diff --git a/APL/Parsing.cpp b/opendnp3/APL/Parsing.cpp similarity index 97% rename from APL/Parsing.cpp rename to opendnp3/APL/Parsing.cpp index 75e9fd97..784c0659 100644 --- a/APL/Parsing.cpp +++ b/opendnp3/APL/Parsing.cpp @@ -16,10 +16,10 @@ // specific language governing permissions and limitations // under the License. // -#include "Parsing.h" +#include -#include #include +#include namespace apl { diff --git a/APL/Parsing.h b/opendnp3/APL/Parsing.h similarity index 99% rename from APL/Parsing.h rename to opendnp3/APL/Parsing.h index dfbf1613..ece4eb80 100644 --- a/APL/Parsing.h +++ b/opendnp3/APL/Parsing.h @@ -19,10 +19,9 @@ #ifndef __PARSING_H_ #define __PARSING_H_ -#include -#include - #include +#include +#include namespace apl { diff --git a/APL/PhysLayerSettings.h b/opendnp3/APL/PhysLayerSettings.h similarity index 95% rename from APL/PhysLayerSettings.h rename to opendnp3/APL/PhysLayerSettings.h index 5e779f99..fbe00f6a 100644 --- a/APL/PhysLayerSettings.h +++ b/opendnp3/APL/PhysLayerSettings.h @@ -19,8 +19,8 @@ #ifndef __PHYS_LAYER_SETTINGS_H_ #define __PHYS_LAYER_SETTINGS_H_ -#include "Types.h" -#include "LogTypes.h" +#include +#include namespace apl { diff --git a/APL/PhysLoopback.cpp b/opendnp3/APL/PhysLoopback.cpp similarity index 92% rename from APL/PhysLoopback.cpp rename to opendnp3/APL/PhysLoopback.cpp index 16c699da..bd9fa14f 100644 --- a/APL/PhysLoopback.cpp +++ b/opendnp3/APL/PhysLoopback.cpp @@ -17,10 +17,9 @@ // under the License. // -#include "PhysLoopback.h" - -#include "IPhysicalLayerAsync.h" -#include "Logger.h" +#include +#include +#include namespace apl { diff --git a/APL/PhysLoopback.h b/opendnp3/APL/PhysLoopback.h similarity index 94% rename from APL/PhysLoopback.h rename to opendnp3/APL/PhysLoopback.h index c0fe14ac..a70f06b4 100644 --- a/APL/PhysLoopback.h +++ b/opendnp3/APL/PhysLoopback.h @@ -19,8 +19,8 @@ #ifndef __PHYS_LOOPBACK_H_ #define __PHYS_LOOPBACK_H_ -#include "PhysicalLayerMonitor.h" -#include "CopyableBuffer.h" +#include +#include namespace apl { diff --git a/APL/PhysicalLayerAsyncASIO.h b/opendnp3/APL/PhysicalLayerAsyncASIO.h similarity index 96% rename from APL/PhysicalLayerAsyncASIO.h rename to opendnp3/APL/PhysicalLayerAsyncASIO.h index f37dfd7f..f8fa8fff 100644 --- a/APL/PhysicalLayerAsyncASIO.h +++ b/opendnp3/APL/PhysicalLayerAsyncASIO.h @@ -19,7 +19,7 @@ #ifndef __PHYSICAL_LAYER_ASYNC_ASIO_H_ #define __PHYSICAL_LAYER_ASYNC_ASIO_H_ -#include "PhysicalLayerAsyncBase.h" +#include namespace boost { diff --git a/APL/PhysicalLayerAsyncBase.cpp b/opendnp3/APL/PhysicalLayerAsyncBase.cpp similarity index 97% rename from APL/PhysicalLayerAsyncBase.cpp rename to opendnp3/APL/PhysicalLayerAsyncBase.cpp index c4ae552a..8e39bf17 100644 --- a/APL/PhysicalLayerAsyncBase.cpp +++ b/opendnp3/APL/PhysicalLayerAsyncBase.cpp @@ -16,15 +16,13 @@ // specific language governing permissions and limitations // under the License. // -#include "PhysicalLayerAsyncBase.h" - -#include "IHandlerAsync.h" -#include "Logger.h" -#include "Exception.h" +#include +#include +#include +#include #include - using namespace std; namespace apl diff --git a/APL/PhysicalLayerAsyncBase.h b/opendnp3/APL/PhysicalLayerAsyncBase.h similarity index 98% rename from APL/PhysicalLayerAsyncBase.h rename to opendnp3/APL/PhysicalLayerAsyncBase.h index a4f96af8..736b81da 100644 --- a/APL/PhysicalLayerAsyncBase.h +++ b/opendnp3/APL/PhysicalLayerAsyncBase.h @@ -19,10 +19,10 @@ #ifndef __PHYSICAL_LAYER_ASYNC_BASE_H_ #define __PHYSICAL_LAYER_ASYNC_BASE_H_ +#include +#include #include -#include "IPhysicalLayerAsync.h" -#include "Loggable.h" namespace apl { diff --git a/APL/PhysicalLayerAsyncBaseTCP.cpp b/opendnp3/APL/PhysicalLayerAsyncBaseTCP.cpp similarity index 96% rename from APL/PhysicalLayerAsyncBaseTCP.cpp rename to opendnp3/APL/PhysicalLayerAsyncBaseTCP.cpp index d62d85ae..3805219c 100644 --- a/APL/PhysicalLayerAsyncBaseTCP.cpp +++ b/opendnp3/APL/PhysicalLayerAsyncBaseTCP.cpp @@ -17,16 +17,15 @@ // under the License. // -#include "PhysicalLayerAsyncBaseTCP.h" +#include +#include +#include +#include -#include -#include #include #include - -#include "Exception.h" -#include "IHandlerAsync.h" -#include "Logger.h" +#include +#include using namespace boost; using namespace boost::asio; diff --git a/APL/PhysicalLayerAsyncBaseTCP.h b/opendnp3/APL/PhysicalLayerAsyncBaseTCP.h similarity index 97% rename from APL/PhysicalLayerAsyncBaseTCP.h rename to opendnp3/APL/PhysicalLayerAsyncBaseTCP.h index c0498cb5..d50b045d 100644 --- a/APL/PhysicalLayerAsyncBaseTCP.h +++ b/opendnp3/APL/PhysicalLayerAsyncBaseTCP.h @@ -19,7 +19,8 @@ #ifndef __PHYSICAL_LAYER_ASYNC_BASE_TCP_H_ #define __PHYSICAL_LAYER_ASYNC_BASE_TCP_H_ -#include "PhysicalLayerAsyncASIO.h" +#include + #include #include #include diff --git a/APL/PhysicalLayerAsyncSerial.cpp b/opendnp3/APL/PhysicalLayerAsyncSerial.cpp similarity index 93% rename from APL/PhysicalLayerAsyncSerial.cpp rename to opendnp3/APL/PhysicalLayerAsyncSerial.cpp index bcf1dea3..54da0131 100644 --- a/APL/PhysicalLayerAsyncSerial.cpp +++ b/opendnp3/APL/PhysicalLayerAsyncSerial.cpp @@ -17,18 +17,17 @@ // under the License. // -#include "PhysicalLayerAsyncSerial.h" +#include +#include +#include +#include +#include +#include #include #include -#include #include -#include "Exception.h" -#include "IHandlerAsync.h" -#include "Logger.h" -#include "ASIOSerialHelpers.h" - using namespace boost; using namespace boost::asio; using namespace boost::system; diff --git a/APL/PhysicalLayerAsyncSerial.h b/opendnp3/APL/PhysicalLayerAsyncSerial.h similarity index 94% rename from APL/PhysicalLayerAsyncSerial.h rename to opendnp3/APL/PhysicalLayerAsyncSerial.h index 740b3b3f..06f2afd8 100644 --- a/APL/PhysicalLayerAsyncSerial.h +++ b/opendnp3/APL/PhysicalLayerAsyncSerial.h @@ -19,10 +19,10 @@ #ifndef __PHYSICAL_LAYER_ASYNC_SERIAL_H_ #define __PHYSICAL_LAYER_ASYNC_SERIAL_H_ -#include "PhysicalLayerAsyncASIO.h" -#include "SerialTypes.h" -#include +#include +#include +#include #include namespace apl diff --git a/APL/PhysicalLayerAsyncTCPClient.cpp b/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp similarity index 91% rename from APL/PhysicalLayerAsyncTCPClient.cpp rename to opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp index 253d571e..dc178fae 100644 --- a/APL/PhysicalLayerAsyncTCPClient.cpp +++ b/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp @@ -16,15 +16,15 @@ // permissions and limitations under the License. // +#include +#include +#include +#include + #include #include #include -#include "Exception.h" -#include "IHandlerAsync.h" -#include "Logger.h" -#include "PhysicalLayerAsyncTCPClient.h" - using namespace boost; using namespace boost::asio; using namespace std; diff --git a/APL/PhysicalLayerAsyncTCPClient.h b/opendnp3/APL/PhysicalLayerAsyncTCPClient.h similarity index 96% rename from APL/PhysicalLayerAsyncTCPClient.h rename to opendnp3/APL/PhysicalLayerAsyncTCPClient.h index eb438f4d..ac521839 100644 --- a/APL/PhysicalLayerAsyncTCPClient.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPClient.h @@ -19,9 +19,9 @@ #ifndef __PHYSICAL_LAYER_ASYNC_TCP_CLIENT_H_ #define __PHYSICAL_LAYER_ASYNC_TCP_CLIENT_H_ -#include +#include -#include "PhysicalLayerAsyncBaseTCP.h" +#include namespace apl { diff --git a/APL/PhysicalLayerAsyncTCPServer.cpp b/opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp similarity index 94% rename from APL/PhysicalLayerAsyncTCPServer.cpp rename to opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp index e6c8db44..18427d0d 100644 --- a/APL/PhysicalLayerAsyncTCPServer.cpp +++ b/opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp @@ -16,15 +16,15 @@ // permissions and limitations under the License. // +#include +#include +#include +#include + #include #include #include -#include "Exception.h" -#include "IHandlerAsync.h" -#include "Logger.h" -#include "PhysicalLayerAsyncTCPServer.h" - using namespace boost; using namespace boost::asio; using namespace boost::system; diff --git a/APL/PhysicalLayerAsyncTCPServer.h b/opendnp3/APL/PhysicalLayerAsyncTCPServer.h similarity index 96% rename from APL/PhysicalLayerAsyncTCPServer.h rename to opendnp3/APL/PhysicalLayerAsyncTCPServer.h index d341cf81..4b91f57e 100644 --- a/APL/PhysicalLayerAsyncTCPServer.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPServer.h @@ -18,9 +18,9 @@ #ifndef __PHYSICAL_LAYER_ASYNC_TCP_SERVER_H_ #define __PHYSICAL_LAYER_ASYNC_TCP_SERVER_H_ -#include +#include -#include "PhysicalLayerAsyncBaseTCP.h" +#include namespace apl { diff --git a/APL/PhysicalLayerAsyncTCPv4Client.h b/opendnp3/APL/PhysicalLayerAsyncTCPv4Client.h similarity index 96% rename from APL/PhysicalLayerAsyncTCPv4Client.h rename to opendnp3/APL/PhysicalLayerAsyncTCPv4Client.h index db5d471d..44043bbf 100644 --- a/APL/PhysicalLayerAsyncTCPv4Client.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPv4Client.h @@ -19,9 +19,9 @@ #ifndef __PHYSICAL_LAYER_ASYNC_TCP_V4_CLIENT_H_ #define __PHYSICAL_LAYER_ASYNC_TCP_V4_CLIENT_H_ -#include +#include -#include "PhysicalLayerAsyncTCPClient.h" +#include namespace apl { diff --git a/APL/PhysicalLayerAsyncTCPv4Server.h b/opendnp3/APL/PhysicalLayerAsyncTCPv4Server.h similarity index 96% rename from APL/PhysicalLayerAsyncTCPv4Server.h rename to opendnp3/APL/PhysicalLayerAsyncTCPv4Server.h index b7449581..009ceeea 100644 --- a/APL/PhysicalLayerAsyncTCPv4Server.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPv4Server.h @@ -18,9 +18,9 @@ #ifndef __PHYSICAL_LAYER_ASYNC_TCP_V4_SERVER_H_ #define __PHYSICAL_LAYER_ASYNC_TCP_V4_SERVER_H_ -#include +#include -#include "PhysicalLayerAsyncTCPServer.h" +#include namespace apl { diff --git a/APL/PhysicalLayerAsyncTCPv6Client.h b/opendnp3/APL/PhysicalLayerAsyncTCPv6Client.h similarity index 96% rename from APL/PhysicalLayerAsyncTCPv6Client.h rename to opendnp3/APL/PhysicalLayerAsyncTCPv6Client.h index 093e14c1..44d42d49 100644 --- a/APL/PhysicalLayerAsyncTCPv6Client.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPv6Client.h @@ -19,9 +19,9 @@ #ifndef __PHYSICAL_LAYER_ASYNC_TCP_V6_CLIENT_H_ #define __PHYSICAL_LAYER_ASYNC_TCP_V6_CLIENT_H_ -#include +#include -#include "PhysicalLayerAsyncTCPClient.h" +#include namespace apl { diff --git a/APL/PhysicalLayerAsyncTCPv6Server.h b/opendnp3/APL/PhysicalLayerAsyncTCPv6Server.h similarity index 96% rename from APL/PhysicalLayerAsyncTCPv6Server.h rename to opendnp3/APL/PhysicalLayerAsyncTCPv6Server.h index 13bb1a78..47737197 100644 --- a/APL/PhysicalLayerAsyncTCPv6Server.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPv6Server.h @@ -18,9 +18,9 @@ #ifndef __PHYSICAL_LAYER_ASYNC_TCP_V6_SERVER_H_ #define __PHYSICAL_LAYER_ASYNC_TCP_V6_SERVER_H_ -#include +#include -#include "PhysicalLayerAsyncTCPServer.h" +#include namespace apl { diff --git a/APL/PhysicalLayerFactory.cpp b/opendnp3/APL/PhysicalLayerFactory.cpp similarity index 89% rename from APL/PhysicalLayerFactory.cpp rename to opendnp3/APL/PhysicalLayerFactory.cpp index dd613433..74f17f5c 100644 --- a/APL/PhysicalLayerFactory.cpp +++ b/opendnp3/APL/PhysicalLayerFactory.cpp @@ -17,15 +17,13 @@ // under the License. // -#include "PhysicalLayerFactory.h" - -#include "PhysicalLayerAsyncSerial.h" -#include "PhysicalLayerAsyncTCPv4Client.h" -#include "PhysicalLayerAsyncTCPv4Server.h" -#include "PhysicalLayerAsyncTCPv6Client.h" -#include "PhysicalLayerAsyncTCPv6Server.h" - -#include "Log.h" +#include +#include +#include +#include +#include +#include +#include #include #include diff --git a/APL/PhysicalLayerFactory.h b/opendnp3/APL/PhysicalLayerFactory.h similarity index 94% rename from APL/PhysicalLayerFactory.h rename to opendnp3/APL/PhysicalLayerFactory.h index 9d47f5ca..41e96619 100644 --- a/APL/PhysicalLayerFactory.h +++ b/opendnp3/APL/PhysicalLayerFactory.h @@ -19,13 +19,12 @@ #ifndef _PHYSICAL_LAYER_FACTORY_H_ #define _PHYSICAL_LAYER_FACTORY_H_ - -#include "SerialTypes.h" -#include "Exception.h" -#include "PhysicalLayerFunctors.h" -#include +#include +#include +#include #include +#include namespace apl { diff --git a/APL/PhysicalLayerFunctors.h b/opendnp3/APL/PhysicalLayerFunctors.h similarity index 100% rename from APL/PhysicalLayerFunctors.h rename to opendnp3/APL/PhysicalLayerFunctors.h diff --git a/APL/PhysicalLayerInstance.cpp b/opendnp3/APL/PhysicalLayerInstance.cpp similarity index 90% rename from APL/PhysicalLayerInstance.cpp rename to opendnp3/APL/PhysicalLayerInstance.cpp index dfe04299..571f40c3 100644 --- a/APL/PhysicalLayerInstance.cpp +++ b/opendnp3/APL/PhysicalLayerInstance.cpp @@ -16,14 +16,13 @@ // specific language governing permissions and limitations // under the License. // -#include "PhysicalLayerInstance.h" +#include +#include +#include #include #include -#include "PhysicalLayerFactory.h" -#include "IPhysicalLayerAsync.h" - namespace apl { @@ -47,7 +46,7 @@ void PhysLayerInstance::Release() if(mOwnsLayer) { delete mpLayer; mpLayer = NULL; - } + } } IPhysicalLayerAsync* PhysLayerInstance::GetLayer(Logger* apLogger, boost::asio::io_service* apService) diff --git a/APL/PhysicalLayerInstance.h b/opendnp3/APL/PhysicalLayerInstance.h similarity index 96% rename from APL/PhysicalLayerInstance.h rename to opendnp3/APL/PhysicalLayerInstance.h index 8a387cc0..ee8f0788 100644 --- a/APL/PhysicalLayerInstance.h +++ b/opendnp3/APL/PhysicalLayerInstance.h @@ -19,8 +19,7 @@ #ifndef __PHYSICAL_LAYER_INSTANCE_H_ #define __PHYSICAL_LAYER_INSTANCE_H_ - -#include "PhysicalLayerFunctors.h" +#include namespace apl { @@ -39,7 +38,7 @@ class PhysLayerInstance * Constructor whereby this class manages the lifecycle of the physical layer */ PhysLayerInstance(IPhysicalLayerAsyncFactory); - + /** * Constructor whereby the lifecycle of the physical layer is managed externally */ @@ -47,7 +46,7 @@ class PhysLayerInstance IPhysicalLayerAsync* GetLayer(Logger*, boost::asio::io_service*); - void Release(); + void Release(); private: diff --git a/APL/PhysicalLayerManager.cpp b/opendnp3/APL/PhysicalLayerManager.cpp similarity index 93% rename from APL/PhysicalLayerManager.cpp rename to opendnp3/APL/PhysicalLayerManager.cpp index de1dcb17..86b6d44e 100644 --- a/APL/PhysicalLayerManager.cpp +++ b/opendnp3/APL/PhysicalLayerManager.cpp @@ -16,13 +16,12 @@ // specific language governing permissions and limitations // under the License. // -#include "PhysicalLayerManager.h" - -#include "PhysicalLayerFactory.h" -#include "PhysLayerSettings.h" -#include "Logger.h" -#include "Log.h" -#include "Util.h" +#include +#include +#include +#include +#include +#include #include diff --git a/APL/PhysicalLayerManager.h b/opendnp3/APL/PhysicalLayerManager.h similarity index 95% rename from APL/PhysicalLayerManager.h rename to opendnp3/APL/PhysicalLayerManager.h index 8aa20e71..59eacb19 100644 --- a/APL/PhysicalLayerManager.h +++ b/opendnp3/APL/PhysicalLayerManager.h @@ -19,10 +19,8 @@ #ifndef __PhysicalLayerManager_H_ #define __PhysicalLayerManager_H_ - -#include "PhysicalLayerMap.h" -#include "SerialTypes.h" -//#include "PhysicalLayerInstance.h" +#include +#include namespace apl { diff --git a/APL/PhysicalLayerMap.cpp b/opendnp3/APL/PhysicalLayerMap.cpp similarity index 94% rename from APL/PhysicalLayerMap.cpp rename to opendnp3/APL/PhysicalLayerMap.cpp index b5544117..b5508e5c 100644 --- a/APL/PhysicalLayerMap.cpp +++ b/opendnp3/APL/PhysicalLayerMap.cpp @@ -16,11 +16,10 @@ // specific language governing permissions and limitations // under the License. // -#include "PhysicalLayerMap.h" - -#include "PhysLayerSettings.h" -#include "Logger.h" -#include "Exception.h" +#include +#include +#include +#include namespace apl { @@ -51,7 +50,7 @@ IPhysicalLayerAsync* PhysicalLayerMap::AcquireLayer(const std::string& arName) PhysLayerSettings s = this->_GetSettings(arName); PhysLayerInstance* pInstance = this->_GetInstance(arName); AcquiredMap::iterator i = mAcquiredMap.find(arName); - if(i != mAcquiredMap.end()) throw ArgumentException("Layer with name has already been acquired: " + arName); + if(i != mAcquiredMap.end()) throw ArgumentException("Layer with name has already been acquired: " + arName); else { mAcquiredMap[arName] = true; IPhysicalLayerAsync* pLayer = pInstance->GetLayer(this->MakeLogger(arName, s.LogLevel), mpService); diff --git a/APL/PhysicalLayerMap.h b/opendnp3/APL/PhysicalLayerMap.h similarity index 90% rename from APL/PhysicalLayerMap.h rename to opendnp3/APL/PhysicalLayerMap.h index df0b8fe3..484d42bd 100644 --- a/APL/PhysicalLayerMap.h +++ b/opendnp3/APL/PhysicalLayerMap.h @@ -19,11 +19,11 @@ #ifndef __PHYSICAL_LAYER_MAP_H_ #define __PHYSICAL_LAYER_MAP_H_ -#include "IPhysicalLayerSource.h" -#include "PhysicalLayerInstance.h" -#include "PhysLayerSettings.h" -#include "Lock.h" -#include "Loggable.h" +#include +#include +#include +#include +#include #include @@ -56,11 +56,11 @@ class PhysicalLayerMap : public IPhysicalLayerSource, private Loggable typedef std::map NameToSettingsMap; typedef std::map NameToInstanceMap; typedef std::map AcquiredMap; - + NameToSettingsMap mNameToSettingsMap; NameToInstanceMap mNameToInstanceMap; AcquiredMap mAcquiredMap; - + boost::asio::io_service* mpService; Logger* mpBaseLogger; }; diff --git a/APL/PhysicalLayerMonitor.cpp b/opendnp3/APL/PhysicalLayerMonitor.cpp old mode 100755 new mode 100644 similarity index 96% rename from APL/PhysicalLayerMonitor.cpp rename to opendnp3/APL/PhysicalLayerMonitor.cpp index e935eee3..6cfc8977 --- a/APL/PhysicalLayerMonitor.cpp +++ b/opendnp3/APL/PhysicalLayerMonitor.cpp @@ -16,15 +16,14 @@ // specific language governing permissions and limitations // under the License. // -#include "PhysicalLayerMonitor.h" - -#include "IPhysicalLayerAsync.h" -#include "PhysicalLayerMonitorStates.h" +#include +#include +#include +#include +#include #include #include -#include -#include "Logger.h" namespace apl { diff --git a/APL/PhysicalLayerMonitor.h b/opendnp3/APL/PhysicalLayerMonitor.h old mode 100755 new mode 100644 similarity index 95% rename from APL/PhysicalLayerMonitor.h rename to opendnp3/APL/PhysicalLayerMonitor.h index 9442697b..9f1c9d4e --- a/APL/PhysicalLayerMonitor.h +++ b/opendnp3/APL/PhysicalLayerMonitor.h @@ -19,12 +19,10 @@ #ifndef __PHYSICAL_LAYER_MONITOR_H_ #define __PHYSICAL_LAYER_MONITOR_H_ - -#include "IHandlerAsync.h" -#include "ITimerSource.h" -#include "IPhysicalLayerObserver.h" - -#include "Lock.h" +#include +#include +#include +#include #include diff --git a/APL/PhysicalLayerMonitorStates.cpp b/opendnp3/APL/PhysicalLayerMonitorStates.cpp old mode 100755 new mode 100644 similarity index 98% rename from APL/PhysicalLayerMonitorStates.cpp rename to opendnp3/APL/PhysicalLayerMonitorStates.cpp index 79106599..30bd7654 --- a/APL/PhysicalLayerMonitorStates.cpp +++ b/opendnp3/APL/PhysicalLayerMonitorStates.cpp @@ -17,11 +17,10 @@ // under the License. // -#include "PhysicalLayerMonitorStates.h" - -#include "Logger.h" -#include "Exception.h" -#include "IPhysicalLayerAsync.h" +#include +#include +#include +#include #include diff --git a/APL/PhysicalLayerMonitorStates.h b/opendnp3/APL/PhysicalLayerMonitorStates.h old mode 100755 new mode 100644 similarity index 98% rename from APL/PhysicalLayerMonitorStates.h rename to opendnp3/APL/PhysicalLayerMonitorStates.h index bd884d57..23a558c5 --- a/APL/PhysicalLayerMonitorStates.h +++ b/opendnp3/APL/PhysicalLayerMonitorStates.h @@ -20,9 +20,9 @@ #ifndef __PHYS_LAYER_MONITOR_STATES_H_ #define __PHYS_LAYER_MONITOR_STATES_H_ -#include "IPhysicalLayerObserver.h" -#include "Singleton.h" -#include "PhysicalLayerMonitor.h" +#include +#include +#include #define MACRO_MONITOR_SINGLETON(type, state, shuttingDown) \ MACRO_NAME_SINGLETON_INSTANCE(type) \ diff --git a/APL/PhysicalLayerStates.cpp b/opendnp3/APL/PhysicalLayerStates.cpp old mode 100755 new mode 100644 similarity index 96% rename from APL/PhysicalLayerStates.cpp rename to opendnp3/APL/PhysicalLayerStates.cpp index 4dae85ec..65974670 --- a/APL/PhysicalLayerStates.cpp +++ b/opendnp3/APL/PhysicalLayerStates.cpp @@ -17,12 +17,11 @@ // under the License. // -#include "PhysicalLayerStates.h" +#include namespace apl { - std::string ConvertPhysicalLayerStateToString(PhysicalLayerState aState) { switch(aState) { diff --git a/APL/PhysicalLayerStates.h b/opendnp3/APL/PhysicalLayerStates.h old mode 100755 new mode 100644 similarity index 99% rename from APL/PhysicalLayerStates.h rename to opendnp3/APL/PhysicalLayerStates.h index 5c3310e8..ff5b34cf --- a/APL/PhysicalLayerStates.h +++ b/opendnp3/APL/PhysicalLayerStates.h @@ -19,9 +19,8 @@ #ifndef __PHYSICAL_LAYER_STATES_H_ #define __PHYSICAL_LAYER_STATES_H_ -#include - #include +#include namespace apl { diff --git a/APL/PostingNotifier.cpp b/opendnp3/APL/PostingNotifier.cpp similarity index 96% rename from APL/PostingNotifier.cpp rename to opendnp3/APL/PostingNotifier.cpp index d6fdadac..9feaa902 100644 --- a/APL/PostingNotifier.cpp +++ b/opendnp3/APL/PostingNotifier.cpp @@ -16,7 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "PostingNotifier.h" +#include namespace apl { diff --git a/APL/PostingNotifier.h b/opendnp3/APL/PostingNotifier.h similarity index 93% rename from APL/PostingNotifier.h rename to opendnp3/APL/PostingNotifier.h index 53c3ab09..8fc29db4 100644 --- a/APL/PostingNotifier.h +++ b/opendnp3/APL/PostingNotifier.h @@ -19,8 +19,8 @@ #ifndef __POSTING_NOTIFIER_H_ #define __POSTING_NOTIFIER_H_ -#include "INotifier.h" -#include "ITimerSource.h" +#include +#include namespace apl { diff --git a/APL/PostingNotifierSource.cpp b/opendnp3/APL/PostingNotifierSource.cpp similarity index 92% rename from APL/PostingNotifierSource.cpp rename to opendnp3/APL/PostingNotifierSource.cpp index fb392cfe..0cf763c7 100644 --- a/APL/PostingNotifierSource.cpp +++ b/opendnp3/APL/PostingNotifierSource.cpp @@ -16,9 +16,9 @@ // specific language governing permissions and limitations // under the License. // -#include "PostingNotifierSource.h" +#include +#include -#include "PostingNotifier.h" #include namespace apl diff --git a/APL/PostingNotifierSource.h b/opendnp3/APL/PostingNotifierSource.h similarity index 96% rename from APL/PostingNotifierSource.h rename to opendnp3/APL/PostingNotifierSource.h index 78d4b67a..40417f98 100644 --- a/APL/PostingNotifierSource.h +++ b/opendnp3/APL/PostingNotifierSource.h @@ -19,10 +19,10 @@ #ifndef __POSTING_NOTIFIER_SOURCE_H_ #define __POSTING_NOTIFIER_SOURCE_H_ -#include "ITimerSource.h" +#include -#include #include +#include namespace apl { diff --git a/APL/ProtocolUtil.cpp b/opendnp3/APL/ProtocolUtil.cpp similarity index 97% rename from APL/ProtocolUtil.cpp rename to opendnp3/APL/ProtocolUtil.cpp index 2f4d5b24..be680894 100644 --- a/APL/ProtocolUtil.cpp +++ b/opendnp3/APL/ProtocolUtil.cpp @@ -16,7 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "ProtocolUtil.h" +#include namespace apl { diff --git a/APL/ProtocolUtil.h b/opendnp3/APL/ProtocolUtil.h similarity index 99% rename from APL/ProtocolUtil.h rename to opendnp3/APL/ProtocolUtil.h index eb405bb5..32de96d1 100644 --- a/APL/ProtocolUtil.h +++ b/opendnp3/APL/ProtocolUtil.h @@ -21,7 +21,6 @@ #include - namespace apl { diff --git a/APL/QualityConverter.cpp b/opendnp3/APL/QualityConverter.cpp similarity index 98% rename from APL/QualityConverter.cpp rename to opendnp3/APL/QualityConverter.cpp index 13405186..553a5cf1 100644 --- a/APL/QualityConverter.cpp +++ b/opendnp3/APL/QualityConverter.cpp @@ -16,7 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "QualityConverter.h" +#include namespace apl { diff --git a/APL/QualityConverter.h b/opendnp3/APL/QualityConverter.h similarity index 97% rename from APL/QualityConverter.h rename to opendnp3/APL/QualityConverter.h index 571291e4..8c419ab3 100644 --- a/APL/QualityConverter.h +++ b/opendnp3/APL/QualityConverter.h @@ -20,11 +20,11 @@ #ifndef __QUALITY_CONVERTER_H_ #define __QUALITY_CONVERTER_H_ -#include "QualityMasks.h" -#include "Types.h" +#include +#include -#include #include +#include namespace apl { diff --git a/APL/QualityMasks.h b/opendnp3/APL/QualityMasks.h similarity index 100% rename from APL/QualityMasks.h rename to opendnp3/APL/QualityMasks.h diff --git a/APL/QueueingFDO.h b/opendnp3/APL/QueueingFDO.h similarity index 94% rename from APL/QueueingFDO.h rename to opendnp3/APL/QueueingFDO.h index 8a638e8c..e7b5dc56 100644 --- a/APL/QueueingFDO.h +++ b/opendnp3/APL/QueueingFDO.h @@ -19,18 +19,17 @@ #ifndef __QUEUEING_FDO_H_ #define __QUEUEING_FDO_H_ - -#include "DataInterfaces.h" -#include "Lock.h" -#include "SubjectBase.h" -#include "Util.h" -#include +#include +#include +#include +#include +#include #include #include #include -#include #include +#include namespace apl { diff --git a/APL/Random.h b/opendnp3/APL/Random.h old mode 100755 new mode 100644 similarity index 100% rename from APL/Random.h rename to opendnp3/APL/Random.h diff --git a/APL/RandomDouble.h b/opendnp3/APL/RandomDouble.h old mode 100755 new mode 100644 similarity index 97% rename from APL/RandomDouble.h rename to opendnp3/APL/RandomDouble.h index 2a7d7de8..77d3b34b --- a/APL/RandomDouble.h +++ b/opendnp3/APL/RandomDouble.h @@ -50,7 +50,7 @@ class RandomDouble private: boost::mt19937 rng; - boost::uniform_real dist; + boost::uniform_real dist; boost::variate_generator > nextRand; }; diff --git a/APL/RandomizedBuffer.cpp b/opendnp3/APL/RandomizedBuffer.cpp old mode 100755 new mode 100644 similarity index 96% rename from APL/RandomizedBuffer.cpp rename to opendnp3/APL/RandomizedBuffer.cpp index 1841acb9..e0e75d18 --- a/APL/RandomizedBuffer.cpp +++ b/opendnp3/APL/RandomizedBuffer.cpp @@ -17,7 +17,7 @@ // under the License. // -#include "RandomizedBuffer.h" +#include namespace apl { diff --git a/APL/RandomizedBuffer.h b/opendnp3/APL/RandomizedBuffer.h old mode 100755 new mode 100644 similarity index 93% rename from APL/RandomizedBuffer.h rename to opendnp3/APL/RandomizedBuffer.h index bb72aed3..30b98f67 --- a/APL/RandomizedBuffer.h +++ b/opendnp3/APL/RandomizedBuffer.h @@ -19,8 +19,8 @@ #ifndef __RANDOMIZED_BUFFER_H_ #define __RANDOMIZED_BUFFER_H_ -#include "CopyableBuffer.h" -#include "Random.h" +#include +#include namespace apl { diff --git a/APL/SerialTypes.h b/opendnp3/APL/SerialTypes.h similarity index 100% rename from APL/SerialTypes.h rename to opendnp3/APL/SerialTypes.h diff --git a/APL/ShiftableBuffer.cpp b/opendnp3/APL/ShiftableBuffer.cpp similarity index 97% rename from APL/ShiftableBuffer.cpp rename to opendnp3/APL/ShiftableBuffer.cpp index ae0fc102..8be8d58d 100644 --- a/APL/ShiftableBuffer.cpp +++ b/opendnp3/APL/ShiftableBuffer.cpp @@ -16,9 +16,8 @@ // specific language governing permissions and limitations // under the License. // -#include "ShiftableBuffer.h" - -#include "Exception.h" +#include +#include #include diff --git a/APL/ShiftableBuffer.h b/opendnp3/APL/ShiftableBuffer.h similarity index 99% rename from APL/ShiftableBuffer.h rename to opendnp3/APL/ShiftableBuffer.h index cad4d304..0fd70245 100644 --- a/APL/ShiftableBuffer.h +++ b/opendnp3/APL/ShiftableBuffer.h @@ -19,8 +19,8 @@ #ifndef __SHIFTABLE_BUFFER_H_ #define __SHIFTABLE_BUFFER_H_ +#include -#include "Types.h" #include namespace apl diff --git a/APL/Singleton.h b/opendnp3/APL/Singleton.h similarity index 100% rename from APL/Singleton.h rename to opendnp3/APL/Singleton.h diff --git a/APL/SubjectBase.h b/opendnp3/APL/SubjectBase.h similarity index 93% rename from APL/SubjectBase.h rename to opendnp3/APL/SubjectBase.h index 38085e9e..abce4dd2 100644 --- a/APL/SubjectBase.h +++ b/opendnp3/APL/SubjectBase.h @@ -19,10 +19,10 @@ #ifndef __SUBJECT_BASE_H_ #define __SUBJECT_BASE_H_ +#include +#include +#include -#include "ISubject.h" -#include "INotifier.h" -#include "LockBase.h" #include namespace apl diff --git a/APL/SuspendTimerSource.cpp b/opendnp3/APL/SuspendTimerSource.cpp old mode 100755 new mode 100644 similarity index 94% rename from APL/SuspendTimerSource.cpp rename to opendnp3/APL/SuspendTimerSource.cpp index c177f93f..711a7ae1 --- a/APL/SuspendTimerSource.cpp +++ b/opendnp3/APL/SuspendTimerSource.cpp @@ -17,9 +17,8 @@ // under the License. // -#include "SuspendTimerSource.h" - -#include "ITimerSource.h" +#include +#include #include diff --git a/APL/SuspendTimerSource.h b/opendnp3/APL/SuspendTimerSource.h old mode 100755 new mode 100644 similarity index 95% rename from APL/SuspendTimerSource.h rename to opendnp3/APL/SuspendTimerSource.h index 7f3b0e6f..38fd88d0 --- a/APL/SuspendTimerSource.h +++ b/opendnp3/APL/SuspendTimerSource.h @@ -20,8 +20,8 @@ #ifndef __SUSPEND_TIMER_SOURCE_H_ #define __SUSPEND_TIMER_SOURCE_H_ -#include "Lock.h" -#include "ITransactable.h" +#include +#include namespace apl { diff --git a/APL/SyncVar.h b/opendnp3/APL/SyncVar.h similarity index 96% rename from APL/SyncVar.h rename to opendnp3/APL/SyncVar.h index 5e8c435c..0408d1d0 100644 --- a/APL/SyncVar.h +++ b/opendnp3/APL/SyncVar.h @@ -19,10 +19,9 @@ #ifndef __SYNC_VAR_H_ #define __SYNC_VAR_H_ - -#include "SubjectBase.h" -#include "Timeout.h" -#include "Lock.h" +#include +#include +#include namespace apl { diff --git a/APL/Thread.h b/opendnp3/APL/Thread.h similarity index 89% rename from APL/Thread.h rename to opendnp3/APL/Thread.h index aa2397cf..6c6518fe 100644 --- a/APL/Thread.h +++ b/opendnp3/APL/Thread.h @@ -19,11 +19,9 @@ #ifndef __THREAD_H_ #define __THREAD_H_ - -#include "Threadable.h" -#include "ThreadBase.h" - -#include "ThreadBoost.h" +#include +#include +#include namespace apl { diff --git a/APL/ThreadBase.cpp b/opendnp3/APL/ThreadBase.cpp similarity index 96% rename from APL/ThreadBase.cpp rename to opendnp3/APL/ThreadBase.cpp index 8d15bf6a..fe9abffb 100644 --- a/APL/ThreadBase.cpp +++ b/opendnp3/APL/ThreadBase.cpp @@ -16,8 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "ThreadBase.h" - +#include namespace apl { diff --git a/APL/ThreadBase.h b/opendnp3/APL/ThreadBase.h similarity index 97% rename from APL/ThreadBase.h rename to opendnp3/APL/ThreadBase.h index 61bb9f06..4bba0161 100644 --- a/APL/ThreadBase.h +++ b/opendnp3/APL/ThreadBase.h @@ -19,8 +19,7 @@ #ifndef __THREAD_BASE_H_ #define __THREAD_BASE_H_ - -#include "Threadable.h" +#include namespace apl { diff --git a/APL/ThreadBoost.cpp b/opendnp3/APL/ThreadBoost.cpp similarity index 95% rename from APL/ThreadBoost.cpp rename to opendnp3/APL/ThreadBoost.cpp index 8ddd10eb..6131299d 100644 --- a/APL/ThreadBoost.cpp +++ b/opendnp3/APL/ThreadBoost.cpp @@ -16,8 +16,8 @@ // specific language governing permissions and limitations // under the License. // -#include "ThreadBoost.h" -#include "TimingTools.h" +#include +#include namespace apl { diff --git a/APL/ThreadBoost.h b/opendnp3/APL/ThreadBoost.h similarity index 94% rename from APL/ThreadBoost.h rename to opendnp3/APL/ThreadBoost.h index 9b319284..30c0b4ed 100644 --- a/APL/ThreadBoost.h +++ b/opendnp3/APL/ThreadBoost.h @@ -19,8 +19,9 @@ #ifndef __THREAD_BOOST_H_ #define __THREAD_BOOST_H_ -#include "ThreadBase.h" -#include "Types.h" +#include +#include + #include #include diff --git a/APL/Threadable.cpp b/opendnp3/APL/Threadable.cpp similarity index 97% rename from APL/Threadable.cpp rename to opendnp3/APL/Threadable.cpp index 6db36c56..b607c212 100644 --- a/APL/Threadable.cpp +++ b/opendnp3/APL/Threadable.cpp @@ -16,7 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "Threadable.h" +#include #include diff --git a/APL/Threadable.h b/opendnp3/APL/Threadable.h similarity index 100% rename from APL/Threadable.h rename to opendnp3/APL/Threadable.h diff --git a/APL/TimeBase.cpp b/opendnp3/APL/TimeBase.cpp similarity index 98% rename from APL/TimeBase.cpp rename to opendnp3/APL/TimeBase.cpp index ac539c5f..79e4e316 100644 --- a/APL/TimeBase.cpp +++ b/opendnp3/APL/TimeBase.cpp @@ -16,8 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "TimeBase.h" - +#include namespace apl { diff --git a/APL/TimeBase.h b/opendnp3/APL/TimeBase.h similarity index 98% rename from APL/TimeBase.h rename to opendnp3/APL/TimeBase.h index ccdc0fd6..eb40b4c4 100644 --- a/APL/TimeBase.h +++ b/opendnp3/APL/TimeBase.h @@ -19,11 +19,10 @@ #ifndef __TIME_BASE_H_ #define __TIME_BASE_H_ +#include -#include #include - -#include "Types.h" +#include namespace apl { diff --git a/APL/TimeBoost.cpp b/opendnp3/APL/TimeBoost.cpp similarity index 97% rename from APL/TimeBoost.cpp rename to opendnp3/APL/TimeBoost.cpp index 90d17823..2e3c043b 100644 --- a/APL/TimeBoost.cpp +++ b/opendnp3/APL/TimeBoost.cpp @@ -17,9 +17,8 @@ // under the License. // - -#include "TimeBoost.h" -#include "Util.h" +#include +#include #include diff --git a/APL/TimeBoost.h b/opendnp3/APL/TimeBoost.h similarity index 97% rename from APL/TimeBoost.h rename to opendnp3/APL/TimeBoost.h index 3b1e83ec..dbbc4007 100644 --- a/APL/TimeBoost.h +++ b/opendnp3/APL/TimeBoost.h @@ -16,15 +16,14 @@ // specific language governing permissions and limitations // under the License. // - #ifndef _TIME_BOOST_H_ #define _TIME_BOOST_H_ -#include "Configure.h" -#include "Types.h" +#include +#include -#include #include +#include //undef some of the evil macros brought in by windows #undef GetMessage @@ -35,7 +34,6 @@ using namespace boost::posix_time; namespace apl { - class TimeBoost { public: diff --git a/APL/TimeSource.cpp b/opendnp3/APL/TimeSource.cpp similarity index 96% rename from APL/TimeSource.cpp rename to opendnp3/APL/TimeSource.cpp index 5a0ff452..169067e4 100644 --- a/APL/TimeSource.cpp +++ b/opendnp3/APL/TimeSource.cpp @@ -16,9 +16,8 @@ // specific language governing permissions and limitations // under the License. // -#include "TimeSource.h" - -#include "TimingTools.h" +#include +#include using namespace boost::posix_time; diff --git a/APL/TimeSource.h b/opendnp3/APL/TimeSource.h similarity index 94% rename from APL/TimeSource.h rename to opendnp3/APL/TimeSource.h index b1a9e607..4156a765 100644 --- a/APL/TimeSource.h +++ b/opendnp3/APL/TimeSource.h @@ -19,9 +19,9 @@ #ifndef __TIME_SOURCE_H_ #define __TIME_SOURCE_H_ -#include "ITimeSource.h" -#include "Singleton.h" -#include "Types.h" +#include +#include +#include #include diff --git a/APL/TimeTypes.h b/opendnp3/APL/TimeTypes.h similarity index 96% rename from APL/TimeTypes.h rename to opendnp3/APL/TimeTypes.h index f6734718..bc4adba3 100644 --- a/APL/TimeTypes.h +++ b/opendnp3/APL/TimeTypes.h @@ -19,7 +19,7 @@ #ifndef __TIME_TYPES_H_ #define __TIME_TYPES_H_ -#include "TimeBoost.h" +#include namespace apl { diff --git a/APL/Timeout.cpp b/opendnp3/APL/Timeout.cpp similarity index 98% rename from APL/Timeout.cpp rename to opendnp3/APL/Timeout.cpp index 05c767fc..fcfb5e96 100644 --- a/APL/Timeout.cpp +++ b/opendnp3/APL/Timeout.cpp @@ -16,7 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "Timeout.h" +#include namespace apl { diff --git a/APL/Timeout.h b/opendnp3/APL/Timeout.h similarity index 96% rename from APL/Timeout.h rename to opendnp3/APL/Timeout.h index 5b34f72d..03d43ca1 100644 --- a/APL/Timeout.h +++ b/opendnp3/APL/Timeout.h @@ -19,8 +19,8 @@ #ifndef __TIMEOUT_H_ #define __TIMEOUT_H_ -#include "TimeTypes.h" -#include "Types.h" +#include +#include namespace apl { diff --git a/APL/TimerASIO.cpp b/opendnp3/APL/TimerASIO.cpp similarity index 97% rename from APL/TimerASIO.cpp rename to opendnp3/APL/TimerASIO.cpp index fc9c2914..62f147bd 100644 --- a/APL/TimerASIO.cpp +++ b/opendnp3/APL/TimerASIO.cpp @@ -16,7 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "TimerASIO.h" +#include namespace apl { diff --git a/APL/TimerASIO.h b/opendnp3/APL/TimerASIO.h similarity index 97% rename from APL/TimerASIO.h rename to opendnp3/APL/TimerASIO.h index fcbdda6e..7a9f7713 100644 --- a/APL/TimerASIO.h +++ b/opendnp3/APL/TimerASIO.h @@ -19,9 +19,9 @@ #ifndef __TIMER_ASIO_H_ #define __TIMER_ASIO_H_ +#include #include -#include "ITimerSource.h" namespace apl { diff --git a/APL/TimerSourceASIO.cpp b/opendnp3/APL/TimerSourceASIO.cpp similarity index 96% rename from APL/TimerSourceASIO.cpp rename to opendnp3/APL/TimerSourceASIO.cpp index 2957d7ff..d5f94b42 100644 --- a/APL/TimerSourceASIO.cpp +++ b/opendnp3/APL/TimerSourceASIO.cpp @@ -17,14 +17,13 @@ // under the License. // -#include "TimerSourceASIO.h" - -#include "TimerASIO.h" -#include "AsyncResult.h" +#include +#include +#include #include -#include #include +#include namespace apl { diff --git a/APL/TimerSourceASIO.h b/opendnp3/APL/TimerSourceASIO.h similarity index 94% rename from APL/TimerSourceASIO.h rename to opendnp3/APL/TimerSourceASIO.h index d89b5cf6..4b3c21ec 100644 --- a/APL/TimerSourceASIO.h +++ b/opendnp3/APL/TimerSourceASIO.h @@ -19,9 +19,9 @@ #ifndef __TIMER_SOURCE_ASIO_H_ #define __TIMER_SOURCE_ASIO_H_ -#include "ITimerSource.h" -#include "Lock.h" -#include "Exception.h" +#include +#include +#include #include diff --git a/APL/TimingTools.cpp b/opendnp3/APL/TimingTools.cpp similarity index 98% rename from APL/TimingTools.cpp rename to opendnp3/APL/TimingTools.cpp index fbbe18db..e0cd1de4 100644 --- a/APL/TimingTools.cpp +++ b/opendnp3/APL/TimingTools.cpp @@ -17,12 +17,11 @@ // under the License. // - #ifdef max #undef max #endif -#include "TimingTools.h" +#include namespace apl { diff --git a/APL/TimingTools.h b/opendnp3/APL/TimingTools.h similarity index 94% rename from APL/TimingTools.h rename to opendnp3/APL/TimingTools.h index cab5011d..23390331 100644 --- a/APL/TimingTools.h +++ b/opendnp3/APL/TimingTools.h @@ -16,14 +16,12 @@ // specific language governing permissions and limitations // under the License. // - - #ifndef _TIMINGTOOLS_H__ #define _TIMINGTOOLS_H__ -#include "TimeTypes.h" -#include "Types.h" -#include "Timeout.h" +#include +#include +#include namespace apl { diff --git a/APL/ToHex.cpp b/opendnp3/APL/ToHex.cpp similarity index 97% rename from APL/ToHex.cpp rename to opendnp3/APL/ToHex.cpp index 84a903dc..b45f16f0 100644 --- a/APL/ToHex.cpp +++ b/opendnp3/APL/ToHex.cpp @@ -16,9 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "ToHex.h" - - +#include namespace apl { diff --git a/APL/ToHex.h b/opendnp3/APL/ToHex.h similarity index 97% rename from APL/ToHex.h rename to opendnp3/APL/ToHex.h index c1a7f7a4..9cd13673 100644 --- a/APL/ToHex.h +++ b/opendnp3/APL/ToHex.h @@ -19,9 +19,10 @@ #ifndef __TO_HEX_H_ #define __TO_HEX_H_ -#include "Types.h" -#include +#include + #include +#include namespace apl { diff --git a/APL/TrackingTaskGroup.cpp b/opendnp3/APL/TrackingTaskGroup.cpp old mode 100755 new mode 100644 similarity index 92% rename from APL/TrackingTaskGroup.cpp rename to opendnp3/APL/TrackingTaskGroup.cpp index d5fac68e..4cd04465 --- a/APL/TrackingTaskGroup.cpp +++ b/opendnp3/APL/TrackingTaskGroup.cpp @@ -16,10 +16,9 @@ // specific language governing permissions and limitations // under the License. // -#include "TrackingTaskGroup.h" - -#include "AsyncTaskGroup.h" -#include "AsyncTaskContinuous.h" +#include +#include +#include namespace apl { diff --git a/APL/TrackingTaskGroup.h b/opendnp3/APL/TrackingTaskGroup.h old mode 100755 new mode 100644 similarity index 93% rename from APL/TrackingTaskGroup.h rename to opendnp3/APL/TrackingTaskGroup.h index cde62c4b..6516f6a8 --- a/APL/TrackingTaskGroup.h +++ b/opendnp3/APL/TrackingTaskGroup.h @@ -19,14 +19,13 @@ #ifndef __TRACKING_TASK_GROUP_H_ #define __TRACKING_TASK_GROUP_H_ +#include +#include +#include -#include "Types.h" -#include "AsyncTaskInterfaces.h" -#include "Uncopyable.h" - -#include -#include #include +#include +#include namespace apl { diff --git a/APL/Types.h b/opendnp3/APL/Types.h similarity index 100% rename from APL/Types.h rename to opendnp3/APL/Types.h diff --git a/APL/Uncopyable.h b/opendnp3/APL/Uncopyable.h similarity index 100% rename from APL/Uncopyable.h rename to opendnp3/APL/Uncopyable.h diff --git a/APL/Util.cpp b/opendnp3/APL/Util.cpp similarity index 97% rename from APL/Util.cpp rename to opendnp3/APL/Util.cpp index 92e2742e..0fb37415 100644 --- a/APL/Util.cpp +++ b/opendnp3/APL/Util.cpp @@ -16,31 +16,29 @@ // specific language governing permissions and limitations // under the License. // -#include -#include -#include -#include #include #include -#include -#include #include +#include +#include +#include +#include +#include +#include +#include +#include -#include "Util.h" +#include +#include +#include #ifdef WIN32 #define sscanf sscanf_s #endif -#include "TimingTools.h" -#include "Exception.h" - using namespace std; using namespace boost::posix_time; -#include -#include - #ifdef APL_PLATFORM_WIN #define CLEAR_CMD "cls" #else diff --git a/APL/Util.h b/opendnp3/APL/Util.h similarity index 95% rename from APL/Util.h rename to opendnp3/APL/Util.h index e19b812e..f914bd9b 100644 --- a/APL/Util.h +++ b/opendnp3/APL/Util.h @@ -19,14 +19,14 @@ #ifndef _UTIL_H_ #define _UTIL_H_ -#include -#include +#include +#include + #include -#include #include - -#include "Types.h" -#include "Configure.h" +#include +#include +#include namespace boost { diff --git a/APL/rake.project.rb b/opendnp3/APL/rake.project.rb similarity index 100% rename from APL/rake.project.rb rename to opendnp3/APL/rake.project.rb diff --git a/DNP3/APDU.cpp b/opendnp3/DNP3/APDU.cpp similarity index 98% rename from DNP3/APDU.cpp rename to opendnp3/DNP3/APDU.cpp index 6e9c221b..2abed283 100644 --- a/DNP3/APDU.cpp +++ b/opendnp3/DNP3/APDU.cpp @@ -16,22 +16,17 @@ // specific language governing permissions and limitations // under the License. // -#include "APDU.h" - -#include -#include - - -#include "DNPConstants.h" -#include "ObjectWriteIterator.h" -#include "APDUConstants.h" +#include +#include +#include +#include +#include +#include #include -#include -#include #include - - +#include +#include using namespace std; @@ -637,8 +632,8 @@ std::string APDU::ToString() const for ( ; !itr.IsEnd(); ++itr) { oss << " Header: (Grp: " << itr->GetGroup(); oss << ", Var: " << itr->GetVariation(); - oss << ", Qual: " << itr->GetQualifier() << ", "; - oss << itr->GetHeader()->ToString(*itr); + oss << ", Qual: " << itr->GetQualifier() << ", "; + oss << itr->GetHeader()->ToString(*itr); oss << ")"; } } diff --git a/DNP3/APDU.h b/opendnp3/DNP3/APDU.h similarity index 96% rename from DNP3/APDU.h rename to opendnp3/DNP3/APDU.h index 95281944..97ec6a37 100644 --- a/DNP3/APDU.h +++ b/opendnp3/DNP3/APDU.h @@ -19,17 +19,17 @@ #ifndef __APDU_H_ #define __APDU_H_ -#include -#include -#include - -#include "AppHeader.h" -#include "ObjectHeader.h" -#include "Objects.h" -#include "APDUConstants.h" -#include "HeaderReadIterator.h" -#include "ObjectWriteIterator.h" -#include "IndexedWriteIterator.h" +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include #include #include diff --git a/DNP3/APDUConstants.cpp b/opendnp3/DNP3/APDUConstants.cpp similarity index 98% rename from DNP3/APDUConstants.cpp rename to opendnp3/DNP3/APDUConstants.cpp index 1013bd7f..6fa06f9a 100644 --- a/DNP3/APDUConstants.cpp +++ b/opendnp3/DNP3/APDUConstants.cpp @@ -16,7 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "APDUConstants.h" +#include namespace apl diff --git a/DNP3/APDUConstants.h b/opendnp3/DNP3/APDUConstants.h similarity index 100% rename from DNP3/APDUConstants.h rename to opendnp3/DNP3/APDUConstants.h diff --git a/DNP3/AlwaysOpeningVtoRouter.cpp b/opendnp3/DNP3/AlwaysOpeningVtoRouter.cpp similarity index 95% rename from DNP3/AlwaysOpeningVtoRouter.cpp rename to opendnp3/DNP3/AlwaysOpeningVtoRouter.cpp index 4fd4c234..59df2c3f 100644 --- a/DNP3/AlwaysOpeningVtoRouter.cpp +++ b/opendnp3/DNP3/AlwaysOpeningVtoRouter.cpp @@ -15,7 +15,7 @@ * under the License. */ -#include "AlwaysOpeningVtoRouter.h" +#include namespace apl { diff --git a/DNP3/AlwaysOpeningVtoRouter.h b/opendnp3/DNP3/AlwaysOpeningVtoRouter.h similarity index 97% rename from DNP3/AlwaysOpeningVtoRouter.h rename to opendnp3/DNP3/AlwaysOpeningVtoRouter.h index ef050f42..092ec6b6 100644 --- a/DNP3/AlwaysOpeningVtoRouter.h +++ b/opendnp3/DNP3/AlwaysOpeningVtoRouter.h @@ -18,7 +18,7 @@ #ifndef __ALWAYS_OPENING_VTO_ROUTER_H_ #define __ALWAYS_OPENING_VTO_ROUTER_H_ -#include "VtoRouter.h" +#include namespace apl { diff --git a/DNP3/AppChannelStates.cpp b/opendnp3/DNP3/AppChannelStates.cpp similarity index 96% rename from DNP3/AppChannelStates.cpp rename to opendnp3/DNP3/AppChannelStates.cpp index 8a05153f..623aea23 100644 --- a/DNP3/AppChannelStates.cpp +++ b/opendnp3/DNP3/AppChannelStates.cpp @@ -16,17 +16,16 @@ // specific language governing permissions and limitations // under the License. // -#include "AppChannelStates.h" +#include +#include +#include +#include +#include +#include -#include -#include -#include #include #include -#include "AppLayerChannel.h" -#include "APDU.h" - namespace apl { namespace dnp diff --git a/DNP3/AppChannelStates.h b/opendnp3/DNP3/AppChannelStates.h similarity index 96% rename from DNP3/AppChannelStates.h rename to opendnp3/DNP3/AppChannelStates.h index 7a61d9c2..cec3c626 100644 --- a/DNP3/AppChannelStates.h +++ b/opendnp3/DNP3/AppChannelStates.h @@ -19,11 +19,11 @@ #ifndef __APP_CHANNEL_STATES_H_ #define __APP_CHANNEL_STATES_H_ -#include -#include +#include +#include +#include -#include "APDUConstants.h" -#include "AppLayerChannel.h" +#include namespace apl { diff --git a/DNP3/AppConfig.h b/opendnp3/DNP3/AppConfig.h similarity index 95% rename from DNP3/AppConfig.h rename to opendnp3/DNP3/AppConfig.h index ffb9a80a..5c2a097d 100644 --- a/DNP3/AppConfig.h +++ b/opendnp3/DNP3/AppConfig.h @@ -19,8 +19,8 @@ #ifndef __APP_CONFIG_H_ #define __APP_CONFIG_H_ - -#include "DNPConstants.h" +#include +#include namespace apl { diff --git a/DNP3/AppHeader.cpp b/opendnp3/DNP3/AppHeader.cpp similarity index 98% rename from DNP3/AppHeader.cpp rename to opendnp3/DNP3/AppHeader.cpp index 4fc81c11..7764f942 100644 --- a/DNP3/AppHeader.cpp +++ b/opendnp3/DNP3/AppHeader.cpp @@ -16,14 +16,12 @@ // specific language governing permissions and limitations // under the License. // -#include "AppHeader.h" - +#include +#include #include #include -#include - using namespace std; #define MACRO_FUNC_CASE(func) case(func): return func; diff --git a/DNP3/AppHeader.h b/opendnp3/DNP3/AppHeader.h similarity index 98% rename from DNP3/AppHeader.h rename to opendnp3/DNP3/AppHeader.h index dafbf23e..6baa2560 100644 --- a/DNP3/AppHeader.h +++ b/opendnp3/DNP3/AppHeader.h @@ -20,11 +20,11 @@ #define __APP_HEADER_H_ -#include -#include -#include +#include +#include +#include -#include "APDUConstants.h" +#include namespace apl { diff --git a/DNP3/AppInterfaces.cpp b/opendnp3/DNP3/AppInterfaces.cpp similarity index 92% rename from DNP3/AppInterfaces.cpp rename to opendnp3/DNP3/AppInterfaces.cpp index 77c8201a..0b434186 100644 --- a/DNP3/AppInterfaces.cpp +++ b/opendnp3/DNP3/AppInterfaces.cpp @@ -16,10 +16,9 @@ // specific language governing permissions and limitations // under the License. // -#include "AppInterfaces.h" - -#include -#include +#include +#include +#include namespace apl { @@ -46,7 +45,6 @@ void IAppUser::OnRequest(const APDU&, SequenceInfo) throw Exception(LOCATION, "Unhandled frame"); } - void IAppUser::OnUnknownObject() { throw Exception(LOCATION, "Unhandled frame"); diff --git a/DNP3/AppInterfaces.h b/opendnp3/DNP3/AppInterfaces.h similarity index 99% rename from DNP3/AppInterfaces.h rename to opendnp3/DNP3/AppInterfaces.h index c542475e..b86d856e 100644 --- a/DNP3/AppInterfaces.h +++ b/opendnp3/DNP3/AppInterfaces.h @@ -19,7 +19,6 @@ #ifndef __APP_INTERFACES_H_ #define __APP_INTERFACES_H_ - #include namespace apl diff --git a/DNP3/AppLayer.cpp b/opendnp3/DNP3/AppLayer.cpp similarity index 98% rename from DNP3/AppLayer.cpp rename to opendnp3/DNP3/AppLayer.cpp index c4477af2..87c0675a 100644 --- a/DNP3/AppLayer.cpp +++ b/opendnp3/DNP3/AppLayer.cpp @@ -17,11 +17,9 @@ // under the License. // -#include "./AppLayer.h" - - -#include -#include +#include +#include +#include using namespace std; diff --git a/DNP3/AppLayer.h b/opendnp3/DNP3/AppLayer.h similarity index 92% rename from DNP3/AppLayer.h rename to opendnp3/DNP3/AppLayer.h index 534c3134..d53f8e0b 100644 --- a/DNP3/AppLayer.h +++ b/opendnp3/DNP3/AppLayer.h @@ -19,14 +19,14 @@ #ifndef __APP_LAYER_H_ #define __APP_LAYER_H_ -#include -#include +#include +#include +#include +#include +#include +#include -#include "APDU.h" -#include "AppInterfaces.h" -#include "AppConfig.h" -#include "SolicitedChannel.h" -#include "UnsolicitedChannel.h" +#include namespace apl { diff --git a/DNP3/AppLayerChannel.cpp b/opendnp3/DNP3/AppLayerChannel.cpp similarity index 93% rename from DNP3/AppLayerChannel.cpp rename to opendnp3/DNP3/AppLayerChannel.cpp index 46da3f2d..cbe41fed 100644 --- a/DNP3/AppLayerChannel.cpp +++ b/opendnp3/DNP3/AppLayerChannel.cpp @@ -16,13 +16,11 @@ // specific language governing permissions and limitations // under the License. // -#include "AppLayerChannel.h" - -#include -#include - -#include "AppLayer.h" -#include "AppChannelStates.h" +#include +#include +#include +#include +#include #include diff --git a/DNP3/AppLayerChannel.h b/opendnp3/DNP3/AppLayerChannel.h similarity index 97% rename from DNP3/AppLayerChannel.h rename to opendnp3/DNP3/AppLayerChannel.h index 029e1d63..94483126 100644 --- a/DNP3/AppLayerChannel.h +++ b/opendnp3/DNP3/AppLayerChannel.h @@ -19,8 +19,8 @@ #ifndef __APP_LAYER_CHANNEL_H_ #define __APP_LAYER_CHANNEL_H_ -#include -#include +#include +#include namespace apl { diff --git a/DNP3/AsyncStackManager.cpp b/opendnp3/DNP3/AsyncStackManager.cpp similarity index 95% rename from DNP3/AsyncStackManager.cpp rename to opendnp3/DNP3/AsyncStackManager.cpp index d6bf61c3..5076e96c 100644 --- a/DNP3/AsyncStackManager.cpp +++ b/opendnp3/DNP3/AsyncStackManager.cpp @@ -17,30 +17,26 @@ // under the License. // -#include "AsyncStackManager.h" -#include "LinkChannel.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include -#include #include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - +#include #include - using namespace std; namespace apl diff --git a/DNP3/AsyncStackManager.h b/opendnp3/DNP3/AsyncStackManager.h similarity index 94% rename from DNP3/AsyncStackManager.h rename to opendnp3/DNP3/AsyncStackManager.h index 45b387de..c78ca8cc 100644 --- a/DNP3/AsyncStackManager.h +++ b/opendnp3/DNP3/AsyncStackManager.h @@ -20,25 +20,24 @@ #ifndef __ASYNC_STACK_MANAGER_H_ #define __ASYNC_STACK_MANAGER_H_ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "VtoDataInterface.h" -#include "LinkRoute.h" -#include "VtoRouterManager.h" - namespace apl { class IPhysicalLayerAsync; diff --git a/DNP3/BufferSetTypes.h b/opendnp3/DNP3/BufferSetTypes.h similarity index 99% rename from DNP3/BufferSetTypes.h rename to opendnp3/DNP3/BufferSetTypes.h index fcf387d3..783d5dea 100644 --- a/DNP3/BufferSetTypes.h +++ b/opendnp3/DNP3/BufferSetTypes.h @@ -19,12 +19,11 @@ #ifndef __BUFFER_SET_TYPES_H_ #define __BUFFER_SET_TYPES_H_ - +#include +#include #include #include #include -#include -#include namespace apl { diff --git a/DNP3/BufferTypes.cpp b/opendnp3/DNP3/BufferTypes.cpp similarity index 93% rename from DNP3/BufferTypes.cpp rename to opendnp3/DNP3/BufferTypes.cpp index d5e77ffc..19b1b66f 100644 --- a/DNP3/BufferTypes.cpp +++ b/opendnp3/DNP3/BufferTypes.cpp @@ -15,9 +15,8 @@ // under the License. // -#include - -#include "BufferTypes.h" +#include +#include namespace apl { diff --git a/DNP3/BufferTypes.h b/opendnp3/DNP3/BufferTypes.h similarity index 97% rename from DNP3/BufferTypes.h rename to opendnp3/DNP3/BufferTypes.h index 9812bfc7..0e832cdd 100644 --- a/DNP3/BufferTypes.h +++ b/opendnp3/DNP3/BufferTypes.h @@ -18,7 +18,7 @@ #ifndef __BUFFER_TYPES_H_ #define __BUFFER_TYPES_H_ -#include +#include namespace apl { diff --git a/DNP3/CTOHistory.h b/opendnp3/DNP3/CTOHistory.h similarity index 100% rename from DNP3/CTOHistory.h rename to opendnp3/DNP3/CTOHistory.h diff --git a/DNP3/ClassCounter.cpp b/opendnp3/DNP3/ClassCounter.cpp similarity index 97% rename from DNP3/ClassCounter.cpp rename to opendnp3/DNP3/ClassCounter.cpp index ba86ca68..afc18371 100644 --- a/DNP3/ClassCounter.cpp +++ b/opendnp3/DNP3/ClassCounter.cpp @@ -16,8 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "ClassCounter.h" - +#include #include diff --git a/DNP3/ClassCounter.h b/opendnp3/DNP3/ClassCounter.h similarity index 95% rename from DNP3/ClassCounter.h rename to opendnp3/DNP3/ClassCounter.h index beaa64eb..a3fe6cb4 100644 --- a/DNP3/ClassCounter.h +++ b/opendnp3/DNP3/ClassCounter.h @@ -19,13 +19,11 @@ #ifndef __CLASS_COUNTER_H_ #define __CLASS_COUNTER_H_ +#include +#include - -#include #include - -#include "DNPDatabaseTypes.h" -#include +#include namespace apl { diff --git a/DNP3/ClassMask.h b/opendnp3/DNP3/ClassMask.h similarity index 97% rename from DNP3/ClassMask.h rename to opendnp3/DNP3/ClassMask.h index 20eb8a00..942fc1e0 100644 --- a/DNP3/ClassMask.h +++ b/opendnp3/DNP3/ClassMask.h @@ -19,7 +19,7 @@ #ifndef __CLASS_MASK_H_ #define __CLASS_MASK_H_ -#include "PointClass.h" +#include namespace apl { diff --git a/DNP3/ControlTasks.cpp b/opendnp3/DNP3/ControlTasks.cpp similarity index 96% rename from DNP3/ControlTasks.cpp rename to opendnp3/DNP3/ControlTasks.cpp index ffb2dedb..d4532273 100644 --- a/DNP3/ControlTasks.cpp +++ b/opendnp3/DNP3/ControlTasks.cpp @@ -17,11 +17,11 @@ // under the License. // -#include "ControlTasks.h" -#include "APDU.h" +#include +#include +#include #include -#include namespace apl { diff --git a/DNP3/ControlTasks.h b/opendnp3/DNP3/ControlTasks.h similarity index 93% rename from DNP3/ControlTasks.h rename to opendnp3/DNP3/ControlTasks.h index d1e1c82e..9ca450d0 100644 --- a/DNP3/ControlTasks.h +++ b/opendnp3/DNP3/ControlTasks.h @@ -19,17 +19,16 @@ #ifndef __CONTROL_TASKS_H_ #define __CONTROL_TASKS_H_ -#include -#include "MasterTaskBase.h" -#include "ObjectInterfaces.h" -#include "ObjectReadIterator.h" -#include "APDU.h" +#include +#include +#include +#include +#include +#include +#include #include - -#include -#include -#include +#include namespace apl { diff --git a/DNP3/DNP3.vcxproj b/opendnp3/DNP3/DNP3.vcxproj similarity index 100% rename from DNP3/DNP3.vcxproj rename to opendnp3/DNP3/DNP3.vcxproj diff --git a/DNP3/DNP3.vcxproj.filters b/opendnp3/DNP3/DNP3.vcxproj.filters similarity index 100% rename from DNP3/DNP3.vcxproj.filters rename to opendnp3/DNP3/DNP3.vcxproj.filters diff --git a/DNP3/DNPCommandMaster.cpp b/opendnp3/DNP3/DNPCommandMaster.cpp similarity index 95% rename from DNP3/DNPCommandMaster.cpp rename to opendnp3/DNP3/DNPCommandMaster.cpp index 55f0af30..7951ee68 100644 --- a/DNP3/DNPCommandMaster.cpp +++ b/opendnp3/DNP3/DNPCommandMaster.cpp @@ -16,12 +16,10 @@ // specific language governing permissions and limitations // under the License. // -#include "DNPCommandMaster.h" - -#include -#include - -#include "DeviceTemplate.h" +#include +#include +#include +#include #include diff --git a/DNP3/DNPCommandMaster.h b/opendnp3/DNP3/DNPCommandMaster.h similarity index 97% rename from DNP3/DNPCommandMaster.h rename to opendnp3/DNP3/DNPCommandMaster.h index 623963d7..ade427ac 100644 --- a/DNP3/DNPCommandMaster.h +++ b/opendnp3/DNP3/DNPCommandMaster.h @@ -19,12 +19,12 @@ #ifndef __DNP_COMMAND_MASTER_H_ #define __DNP_COMMAND_MASTER_H_ +#include +#include +#include +#include +#include -#include -#include -#include -#include -#include #include #include diff --git a/DNP3/DNPConstants.h b/opendnp3/DNP3/DNPConstants.h similarity index 100% rename from DNP3/DNPConstants.h rename to opendnp3/DNP3/DNPConstants.h diff --git a/DNP3/DNPCrc.cpp b/opendnp3/DNP3/DNPCrc.cpp similarity index 93% rename from DNP3/DNPCrc.cpp rename to opendnp3/DNP3/DNPCrc.cpp index 1e32b431..28f07711 100644 --- a/DNP3/DNPCrc.cpp +++ b/opendnp3/DNP3/DNPCrc.cpp @@ -17,10 +17,9 @@ // under the License. // -#include "DNPCrc.h" -#include - -#include +#include +#include +#include namespace apl { diff --git a/DNP3/DNPCrc.h b/opendnp3/DNP3/DNPCrc.h similarity index 97% rename from DNP3/DNPCrc.h rename to opendnp3/DNP3/DNPCrc.h index f9d726b1..32cb63fd 100644 --- a/DNP3/DNPCrc.h +++ b/opendnp3/DNP3/DNPCrc.h @@ -19,7 +19,8 @@ #ifndef __DNP_CRC_H_ #define __DNP_CRC_H_ -#include +#include + #include namespace apl diff --git a/DNP3/DNPDatabaseTypes.h b/opendnp3/DNP3/DNPDatabaseTypes.h similarity index 95% rename from DNP3/DNPDatabaseTypes.h rename to opendnp3/DNP3/DNPDatabaseTypes.h index de1b316f..491b1c18 100644 --- a/DNP3/DNPDatabaseTypes.h +++ b/opendnp3/DNP3/DNPDatabaseTypes.h @@ -19,13 +19,10 @@ #ifndef __DNP_DATABASE_TYPES_H_ #define __DNP_DATABASE_TYPES_H_ - - -#include -#include - -#include "PointClass.h" -#include "VtoData.h" +#include +#include +#include +#include #include diff --git a/DNP3/DNPExceptions.h b/opendnp3/DNP3/DNPExceptions.h similarity index 97% rename from DNP3/DNPExceptions.h rename to opendnp3/DNP3/DNPExceptions.h index 81014d55..6d78c734 100644 --- a/DNP3/DNPExceptions.h +++ b/opendnp3/DNP3/DNPExceptions.h @@ -19,8 +19,7 @@ #ifndef __DNP_EXCEPTIONS_H_ #define __DNP_EXCEPTIONS_H_ -#include - +#include namespace apl { diff --git a/DNP3/DNPFromStream.h b/opendnp3/DNP3/DNPFromStream.h similarity index 96% rename from DNP3/DNPFromStream.h rename to opendnp3/DNP3/DNPFromStream.h index de2848e6..00d93edc 100644 --- a/DNP3/DNPFromStream.h +++ b/opendnp3/DNP3/DNPFromStream.h @@ -19,8 +19,8 @@ #ifndef __DNP_FROM_STREAM_H_ #define __DNP_FROM_STREAM_H_ - -#include +#include +#include #include @@ -30,11 +30,6 @@ #pragma warning ( disable : 4244 ) #endif -//#include -#include -//#include "ObjectInterfaces.h" -//#include "Objects.h" - namespace apl { namespace dnp diff --git a/DNP3/DNPToStream.h b/opendnp3/DNP3/DNPToStream.h similarity index 97% rename from DNP3/DNPToStream.h rename to opendnp3/DNP3/DNPToStream.h index edf310f3..e5336d2b 100644 --- a/DNP3/DNPToStream.h +++ b/opendnp3/DNP3/DNPToStream.h @@ -19,9 +19,9 @@ #ifndef __DNP_TO_STREAM_H_ #define __DNP_TO_STREAM_H_ -#include -#include -#include +#include +#include +#include #ifdef APL_PLATFORM_WIN //disable the type converstion warnings diff --git a/DNP3/DataPoll.cpp b/opendnp3/DNP3/DataPoll.cpp similarity index 89% rename from DNP3/DataPoll.cpp rename to opendnp3/DNP3/DataPoll.cpp index 98423b86..12e903f8 100644 --- a/DNP3/DataPoll.cpp +++ b/opendnp3/DNP3/DataPoll.cpp @@ -17,14 +17,13 @@ // under the License. // -#include -#include - -#include "DataPoll.h" -#include "APDU.h" -#include "ResponseLoader.h" -#include "PointClass.h" -#include "VtoReader.h" +#include +#include +#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/DataPoll.h b/opendnp3/DNP3/DataPoll.h similarity index 95% rename from DNP3/DataPoll.h rename to opendnp3/DNP3/DataPoll.h index f2536015..259c697a 100644 --- a/DNP3/DataPoll.h +++ b/opendnp3/DNP3/DataPoll.h @@ -19,8 +19,8 @@ #ifndef __DATA_POLL_H_ #define __DATA_POLL_H_ -#include "MasterTaskBase.h" -#include "VtoReader.h" +#include +#include namespace apl { diff --git a/DNP3/Database.cpp b/opendnp3/DNP3/Database.cpp similarity index 98% rename from DNP3/Database.cpp rename to opendnp3/DNP3/Database.cpp index 5730be27..c262cea3 100644 --- a/DNP3/Database.cpp +++ b/opendnp3/DNP3/Database.cpp @@ -16,17 +16,14 @@ // specific language governing permissions and limitations // under the License. // -#include "Database.h" +#include +#include +#include +#include #include #include -#include - -#include "DNPConstants.h" -#include "DeviceTemplate.h" - - namespace apl { namespace dnp diff --git a/DNP3/Database.h b/opendnp3/DNP3/Database.h similarity index 95% rename from DNP3/Database.h rename to opendnp3/DNP3/Database.h index 49750a48..0c039adf 100644 --- a/DNP3/Database.h +++ b/opendnp3/DNP3/Database.h @@ -19,18 +19,16 @@ #ifndef __DATABASE_H_ #define __DATABASE_H_ +#include +#include +#include +#include +#include -#include "DatabaseInterfaces.h" -#include "DNPConstants.h" - -#include -#include -#include - +#include +#include #include #include -#include -#include #ifdef max #undef max diff --git a/DNP3/DatabaseInterfaces.h b/opendnp3/DNP3/DatabaseInterfaces.h similarity index 92% rename from DNP3/DatabaseInterfaces.h rename to opendnp3/DNP3/DatabaseInterfaces.h index 102cccca..07c1f6f0 100644 --- a/DNP3/DatabaseInterfaces.h +++ b/opendnp3/DNP3/DatabaseInterfaces.h @@ -19,10 +19,9 @@ #ifndef __DATABASE_INTERFACES_H_ #define __DATABASE_INTERFACES_H_ - -#include "DNPDatabaseTypes.h" -#include "VtoData.h" -#include "IVtoEventAcceptor.h" +#include +#include +#include namespace apl { diff --git a/DNP3/DeviceTemplate.cpp b/opendnp3/DNP3/DeviceTemplate.cpp similarity index 98% rename from DNP3/DeviceTemplate.cpp rename to opendnp3/DNP3/DeviceTemplate.cpp index 5ae3509b..0ab6c14a 100644 --- a/DNP3/DeviceTemplate.cpp +++ b/opendnp3/DNP3/DeviceTemplate.cpp @@ -16,7 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "DeviceTemplate.h" +#include namespace apl { diff --git a/DNP3/DeviceTemplate.h b/opendnp3/DNP3/DeviceTemplate.h similarity index 96% rename from DNP3/DeviceTemplate.h rename to opendnp3/DNP3/DeviceTemplate.h index 7f5d2d96..5b7e933f 100644 --- a/DNP3/DeviceTemplate.h +++ b/opendnp3/DNP3/DeviceTemplate.h @@ -19,12 +19,12 @@ #ifndef __DEVICE_TEMPLATE_H_ #define __DEVICE_TEMPLATE_H_ +#include +#include + #include #include -#include -#include "DeviceTemplateTypes.h" - namespace apl { namespace dnp diff --git a/DNP3/DeviceTemplateTypes.h b/opendnp3/DNP3/DeviceTemplateTypes.h similarity index 95% rename from DNP3/DeviceTemplateTypes.h rename to opendnp3/DNP3/DeviceTemplateTypes.h index 45ceafd7..56a42f71 100644 --- a/DNP3/DeviceTemplateTypes.h +++ b/opendnp3/DNP3/DeviceTemplateTypes.h @@ -19,11 +19,11 @@ #ifndef __DEVICE_TEMPLATE_TYPES_H_ #define __DEVICE_TEMPLATE_TYPES_H_ -#include +#include +#include +#include -#include -#include -#include "PointClass.h" +#include namespace apl { diff --git a/DNP3/EnhancedVto.cpp b/opendnp3/DNP3/EnhancedVto.cpp similarity index 92% rename from DNP3/EnhancedVto.cpp rename to opendnp3/DNP3/EnhancedVto.cpp index f67c677c..0fdfb567 100644 --- a/DNP3/EnhancedVto.cpp +++ b/opendnp3/DNP3/EnhancedVto.cpp @@ -15,12 +15,10 @@ // under the License. // -#include "EnhancedVto.h" - -#include "VtoData.h" - -#include -#include +#include +#include +#include +#include #include diff --git a/DNP3/EnhancedVto.h b/opendnp3/DNP3/EnhancedVto.h similarity index 97% rename from DNP3/EnhancedVto.h rename to opendnp3/DNP3/EnhancedVto.h index 50657fe5..87097c5d 100644 --- a/DNP3/EnhancedVto.h +++ b/opendnp3/DNP3/EnhancedVto.h @@ -18,7 +18,7 @@ #ifndef __ENHANCED_VTO_H_ #define __ENHANCED_VTO_H_ -#include +#include namespace apl { diff --git a/DNP3/EnhancedVtoRouter.cpp b/opendnp3/DNP3/EnhancedVtoRouter.cpp similarity index 98% rename from DNP3/EnhancedVtoRouter.cpp rename to opendnp3/DNP3/EnhancedVtoRouter.cpp index df6f71f6..63ef9a99 100644 --- a/DNP3/EnhancedVtoRouter.cpp +++ b/opendnp3/DNP3/EnhancedVtoRouter.cpp @@ -15,10 +15,9 @@ * under the License. */ -#include "EnhancedVtoRouter.h" - -#include -#include +#include +#include +#include namespace apl { diff --git a/DNP3/EnhancedVtoRouter.h b/opendnp3/DNP3/EnhancedVtoRouter.h similarity index 99% rename from DNP3/EnhancedVtoRouter.h rename to opendnp3/DNP3/EnhancedVtoRouter.h index db2e251b..3f9a6d8a 100644 --- a/DNP3/EnhancedVtoRouter.h +++ b/opendnp3/DNP3/EnhancedVtoRouter.h @@ -18,7 +18,7 @@ #ifndef __ENHANCED_VTO_ROUTER_H_ #define __ENHANCED_VTO_ROUTER_H_ -#include "VtoRouter.h" +#include namespace apl { diff --git a/DNP3/EventBufferBase.h b/opendnp3/DNP3/EventBufferBase.h similarity index 99% rename from DNP3/EventBufferBase.h rename to opendnp3/DNP3/EventBufferBase.h index b9d0cfc9..9d7c09f2 100644 --- a/DNP3/EventBufferBase.h +++ b/opendnp3/DNP3/EventBufferBase.h @@ -19,9 +19,8 @@ #ifndef __EVENT_BUFFER_BASE_H_ #define __EVENT_BUFFER_BASE_H_ - -#include "ClassCounter.h" -#include "EventTypes.h" +#include +#include namespace apl { diff --git a/DNP3/EventBuffers.h b/opendnp3/DNP3/EventBuffers.h similarity index 97% rename from DNP3/EventBuffers.h rename to opendnp3/DNP3/EventBuffers.h index aa78521e..f81cc29f 100644 --- a/DNP3/EventBuffers.h +++ b/opendnp3/DNP3/EventBuffers.h @@ -19,15 +19,14 @@ #ifndef __EVENT_BUFFERS_H_ #define __EVENT_BUFFERS_H_ +#include +#include -#include "BufferSetTypes.h" -#include "EventBufferBase.h" - +#include +#include #include #include #include -#include -#include namespace apl { diff --git a/DNP3/EventTypes.h b/opendnp3/DNP3/EventTypes.h similarity index 96% rename from DNP3/EventTypes.h rename to opendnp3/DNP3/EventTypes.h index 0c4d6adc..8463592b 100644 --- a/DNP3/EventTypes.h +++ b/opendnp3/DNP3/EventTypes.h @@ -19,8 +19,8 @@ #ifndef __EVENT_TYPES_H_ #define __EVENT_TYPES_H_ -#include "DNPDatabaseTypes.h" -#include "VtoData.h" +#include +#include //using namespace dnp; namespace apl diff --git a/DNP3/HeaderReadIterator.cpp b/opendnp3/DNP3/HeaderReadIterator.cpp similarity index 92% rename from DNP3/HeaderReadIterator.cpp rename to opendnp3/DNP3/HeaderReadIterator.cpp index 6797c118..2b104822 100644 --- a/DNP3/HeaderReadIterator.cpp +++ b/opendnp3/DNP3/HeaderReadIterator.cpp @@ -16,9 +16,8 @@ // specific language governing permissions and limitations // under the License. // -#include "HeaderReadIterator.h" -#include "ObjectReadIterator.h" - +#include +#include namespace apl { @@ -34,7 +33,6 @@ HeaderReadIterator::HeaderReadIterator(const std::vector* apHeaders, } - ObjectReadIterator HeaderReadIterator::BeginRead() { return ObjectReadIterator((*mpHeaders)[mIndex], mpBuffer, mHasData); diff --git a/DNP3/HeaderReadIterator.h b/opendnp3/DNP3/HeaderReadIterator.h similarity index 94% rename from DNP3/HeaderReadIterator.h rename to opendnp3/DNP3/HeaderReadIterator.h index c282f081..6e5495b8 100644 --- a/DNP3/HeaderReadIterator.h +++ b/opendnp3/DNP3/HeaderReadIterator.h @@ -19,23 +19,22 @@ #ifndef __HEADER_READ_ITERATOR_H_ #define __HEADER_READ_ITERATOR_H_ -#include -#include -#include +#include +#include +#include +#include +#include +#include -#include "APDUConstants.h" -#include "ObjectHeader.h" -#include "ObjectInterfaces.h" -#include "DNPConstants.h" -#include - -class IObjectHeader; +#include +#include namespace apl { namespace dnp { +class IObjectHeader; class ObjectReadIterator; /** diff --git a/DNP3/IFrameSink.h b/opendnp3/DNP3/IFrameSink.h similarity index 98% rename from DNP3/IFrameSink.h rename to opendnp3/DNP3/IFrameSink.h index 629f7766..2710f871 100644 --- a/DNP3/IFrameSink.h +++ b/opendnp3/DNP3/IFrameSink.h @@ -19,7 +19,8 @@ #ifndef __I_FRAME_SINK_H_ #define __I_FRAME_SINK_H_ -#include +#include + #include namespace apl diff --git a/DNP3/ILinkContext.h b/opendnp3/DNP3/ILinkContext.h similarity index 96% rename from DNP3/ILinkContext.h rename to opendnp3/DNP3/ILinkContext.h index 0d7c77e2..df2bdac6 100644 --- a/DNP3/ILinkContext.h +++ b/opendnp3/DNP3/ILinkContext.h @@ -19,7 +19,7 @@ #ifndef __I_LINK_CONTEXT_H_ #define __I_LINK_CONTEXT_H_ -#include "IFrameSink.h" +#include namespace apl { diff --git a/DNP3/ILinkRouter.h b/opendnp3/DNP3/ILinkRouter.h similarity index 100% rename from DNP3/ILinkRouter.h rename to opendnp3/DNP3/ILinkRouter.h diff --git a/DNP3/IStackObserver.cpp b/opendnp3/DNP3/IStackObserver.cpp similarity index 96% rename from DNP3/IStackObserver.cpp rename to opendnp3/DNP3/IStackObserver.cpp index 41ca62db..8339ebe4 100644 --- a/DNP3/IStackObserver.cpp +++ b/opendnp3/DNP3/IStackObserver.cpp @@ -17,7 +17,7 @@ // under the License. // -#include "IStackObserver.h" +#include namespace apl { diff --git a/DNP3/IStackObserver.h b/opendnp3/DNP3/IStackObserver.h similarity index 100% rename from DNP3/IStackObserver.h rename to opendnp3/DNP3/IStackObserver.h diff --git a/DNP3/IVtoEventAcceptor.h b/opendnp3/DNP3/IVtoEventAcceptor.h old mode 100755 new mode 100644 similarity index 96% rename from DNP3/IVtoEventAcceptor.h rename to opendnp3/DNP3/IVtoEventAcceptor.h index 7ff104be..aa84f17e --- a/DNP3/IVtoEventAcceptor.h +++ b/opendnp3/DNP3/IVtoEventAcceptor.h @@ -19,7 +19,7 @@ #ifndef __I_VTO_EVENT_ACCEPTOR_H_ #define __I_VTO_EVENT_ACCEPTOR_H_ -#include "VtoData.h" +#include namespace apl { diff --git a/DNP3/IndexedWriteIterator.cpp b/opendnp3/DNP3/IndexedWriteIterator.cpp similarity index 94% rename from DNP3/IndexedWriteIterator.cpp rename to opendnp3/DNP3/IndexedWriteIterator.cpp index 6780eb26..a0f64c8a 100644 --- a/DNP3/IndexedWriteIterator.cpp +++ b/opendnp3/DNP3/IndexedWriteIterator.cpp @@ -16,13 +16,10 @@ // specific language governing permissions and limitations // under the License. // -#include "IndexedWriteIterator.h" - - -#include "ObjectHeader.h" - -#include -#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/IndexedWriteIterator.h b/opendnp3/DNP3/IndexedWriteIterator.h similarity index 93% rename from DNP3/IndexedWriteIterator.h rename to opendnp3/DNP3/IndexedWriteIterator.h index b56fb20d..3ca714c3 100644 --- a/DNP3/IndexedWriteIterator.h +++ b/opendnp3/DNP3/IndexedWriteIterator.h @@ -19,9 +19,10 @@ #ifndef __INDEXED_WRITE_ITERATOR_H_ #define __INDEXED_WRITE_ITERATOR_H_ -#include -#include "APDUConstants.h" -#include "ObjectHeader.h" +#include +#include +#include + #include #include diff --git a/DNP3/LinkChannel.cpp b/opendnp3/DNP3/LinkChannel.cpp old mode 100755 new mode 100644 similarity index 90% rename from DNP3/LinkChannel.cpp rename to opendnp3/DNP3/LinkChannel.cpp index dfe79d21..4315f10f --- a/DNP3/LinkChannel.cpp +++ b/opendnp3/DNP3/LinkChannel.cpp @@ -16,16 +16,15 @@ // specific language governing permissions and limitations // under the License. // -#include "LinkChannel.h" +#include +#include +#include +#include +#include +#include -#include "Stack.h" -#include #include - -#include -#include -#include -#include +#include namespace apl { diff --git a/DNP3/LinkChannel.h b/opendnp3/DNP3/LinkChannel.h old mode 100755 new mode 100644 similarity index 96% rename from DNP3/LinkChannel.h rename to opendnp3/DNP3/LinkChannel.h index 97672b68..16ebad5c --- a/DNP3/LinkChannel.h +++ b/opendnp3/DNP3/LinkChannel.h @@ -19,9 +19,8 @@ #ifndef __LINK_CHANNEL_H_ #define __LINK_CHANNEL_H_ -#include "LinkLayerRouter.h" - -#include +#include +#include #include diff --git a/DNP3/LinkConfig.h b/opendnp3/DNP3/LinkConfig.h similarity index 98% rename from DNP3/LinkConfig.h rename to opendnp3/DNP3/LinkConfig.h index e4bb5159..89cc540f 100644 --- a/DNP3/LinkConfig.h +++ b/opendnp3/DNP3/LinkConfig.h @@ -19,7 +19,7 @@ #ifndef __LINK_CONFIG_H_ #define __LINK_CONFIG_H_ -#include +#include namespace apl { diff --git a/DNP3/LinkFrame.cpp b/opendnp3/DNP3/LinkFrame.cpp similarity index 98% rename from DNP3/LinkFrame.cpp rename to opendnp3/DNP3/LinkFrame.cpp index d7215975..5d7372dc 100644 --- a/DNP3/LinkFrame.cpp +++ b/opendnp3/DNP3/LinkFrame.cpp @@ -16,13 +16,12 @@ // specific language governing permissions and limitations // under the License. // -#include "LinkFrame.h" - -#include "DNPCrc.h" +#include +#include +#include #include #include -#include using namespace std; diff --git a/DNP3/LinkFrame.h b/opendnp3/DNP3/LinkFrame.h similarity index 97% rename from DNP3/LinkFrame.h rename to opendnp3/DNP3/LinkFrame.h index 63a49b21..f28bf694 100644 --- a/DNP3/LinkFrame.h +++ b/opendnp3/DNP3/LinkFrame.h @@ -19,10 +19,9 @@ #ifndef __LINK_FRAME_H_ #define __LINK_FRAME_H_ - -#include "LinkLayerConstants.h" -#include -#include "LinkHeader.h" +#include +#include +#include #include diff --git a/DNP3/LinkHeader.cpp b/opendnp3/DNP3/LinkHeader.cpp similarity index 95% rename from DNP3/LinkHeader.cpp rename to opendnp3/DNP3/LinkHeader.cpp index 55309c8b..030204b6 100644 --- a/DNP3/LinkHeader.cpp +++ b/opendnp3/DNP3/LinkHeader.cpp @@ -16,10 +16,9 @@ // specific language governing permissions and limitations // under the License. // -#include "LinkHeader.h" - -#include -#include "DNPCrc.h" +#include +#include +#include #include diff --git a/DNP3/LinkHeader.h b/opendnp3/DNP3/LinkHeader.h similarity index 98% rename from DNP3/LinkHeader.h rename to opendnp3/DNP3/LinkHeader.h index 8f212e82..356f02c3 100644 --- a/DNP3/LinkHeader.h +++ b/opendnp3/DNP3/LinkHeader.h @@ -19,8 +19,7 @@ #ifndef __LINK_HEADER_H_ #define __LINK_HEADER_H_ - -#include "LinkLayerConstants.h" +#include namespace apl { diff --git a/DNP3/LinkLayer.cpp b/opendnp3/DNP3/LinkLayer.cpp similarity index 95% rename from DNP3/LinkLayer.cpp rename to opendnp3/DNP3/LinkLayer.cpp index 2ee1c347..69f30a2f 100644 --- a/DNP3/LinkLayer.cpp +++ b/opendnp3/DNP3/LinkLayer.cpp @@ -16,18 +16,16 @@ // specific language governing permissions and limitations // under the License. // -#include "LinkLayer.h" - +#include +#include +#include +#include +#include +#include +#include #include #include -#include -#include - -#include "ILinkRouter.h" -#include "PriLinkLayerStates.h" -#include "SecLinkLayerStates.h" -#include "DNPConstants.h" using namespace boost; diff --git a/DNP3/LinkLayer.h b/opendnp3/DNP3/LinkLayer.h similarity index 95% rename from DNP3/LinkLayer.h rename to opendnp3/DNP3/LinkLayer.h index 910c25c9..885335f5 100644 --- a/DNP3/LinkLayer.h +++ b/opendnp3/DNP3/LinkLayer.h @@ -19,14 +19,13 @@ #ifndef __LINK_LAYER_H_ #define __LINK_LAYER_H_ +#include +#include +#include +#include +#include #include -#include -#include - -#include "ILinkContext.h" -#include "LinkFrame.h" -#include "LinkConfig.h" namespace apl { diff --git a/DNP3/LinkLayerConstants.cpp b/opendnp3/DNP3/LinkLayerConstants.cpp similarity index 97% rename from DNP3/LinkLayerConstants.cpp rename to opendnp3/DNP3/LinkLayerConstants.cpp index b4519cde..b8379cac 100644 --- a/DNP3/LinkLayerConstants.cpp +++ b/opendnp3/DNP3/LinkLayerConstants.cpp @@ -16,8 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "LinkLayerConstants.h" - +#include namespace apl { diff --git a/DNP3/LinkLayerConstants.h b/opendnp3/DNP3/LinkLayerConstants.h similarity index 98% rename from DNP3/LinkLayerConstants.h rename to opendnp3/DNP3/LinkLayerConstants.h index 813cfa4f..fff91c9b 100644 --- a/DNP3/LinkLayerConstants.h +++ b/opendnp3/DNP3/LinkLayerConstants.h @@ -19,7 +19,7 @@ #ifndef __LINK_LAYER_CONSTANTS_ #define __LINK_LAYER_CONSTANTS_ -#include +#include #include diff --git a/DNP3/LinkLayerReceiver.cpp b/opendnp3/DNP3/LinkLayerReceiver.cpp similarity index 97% rename from DNP3/LinkLayerReceiver.cpp rename to opendnp3/DNP3/LinkLayerReceiver.cpp index 1cad819a..570b1971 100644 --- a/DNP3/LinkLayerReceiver.cpp +++ b/opendnp3/DNP3/LinkLayerReceiver.cpp @@ -16,13 +16,13 @@ // specific language governing permissions and limitations // under the License. // -#include -#include -#include +#include +#include +#include +#include +#include -#include "DNPCrc.h" -#include "LinkReceiverStates.h" -#include "IFrameSink.h" +#include namespace apl { diff --git a/DNP3/LinkLayerReceiver.h b/opendnp3/DNP3/LinkLayerReceiver.h similarity index 92% rename from DNP3/LinkLayerReceiver.h rename to opendnp3/DNP3/LinkLayerReceiver.h index 7522a80f..c818cacc 100644 --- a/DNP3/LinkLayerReceiver.h +++ b/opendnp3/DNP3/LinkLayerReceiver.h @@ -19,13 +19,12 @@ #ifndef __LINK_LAYER_RECEIVER_H_ #define __LINK_LAYER_RECEIVER_H_ -#include -#include -#include - -#include "LinkFrame.h" -#include "DNPConstants.h" -#include "LinkHeader.h" +#include +#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/LinkLayerRouter.cpp b/opendnp3/DNP3/LinkLayerRouter.cpp similarity index 96% rename from DNP3/LinkLayerRouter.cpp rename to opendnp3/DNP3/LinkLayerRouter.cpp index 65a20f7b..590b2961 100644 --- a/DNP3/LinkLayerRouter.cpp +++ b/opendnp3/DNP3/LinkLayerRouter.cpp @@ -16,18 +16,16 @@ // specific language governing permissions and limitations // under the License. // -#include "LinkLayerRouter.h" +#include +#include +#include +#include +#include +#include - -#include -#include -#include #include #include -#include "ILinkContext.h" -#include "LinkFrame.h" - using namespace std; namespace apl diff --git a/DNP3/LinkLayerRouter.h b/opendnp3/DNP3/LinkLayerRouter.h similarity index 94% rename from DNP3/LinkLayerRouter.h rename to opendnp3/DNP3/LinkLayerRouter.h index f2247830..c4d08df9 100644 --- a/DNP3/LinkLayerRouter.h +++ b/opendnp3/DNP3/LinkLayerRouter.h @@ -19,17 +19,15 @@ #ifndef __LINK_LAYER_ROUTER_H_ #define __LINK_LAYER_ROUTER_H_ +#include +#include +#include +#include +#include #include #include -#include - -#include "LinkLayerReceiver.h" -#include "IFrameSink.h" -#include "ILinkRouter.h" -#include "LinkRoute.h" - namespace apl { class IPhysicalLayerAsync; diff --git a/DNP3/LinkReceiverStates.cpp b/opendnp3/DNP3/LinkReceiverStates.cpp similarity index 89% rename from DNP3/LinkReceiverStates.cpp rename to opendnp3/DNP3/LinkReceiverStates.cpp index 4b56a7a5..81d34913 100644 --- a/DNP3/LinkReceiverStates.cpp +++ b/opendnp3/DNP3/LinkReceiverStates.cpp @@ -16,14 +16,12 @@ // specific language governing permissions and limitations // under the License. // -#include "LinkReceiverStates.h" - -#include -#include "LinkLayerReceiver.h" -#include -#include "DNPCrc.h" -#include - +#include +#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/LinkReceiverStates.h b/opendnp3/DNP3/LinkReceiverStates.h similarity index 94% rename from DNP3/LinkReceiverStates.h rename to opendnp3/DNP3/LinkReceiverStates.h index fe2f7c67..37e4bda7 100644 --- a/DNP3/LinkReceiverStates.h +++ b/opendnp3/DNP3/LinkReceiverStates.h @@ -19,11 +19,11 @@ #ifndef __LINK_RECEIVER_STATES_H_ #define __LINK_RECEIVER_STATES_H_ +#include +#include +#include #include -#include -#include -#include "LinkLayerReceiver.h" namespace apl { diff --git a/DNP3/LinkRoute.cpp b/opendnp3/DNP3/LinkRoute.cpp similarity index 97% rename from DNP3/LinkRoute.cpp rename to opendnp3/DNP3/LinkRoute.cpp index 2c089807..056f0160 100644 --- a/DNP3/LinkRoute.cpp +++ b/opendnp3/DNP3/LinkRoute.cpp @@ -17,7 +17,7 @@ // under the License. // -#include "LinkRoute.h" +#include #include diff --git a/DNP3/LinkRoute.h b/opendnp3/DNP3/LinkRoute.h similarity index 98% rename from DNP3/LinkRoute.h rename to opendnp3/DNP3/LinkRoute.h index 0600c810..72187a7c 100644 --- a/DNP3/LinkRoute.h +++ b/opendnp3/DNP3/LinkRoute.h @@ -19,7 +19,7 @@ #ifndef __LINK_ROUTE_H_ #define __LINK_ROUTE_H_ -#include +#include #include diff --git a/DNP3/Master.cpp b/opendnp3/DNP3/Master.cpp similarity index 92% rename from DNP3/Master.cpp rename to opendnp3/DNP3/Master.cpp index db8fa757..8d225768 100644 --- a/DNP3/Master.cpp +++ b/opendnp3/DNP3/Master.cpp @@ -17,23 +17,21 @@ // under the License. // -#include "Master.h" - -#include "MasterStates.h" -#include "ObjectReadIterator.h" -#include "ResponseLoader.h" -#include "VtoEventBufferAdapter.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include diff --git a/DNP3/Master.h b/opendnp3/DNP3/Master.h similarity index 88% rename from DNP3/Master.h rename to opendnp3/DNP3/Master.h index 549cf46b..4923bea0 100644 --- a/DNP3/Master.h +++ b/opendnp3/DNP3/Master.h @@ -19,28 +19,25 @@ #ifndef __MASTER_H_ #define __MASTER_H_ -#include -#include -#include -#include -#include -#include - -#include "APDU.h" -#include "AppInterfaces.h" -#include "ObjectReadIterator.h" -#include "MasterConfig.h" -#include "ObjectInterfaces.h" -#include "MasterSchedule.h" -#include "IStackObserver.h" -#include "VtoReader.h" -#include "VtoWriter.h" - -// includes for tasks -#include "StartupTasks.h" -#include "DataPoll.h" -#include "ControlTasks.h" -#include "VtoTransmitTask.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/MasterConfig.h b/opendnp3/DNP3/MasterConfig.h similarity index 94% rename from DNP3/MasterConfig.h rename to opendnp3/DNP3/MasterConfig.h index 91bb2d18..daeb8d26 100644 --- a/DNP3/MasterConfig.h +++ b/opendnp3/DNP3/MasterConfig.h @@ -19,10 +19,10 @@ #ifndef __MASTER_CONFIG_H_ #define __MASTER_CONFIG_H_ -#include "DNPConstants.h" -#include "PointClass.h" -#include "MasterConfigTypes.h" -#include "IStackObserver.h" +#include +#include +#include +#include #include diff --git a/DNP3/MasterConfigTypes.h b/opendnp3/DNP3/MasterConfigTypes.h similarity index 90% rename from DNP3/MasterConfigTypes.h rename to opendnp3/DNP3/MasterConfigTypes.h index 414a2628..040c63fa 100644 --- a/DNP3/MasterConfigTypes.h +++ b/opendnp3/DNP3/MasterConfigTypes.h @@ -16,10 +16,10 @@ // specific language governing permissions and limitations // under the License. // -#ifndef __EXCEPTION_SCAN_H_ -#define __EXCEPTION_SCAN_H_ +#ifndef __MASTER_CONFIG_TYPES_H_ +#define __MASTER_CONFIG_TYPES_H_ -#include +#include namespace apl { diff --git a/DNP3/MasterSchedule.cpp b/opendnp3/DNP3/MasterSchedule.cpp similarity index 95% rename from DNP3/MasterSchedule.cpp rename to opendnp3/DNP3/MasterSchedule.cpp index 0159cc39..f009d6d5 100644 --- a/DNP3/MasterSchedule.cpp +++ b/opendnp3/DNP3/MasterSchedule.cpp @@ -15,12 +15,11 @@ * under the License. */ -#include "MasterSchedule.h" -#include "Master.h" - -#include -#include -#include +#include +#include +#include +#include +#include #include diff --git a/DNP3/MasterSchedule.h b/opendnp3/DNP3/MasterSchedule.h similarity index 96% rename from DNP3/MasterSchedule.h rename to opendnp3/DNP3/MasterSchedule.h index 508b3a63..7c8a53aa 100644 --- a/DNP3/MasterSchedule.h +++ b/opendnp3/DNP3/MasterSchedule.h @@ -20,9 +20,8 @@ #ifndef __MASTER_SCHEDULE_H_ #define __MASTER_SCHEDULE_H_ -#include "MasterConfig.h" - -#include +#include +#include namespace apl { diff --git a/DNP3/MasterStack.cpp b/opendnp3/DNP3/MasterStack.cpp similarity index 94% rename from DNP3/MasterStack.cpp rename to opendnp3/DNP3/MasterStack.cpp index 7dacabf9..56bf644e 100644 --- a/DNP3/MasterStack.cpp +++ b/opendnp3/DNP3/MasterStack.cpp @@ -16,9 +16,8 @@ // specific language governing permissions and limitations // under the License. // -#include "MasterStack.h" - -#include +#include +#include namespace apl { @@ -44,4 +43,4 @@ IVtoReader* MasterStack::GetVtoReader() } -} \ No newline at end of file +} diff --git a/DNP3/MasterStack.h b/opendnp3/DNP3/MasterStack.h similarity index 91% rename from DNP3/MasterStack.h rename to opendnp3/DNP3/MasterStack.h index ccbf4121..886a7195 100644 --- a/DNP3/MasterStack.h +++ b/opendnp3/DNP3/MasterStack.h @@ -19,9 +19,9 @@ #ifndef __MASTER_STACK_H_ #define __MASTER_STACK_H_ -#include "Stack.h" -#include "Master.h" -#include "MasterStackConfig.h" +#include +#include +#include namespace apl { diff --git a/DNP3/MasterStackConfig.h b/opendnp3/DNP3/MasterStackConfig.h similarity index 89% rename from DNP3/MasterStackConfig.h rename to opendnp3/DNP3/MasterStackConfig.h index 05aaed1c..903d4737 100644 --- a/DNP3/MasterStackConfig.h +++ b/opendnp3/DNP3/MasterStackConfig.h @@ -19,10 +19,10 @@ #ifndef __MASTER_STACK_CONFIG_H_ #define __MASTER_STACK_CONFIG_H_ -#include "MasterConfig.h" -#include "AppConfig.h" -#include "LinkConfig.h" -#include "VtoConfig.h" +#include +#include +#include +#include namespace apl { diff --git a/DNP3/MasterStates.cpp b/opendnp3/DNP3/MasterStates.cpp similarity index 93% rename from DNP3/MasterStates.cpp rename to opendnp3/DNP3/MasterStates.cpp index 3a5a9007..ae5ccc7e 100644 --- a/DNP3/MasterStates.cpp +++ b/opendnp3/DNP3/MasterStates.cpp @@ -16,15 +16,14 @@ // specific language governing permissions and limitations // under the License. // -#include "MasterStates.h" +#include +#include +#include +#include +#include +#include +#include -#include -#include -#include -#include -#include - -#include "Master.h" #include diff --git a/DNP3/MasterStates.h b/opendnp3/DNP3/MasterStates.h similarity index 95% rename from DNP3/MasterStates.h rename to opendnp3/DNP3/MasterStates.h index 3d43484c..1bacb847 100644 --- a/DNP3/MasterStates.h +++ b/opendnp3/DNP3/MasterStates.h @@ -19,12 +19,11 @@ #ifndef __MASTER_STATES_H_ #define __MASTER_STATES_H_ +#include +#include +#include #include -#include -#include - -#include "ObjectInterfaces.h" namespace apl { diff --git a/DNP3/MasterTaskBase.cpp b/opendnp3/DNP3/MasterTaskBase.cpp similarity index 92% rename from DNP3/MasterTaskBase.cpp rename to opendnp3/DNP3/MasterTaskBase.cpp index 74a3eb3c..d1e7e6cd 100644 --- a/DNP3/MasterTaskBase.cpp +++ b/opendnp3/DNP3/MasterTaskBase.cpp @@ -17,10 +17,10 @@ // under the License. // -#include "MasterTaskBase.h" -#include "APDU.h" -#include -#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/MasterTaskBase.h b/opendnp3/DNP3/MasterTaskBase.h similarity index 99% rename from DNP3/MasterTaskBase.h rename to opendnp3/DNP3/MasterTaskBase.h index ea144a9e..64c71b5f 100644 --- a/DNP3/MasterTaskBase.h +++ b/opendnp3/DNP3/MasterTaskBase.h @@ -19,8 +19,9 @@ #ifndef __MASTER_TASK_BASE_H_ #define __MASTER_TASK_BASE_H_ +#include + #include -#include namespace apl { diff --git a/DNP3/ObjectHeader.cpp b/opendnp3/DNP3/ObjectHeader.cpp similarity index 98% rename from DNP3/ObjectHeader.cpp rename to opendnp3/DNP3/ObjectHeader.cpp index f14d739a..d0a08133 100644 --- a/DNP3/ObjectHeader.cpp +++ b/opendnp3/DNP3/ObjectHeader.cpp @@ -16,8 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "ObjectHeader.h" - +#include #include diff --git a/DNP3/ObjectHeader.h b/opendnp3/DNP3/ObjectHeader.h similarity index 96% rename from DNP3/ObjectHeader.h rename to opendnp3/DNP3/ObjectHeader.h index 7515e50b..807cdd97 100644 --- a/DNP3/ObjectHeader.h +++ b/opendnp3/DNP3/ObjectHeader.h @@ -19,22 +19,19 @@ #ifndef __OBJECT_HEADER_H_ #define __OBJECT_HEADER_H_ +#include +#include +#include +#include +#include -#include -#include -#include -#include +#include #include #include -#include - //irratating windows macro interferes with the numeric_limits::max() #undef max - -#include "APDUConstants.h" - namespace apl { namespace dnp @@ -192,7 +189,7 @@ class CountHeader : public ICountHeader virtual std::string ToString(const boost::uint8_t* apStart) const { - std::ostringstream oss; + std::ostringstream oss; oss << "Count: " << this->GetCount(apStart); return oss.str(); } diff --git a/DNP3/ObjectInterfaces.cpp b/opendnp3/DNP3/ObjectInterfaces.cpp similarity index 97% rename from DNP3/ObjectInterfaces.cpp rename to opendnp3/DNP3/ObjectInterfaces.cpp index 69f72698..3e7e1a6d 100644 --- a/DNP3/ObjectInterfaces.cpp +++ b/opendnp3/DNP3/ObjectInterfaces.cpp @@ -14,10 +14,9 @@ // License for the specific language governing permissions and limitations // under the License. // -#include "ObjectInterfaces.h" - -#include "Objects.h" -#include +#include +#include +#include #include diff --git a/DNP3/ObjectInterfaces.h b/opendnp3/DNP3/ObjectInterfaces.h similarity index 99% rename from DNP3/ObjectInterfaces.h rename to opendnp3/DNP3/ObjectInterfaces.h index cddbeff8..92e663de 100644 --- a/DNP3/ObjectInterfaces.h +++ b/opendnp3/DNP3/ObjectInterfaces.h @@ -18,11 +18,11 @@ #ifndef __OBJECT_INTERFACES_H_ #define __OBJECT_INTERFACES_H_ -#include +#include #include -#include #include +#include #include namespace apl diff --git a/DNP3/ObjectReadIterator.cpp b/opendnp3/DNP3/ObjectReadIterator.cpp similarity index 96% rename from DNP3/ObjectReadIterator.cpp rename to opendnp3/DNP3/ObjectReadIterator.cpp index 38b277eb..0f7d4bd7 100644 --- a/DNP3/ObjectReadIterator.cpp +++ b/opendnp3/DNP3/ObjectReadIterator.cpp @@ -16,11 +16,10 @@ // specific language governing permissions and limitations // under the License. // -#include "ObjectReadIterator.h" -#include "ObjectHeader.h" -#include -#include "Objects.h" - +#include +#include +#include +#include namespace apl { diff --git a/DNP3/ObjectReadIterator.h b/opendnp3/DNP3/ObjectReadIterator.h similarity index 95% rename from DNP3/ObjectReadIterator.h rename to opendnp3/DNP3/ObjectReadIterator.h index 93355c58..b1f16c05 100644 --- a/DNP3/ObjectReadIterator.h +++ b/opendnp3/DNP3/ObjectReadIterator.h @@ -19,13 +19,12 @@ #ifndef __OBJECT_READ_ITERATOR_H_ #define __OBJECT_READ_ITERATOR_H_ -#include - -#include +#include +#include +#include +#include -#include "HeaderReadIterator.h" -#include "ObjectHeader.h" -#include "ObjectInterfaces.h" +#include class IObjectHeader; diff --git a/DNP3/ObjectWriteIterator.cpp b/opendnp3/DNP3/ObjectWriteIterator.cpp similarity index 89% rename from DNP3/ObjectWriteIterator.cpp rename to opendnp3/DNP3/ObjectWriteIterator.cpp index b2b15b41..c6e10abf 100644 --- a/DNP3/ObjectWriteIterator.cpp +++ b/opendnp3/DNP3/ObjectWriteIterator.cpp @@ -16,14 +16,10 @@ // specific language governing permissions and limitations // under the License. // -#include "ObjectWriteIterator.h" -#include - - - -#include "ObjectHeader.h" -#include - +#include +#include +#include +#include namespace apl { diff --git a/DNP3/ObjectWriteIterator.h b/opendnp3/DNP3/ObjectWriteIterator.h similarity index 91% rename from DNP3/ObjectWriteIterator.h rename to opendnp3/DNP3/ObjectWriteIterator.h index de3ed96a..87b5ca14 100644 --- a/DNP3/ObjectWriteIterator.h +++ b/opendnp3/DNP3/ObjectWriteIterator.h @@ -19,12 +19,11 @@ #ifndef __OBJECT_WRITE_ITERATOR_H_ #define __OBJECT_WRITE_ITERATOR_H_ +#include +#include +#include +#include -#include -#include - -#include "APDUConstants.h" -#include "ObjectHeader.h" #include #include diff --git a/DNP3/Objects.cpp b/opendnp3/DNP3/Objects.cpp similarity index 98% rename from DNP3/Objects.cpp rename to opendnp3/DNP3/Objects.cpp index 8886001c..52505346 100644 --- a/DNP3/Objects.cpp +++ b/opendnp3/DNP3/Objects.cpp @@ -16,14 +16,12 @@ // specific language governing permissions and limitations // under the License. // -#include "Objects.h" - -#include -#include -#include - -#include "DNPToStream.h" -#include "DNPFromStream.h" +#include +#include +#include +#include +#include +#include #define MACRO_STATIC_INSTANCE(group, var) Group##group##Var##var Group##group##Var##var::mInstance; diff --git a/DNP3/Objects.h b/opendnp3/DNP3/Objects.h similarity index 99% rename from DNP3/Objects.h rename to opendnp3/DNP3/Objects.h index 804e43ea..650243ca 100644 --- a/DNP3/Objects.h +++ b/opendnp3/DNP3/Objects.h @@ -20,14 +20,11 @@ #ifndef __OBJECTS_H_ #define __OBJECTS_H_ - -#include "ObjectInterfaces.h" - -#include -#include -#include -#include - +#include +#include +#include +#include +#include #define MACRO_GROUP_VAR_SIZE_FUNC_WITHOUT_EVENTS(group, var, size)\ MACRO_GROUP_VAR_FUNC(group, var)\ diff --git a/DNP3/PointClass.cpp b/opendnp3/DNP3/PointClass.cpp similarity index 96% rename from DNP3/PointClass.cpp rename to opendnp3/DNP3/PointClass.cpp index f0ef3411..d4abfb7a 100644 --- a/DNP3/PointClass.cpp +++ b/opendnp3/DNP3/PointClass.cpp @@ -16,7 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "PointClass.h" +#include namespace apl { diff --git a/DNP3/PointClass.h b/opendnp3/DNP3/PointClass.h similarity index 100% rename from DNP3/PointClass.h rename to opendnp3/DNP3/PointClass.h diff --git a/DNP3/PriLinkLayerStates.cpp b/opendnp3/DNP3/PriLinkLayerStates.cpp similarity index 96% rename from DNP3/PriLinkLayerStates.cpp rename to opendnp3/DNP3/PriLinkLayerStates.cpp index 1a0d8618..1142ec67 100644 --- a/DNP3/PriLinkLayerStates.cpp +++ b/opendnp3/DNP3/PriLinkLayerStates.cpp @@ -16,14 +16,12 @@ // specific language governing permissions and limitations // under the License. // -#include "PriLinkLayerStates.h" - -#include -#include -#include - -#include "DNPConstants.h" -#include "LinkLayer.h" +#include +#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/PriLinkLayerStates.h b/opendnp3/DNP3/PriLinkLayerStates.h similarity index 96% rename from DNP3/PriLinkLayerStates.h rename to opendnp3/DNP3/PriLinkLayerStates.h index 9029e33e..502b6336 100644 --- a/DNP3/PriLinkLayerStates.h +++ b/opendnp3/DNP3/PriLinkLayerStates.h @@ -19,11 +19,11 @@ #ifndef __PRI_LINK_LAYER_STATES_H_ #define __PRI_LINK_LAYER_STATES_H_ -#include -#include -#include +#include +#include +#include -#include "LinkLayer.h" +#include namespace apl { diff --git a/DNP3/ResponseContext.cpp b/opendnp3/DNP3/ResponseContext.cpp similarity index 97% rename from DNP3/ResponseContext.cpp rename to opendnp3/DNP3/ResponseContext.cpp index 3dfd7b2b..4e42912b 100644 --- a/DNP3/ResponseContext.cpp +++ b/opendnp3/DNP3/ResponseContext.cpp @@ -15,15 +15,14 @@ // under the License. // -#include - -#include -#include +#include +#include +#include +#include +#include +#include -#include "DNPConstants.h" -#include "Objects.h" -#include "ResponseContext.h" -#include "SlaveResponseTypes.h" +#include using namespace boost; @@ -42,7 +41,7 @@ ResponseContext::ResponseKey::ResponseKey(ResponseContext::RequestType aType, si bool ResponseContext::ResponseKey::operator()(const ResponseContext::ResponseKey& a, const ResponseContext::ResponseKey& b) const { if(a.mType < b.mType) return true; else if(a.mType > b.mType) return false; - else { + else { return a.mOrder < b.mOrder; } } @@ -133,7 +132,7 @@ IINField ResponseContext::Configure(const APDU& arRequest) /* Handle all of the objects that have a Group/Variation tuple */ switch (MACRO_DNP_RADIX(hdr->GetGroup(), hdr->GetVariation())) { - + case(MACRO_DNP_RADIX(1, 0)): this->RecordStaticObjects(mpRspTypes->mpStaticBinary, hdr); break; @@ -163,7 +162,7 @@ IINField ResponseContext::Configure(const APDU& arRequest) break; case(MACRO_DNP_RADIX(20, 5)): this->RecordStaticObjects(Group20Var5::Inst(), hdr); - break; + break; case(MACRO_DNP_RADIX(20, 6)): this->RecordStaticObjects(Group20Var6::Inst(), hdr); break; @@ -295,7 +294,7 @@ size_t ResponseContext::SelectVtoEvents(PointClass aClass, const SizeByVariation void ResponseContext::LoadResponse(APDU& arAPDU) { //delay the setting of FIR/FIN until we know if it will be multifragmented or not - arAPDU.Set(FC_RESPONSE); + arAPDU.Set(FC_RESPONSE); bool wrote_all = this->LoadEventData(arAPDU); @@ -326,8 +325,8 @@ void ResponseContext::LoadUnsol(APDU& arAPDU, const IINField& arIIN, ClassMask m { this->SelectUnsol(m); - arAPDU.Set(FC_UNSOLICITED_RESPONSE, true, true, true, true); - this->LoadEventData(arAPDU); + arAPDU.Set(FC_UNSOLICITED_RESPONSE, true, true, true, true); + this->LoadEventData(arAPDU); } bool ResponseContext::LoadEventData(APDU& arAPDU) diff --git a/DNP3/ResponseContext.h b/opendnp3/DNP3/ResponseContext.h similarity index 94% rename from DNP3/ResponseContext.h rename to opendnp3/DNP3/ResponseContext.h index 3157ea14..fed91eae 100644 --- a/DNP3/ResponseContext.h +++ b/opendnp3/DNP3/ResponseContext.h @@ -18,18 +18,17 @@ #ifndef __RESPONSE_CONTEXT_H_ #define __RESPONSE_CONTEXT_H_ -#include +#include +#include +#include +#include +#include +#include + #include +#include #include -#include - -#include "APDU.h" -#include "ClassMask.h" -#include "Database.h" -#include "DNPDatabaseTypes.h" -#include "SlaveEventBuffer.h" - namespace apl { namespace dnp @@ -63,7 +62,7 @@ class ResponseContext : public Loggable //used as a key that decides in what order response headers are packed into APDUs struct ResponseKey { - ResponseKey(); + ResponseKey(); ResponseKey(RequestType aType, size_t aOrder); @@ -73,13 +72,13 @@ class ResponseContext : public Loggable // custom less than function used by STL bool operator()(const ResponseKey& a, const ResponseKey& b) const; }; - + /** * This function takes an APDU, writes some data to it, and modifies the current state of the - * ResponseContext class. It returns true if all of the data was written before the APDU was full, + * ResponseContext class. It returns true if all of the data was written before the APDU was full, * and false otherwise. - */ + */ typedef boost::function WriteFunction; public: @@ -147,7 +146,7 @@ class ResponseContext : public Loggable bool IsEmpty(); bool IsStaticEmpty(); - bool IsEventEmpty(); + bool IsEventEmpty(); Database* mpDB; // Pointer to the database for static data bool mFIR; @@ -156,7 +155,7 @@ class ResponseContext : public Loggable IINField mTempIIN; bool mLoadedEventData; - + template struct EventRequest { EventRequest(const StreamObject* apObj, size_t aCount = std::numeric_limits::max()) : @@ -176,7 +175,7 @@ class ResponseContext : public Loggable const SizeByVariationObject* pObj; // Type to use to write size_t count; // Number of events to read - }; + }; typedef std::map WriteMap; @@ -192,12 +191,12 @@ class ResponseContext : public Loggable BinaryEventQueue mBinaryEvents; AnalogEventQueue mAnalogEvents; CounterEventQueue mCounterEvents; - VtoEventQueue mVtoEvents; + VtoEventQueue mVtoEvents; template bool LoadEvents(APDU& arAPDU, std::deque< EventRequest >& arQueue); - bool LoadVtoEvents(APDU& arAPDU); + bool LoadVtoEvents(APDU& arAPDU); //wrappers that select the event buffer and add to the event queues void SelectEvents(PointClass aClass, size_t aNum = std::numeric_limits::max()); @@ -248,27 +247,27 @@ size_t ResponseContext::SelectEvents(PointClass aClass, const StreamObject* a template void ResponseContext::RecordStaticObjects(StreamObject* apObject, const HeaderReadIterator& arIter) -{ - size_t num = mpDB->NumType(T::MeasType::MeasEnum); - +{ + size_t num = mpDB->NumType(T::MeasType::MeasEnum); + //figure out what type of read request this is switch(arIter->GetHeaderType()) { case(OHT_ALL_OBJECTS): - { + { if(num > 0) this->RecordStaticObjectsByRange(apObject, 0, num - 1); } break; - - case(OHT_RANGED_2_OCTET): - case(OHT_RANGED_4_OCTET): + + case(OHT_RANGED_2_OCTET): + case(OHT_RANGED_4_OCTET): case(OHT_RANGED_8_OCTET): { if(num > 0) { size_t max = num - 1; RangeInfo ri; const IRangeHeader* pHeader = reinterpret_cast(arIter->GetHeader()); - pHeader->GetRange(*arIter, ri); + pHeader->GetRange(*arIter, ri); if(ri.Start > max || ri.Stop > max || ri.Start > ri.Stop) this->mTempIIN.SetParameterError(true); else this->RecordStaticObjectsByRange(apObject, ri.Start, ri.Stop); @@ -287,7 +286,7 @@ void ResponseContext::RecordStaticObjects(StreamObject* ap if(count > 0) { size_t start = 0; size_t stop = count - 1; - + if(start > max || stop > max || start > stop) this->mTempIIN.SetParameterError(true); else this->RecordStaticObjectsByRange(apObject, start, stop); } @@ -296,7 +295,7 @@ void ResponseContext::RecordStaticObjects(StreamObject* ap else this->mTempIIN.SetParameterError(true); } break; - } + } } template @@ -306,9 +305,9 @@ void ResponseContext::RecordStaticObjectsByRange(StreamObject::Type last; mpDB->Begin(first); last = first + aStop; - first = first + aStart; + first = first + aStart; ResponseKey key(RT_STATIC, this->mStaticWriteMap.size()); - WriteFunction func = boost::bind(&ResponseContext::WriteStaticObjects, this, apObject, first, last, key, _1); + WriteFunction func = boost::bind(&ResponseContext::WriteStaticObjects, this, apObject, first, last, key, _1); this->mStaticWriteMap[key] = func; } @@ -316,20 +315,20 @@ template bool ResponseContext::WriteStaticObjects(StreamObject* apObject, typename StaticIter::Type& arStart, typename StaticIter::Type& arStop, const ResponseKey& arKey, APDU& arAPDU) { size_t start = arStart->mIndex; - size_t stop = arStop->mIndex; + size_t stop = arStop->mIndex; ObjectWriteIterator owi = arAPDU.WriteContiguous(apObject, start, stop); for(size_t i = start; i <= stop; ++i) { if(owi.IsEnd()) { // out of space in the fragment this->mStaticWriteMap[arKey] = boost::bind(&ResponseContext::WriteStaticObjects, this, apObject, arStart, arStop, arKey, _1); - return false; + return false; } apObject->Write(*owi, arStart->mValue); ++arStart; //increment the iterators ++owi; } - return true; + return true; } template diff --git a/DNP3/ResponseLoader.cpp b/opendnp3/DNP3/ResponseLoader.cpp similarity index 97% rename from DNP3/ResponseLoader.cpp rename to opendnp3/DNP3/ResponseLoader.cpp index a547afed..1f2ce42e 100644 --- a/DNP3/ResponseLoader.cpp +++ b/opendnp3/DNP3/ResponseLoader.cpp @@ -16,12 +16,10 @@ // specific language governing permissions and limitations // under the License. // -#include "ResponseLoader.h" - -#include - -#include "HeaderReadIterator.h" -#include "Objects.h" +#include +#include +#include +#include namespace apl { diff --git a/DNP3/ResponseLoader.h b/opendnp3/DNP3/ResponseLoader.h similarity index 94% rename from DNP3/ResponseLoader.h rename to opendnp3/DNP3/ResponseLoader.h index 0058856a..3f97e43a 100644 --- a/DNP3/ResponseLoader.h +++ b/opendnp3/DNP3/ResponseLoader.h @@ -18,16 +18,14 @@ #ifndef __RESPONSE_LOADER_H_ #define __RESPONSE_LOADER_H_ - -#include -#include -#include -#include - -#include "CTOHistory.h" -#include "ObjectInterfaces.h" -#include "ObjectReadIterator.h" -#include "VtoReader.h" +#include +#include +#include +#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/SecLinkLayerStates.cpp b/opendnp3/DNP3/SecLinkLayerStates.cpp similarity index 92% rename from DNP3/SecLinkLayerStates.cpp rename to opendnp3/DNP3/SecLinkLayerStates.cpp index 4c0ca77e..260cfe7d 100644 --- a/DNP3/SecLinkLayerStates.cpp +++ b/opendnp3/DNP3/SecLinkLayerStates.cpp @@ -16,14 +16,12 @@ // specific language governing permissions and limitations // under the License. // -#include "SecLinkLayerStates.h" - -#include -#include -#include - -#include "DNPConstants.h" -#include "LinkLayer.h" +#include +#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/SecLinkLayerStates.h b/opendnp3/DNP3/SecLinkLayerStates.h similarity index 95% rename from DNP3/SecLinkLayerStates.h rename to opendnp3/DNP3/SecLinkLayerStates.h index e61961f9..d3ebf3e7 100644 --- a/DNP3/SecLinkLayerStates.h +++ b/opendnp3/DNP3/SecLinkLayerStates.h @@ -19,11 +19,11 @@ #ifndef __SEC_LINK_LAYER_STATES_H_ #define __SEC_LINK_LAYER_STATES_H_ -#include -#include -#include +#include +#include +#include -#include "LinkLayer.h" +#include namespace apl { diff --git a/DNP3/Slave.cpp b/opendnp3/DNP3/Slave.cpp similarity index 97% rename from DNP3/Slave.cpp rename to opendnp3/DNP3/Slave.cpp index dd789027..3e51bde1 100644 --- a/DNP3/Slave.cpp +++ b/opendnp3/DNP3/Slave.cpp @@ -15,18 +15,15 @@ // under the License. // -#include "Slave.h" - - -#include "SlaveStates.h" -#include "Database.h" -#include "DNPExceptions.h" -#include "ObjectReadIterator.h" - -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include @@ -407,7 +404,7 @@ void Slave::HandleVtoTransfer(const APDU& arRequest) } void Slave::HandleWrite(const APDU& arRequest) -{ +{ for (HeaderReadIterator hdr = arRequest.BeginRead(); !hdr.IsEnd(); ++hdr) { switch (hdr->GetGroup()) { case 112: diff --git a/DNP3/Slave.h b/opendnp3/DNP3/Slave.h similarity index 93% rename from DNP3/Slave.h rename to opendnp3/DNP3/Slave.h index ca58c86e..db0dff1c 100644 --- a/DNP3/Slave.h +++ b/opendnp3/DNP3/Slave.h @@ -18,27 +18,26 @@ #ifndef __SLAVE_H_ #define __SLAVE_H_ -#include -#include -#include -#include -#include -#include -#include -#include - -#include "APDU.h" -#include "AppInterfaces.h" -#include "DNPCommandMaster.h" -#include "EventBuffers.h" -#include "ObjectReadIterator.h" -#include "ResponseContext.h" -#include "SlaveConfig.h" -#include "SlaveEventBuffer.h" -#include "SlaveResponseTypes.h" -#include "VtoReader.h" -#include "VtoWriter.h" -#include "IStackObserver.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/SlaveConfig.cpp b/opendnp3/DNP3/SlaveConfig.cpp similarity index 96% rename from DNP3/SlaveConfig.cpp rename to opendnp3/DNP3/SlaveConfig.cpp index 1b497a68..fd49fcbf 100644 --- a/DNP3/SlaveConfig.cpp +++ b/opendnp3/DNP3/SlaveConfig.cpp @@ -17,8 +17,8 @@ // under the License. // -#include "DNPConstants.h" -#include "SlaveConfig.h" +#include +#include namespace apl { diff --git a/DNP3/SlaveConfig.h b/opendnp3/DNP3/SlaveConfig.h similarity index 97% rename from DNP3/SlaveConfig.h rename to opendnp3/DNP3/SlaveConfig.h index 023877ed..8672e602 100644 --- a/DNP3/SlaveConfig.h +++ b/opendnp3/DNP3/SlaveConfig.h @@ -19,12 +19,11 @@ #ifndef __SLAVE_CONFIG_H_ #define __SLAVE_CONFIG_H_ -#include - -#include +#include +#include +#include -#include "ClassMask.h" -#include "ObjectInterfaces.h" +#include namespace apl { diff --git a/DNP3/SlaveEventBuffer.cpp b/opendnp3/DNP3/SlaveEventBuffer.cpp similarity index 98% rename from DNP3/SlaveEventBuffer.cpp rename to opendnp3/DNP3/SlaveEventBuffer.cpp index 3c9874e9..2d146d41 100644 --- a/DNP3/SlaveEventBuffer.cpp +++ b/opendnp3/DNP3/SlaveEventBuffer.cpp @@ -15,9 +15,8 @@ // under the License. // -#include "SlaveEventBuffer.h" - -#include +#include +#include namespace apl { diff --git a/DNP3/SlaveEventBuffer.h b/opendnp3/DNP3/SlaveEventBuffer.h similarity index 96% rename from DNP3/SlaveEventBuffer.h rename to opendnp3/DNP3/SlaveEventBuffer.h index f2bccdc1..65c6e92c 100644 --- a/DNP3/SlaveEventBuffer.h +++ b/opendnp3/DNP3/SlaveEventBuffer.h @@ -18,13 +18,12 @@ #ifndef __SLAVE_EVENT_BUFFER_H_ #define __SLAVE_EVENT_BUFFER_H_ -#include - -#include "BufferTypes.h" -#include "DatabaseInterfaces.h" -#include "DNPDatabaseTypes.h" -#include "EventBuffers.h" -#include "SlaveConfig.h" +#include +#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/SlaveResponseTypes.cpp b/opendnp3/DNP3/SlaveResponseTypes.cpp similarity index 96% rename from DNP3/SlaveResponseTypes.cpp rename to opendnp3/DNP3/SlaveResponseTypes.cpp index 5ce9f241..8c125e22 100644 --- a/DNP3/SlaveResponseTypes.cpp +++ b/opendnp3/DNP3/SlaveResponseTypes.cpp @@ -16,12 +16,10 @@ // specific language governing permissions and limitations // under the License. // -#include "SlaveResponseTypes.h" - -#include "SlaveConfig.h" -#include "Objects.h" - -#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/SlaveResponseTypes.h b/opendnp3/DNP3/SlaveResponseTypes.h similarity index 96% rename from DNP3/SlaveResponseTypes.h rename to opendnp3/DNP3/SlaveResponseTypes.h index 780749d5..a43164be 100644 --- a/DNP3/SlaveResponseTypes.h +++ b/opendnp3/DNP3/SlaveResponseTypes.h @@ -19,8 +19,8 @@ #ifndef __SLAVE_RESPONSE_TYPES_H_ #define __SLAVE_RESPONSE_TYPES_H_ -#include "ObjectInterfaces.h" -#include +#include +#include namespace apl { diff --git a/DNP3/SlaveStack.cpp b/opendnp3/DNP3/SlaveStack.cpp similarity index 97% rename from DNP3/SlaveStack.cpp rename to opendnp3/DNP3/SlaveStack.cpp index 9b4a93d6..627d1ce4 100644 --- a/DNP3/SlaveStack.cpp +++ b/opendnp3/DNP3/SlaveStack.cpp @@ -16,7 +16,7 @@ // specific language governing permissions and limitations // under the License. // -#include "SlaveStack.h" +#include namespace apl { @@ -45,4 +45,4 @@ IVtoReader* SlaveStack::GetVtoReader() } } -} \ No newline at end of file +} diff --git a/DNP3/SlaveStack.h b/opendnp3/DNP3/SlaveStack.h similarity index 88% rename from DNP3/SlaveStack.h rename to opendnp3/DNP3/SlaveStack.h index ff842479..61fe4f72 100644 --- a/DNP3/SlaveStack.h +++ b/opendnp3/DNP3/SlaveStack.h @@ -19,12 +19,12 @@ #ifndef __SLAVE_STACK_H_ #define __SLAVE_STACK_H_ -#include "Stack.h" -#include "Slave.h" -#include "Database.h" -#include "DNPCommandMaster.h" -#include "SlaveStackConfig.h" -#include +#include +#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/SlaveStackConfig.h b/opendnp3/DNP3/SlaveStackConfig.h similarity index 87% rename from DNP3/SlaveStackConfig.h rename to opendnp3/DNP3/SlaveStackConfig.h index 03d3fa22..a7fb68a8 100644 --- a/DNP3/SlaveStackConfig.h +++ b/opendnp3/DNP3/SlaveStackConfig.h @@ -19,11 +19,11 @@ #ifndef __SLAVE_STACK_CONFIG_H_ #define __SLAVE_STACK_CONFIG_H_ -#include "SlaveConfig.h" -#include "DeviceTemplate.h" -#include "AppConfig.h" -#include "LinkConfig.h" -#include "VtoConfig.h" +#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/SlaveStates.cpp b/opendnp3/DNP3/SlaveStates.cpp similarity index 97% rename from DNP3/SlaveStates.cpp rename to opendnp3/DNP3/SlaveStates.cpp index 2a923d4f..ec0702d4 100644 --- a/DNP3/SlaveStates.cpp +++ b/opendnp3/DNP3/SlaveStates.cpp @@ -15,14 +15,12 @@ // under the License. // -#include "SlaveStates.h" - -#include "Slave.h" -#include "DNPExceptions.h" - -#include -#include -#include +#include +#include +#include +#include +#include +#include #include diff --git a/DNP3/SlaveStates.h b/opendnp3/DNP3/SlaveStates.h similarity index 97% rename from DNP3/SlaveStates.h rename to opendnp3/DNP3/SlaveStates.h index cbfc295e..e3d62683 100644 --- a/DNP3/SlaveStates.h +++ b/opendnp3/DNP3/SlaveStates.h @@ -18,10 +18,11 @@ #ifndef __SLAVE_STATES_H_ #define __SLAVE_STATES_H_ +#include +#include +#include + #include -#include -#include -#include namespace apl { diff --git a/DNP3/SolicitedChannel.cpp b/opendnp3/DNP3/SolicitedChannel.cpp similarity index 92% rename from DNP3/SolicitedChannel.cpp rename to opendnp3/DNP3/SolicitedChannel.cpp index f5e53ef7..335e53b1 100644 --- a/DNP3/SolicitedChannel.cpp +++ b/opendnp3/DNP3/SolicitedChannel.cpp @@ -16,11 +16,10 @@ // specific language governing permissions and limitations // under the License. // -#include "SolicitedChannel.h" - -#include "AppLayer.h" -#include "AppChannelStates.h" -#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/SolicitedChannel.h b/opendnp3/DNP3/SolicitedChannel.h similarity index 97% rename from DNP3/SolicitedChannel.h rename to opendnp3/DNP3/SolicitedChannel.h index d023ca96..2bfc6d57 100644 --- a/DNP3/SolicitedChannel.h +++ b/opendnp3/DNP3/SolicitedChannel.h @@ -19,7 +19,7 @@ #ifndef __SOLICITED_CHANNEL_H_ #define __SOLICITED_CHANNEL_H_ -#include "AppLayerChannel.h" +#include namespace apl { diff --git a/DNP3/Stack.cpp b/opendnp3/DNP3/Stack.cpp similarity index 94% rename from DNP3/Stack.cpp rename to opendnp3/DNP3/Stack.cpp index 0f8c346d..5c56bccf 100644 --- a/DNP3/Stack.cpp +++ b/opendnp3/DNP3/Stack.cpp @@ -16,9 +16,8 @@ // specific language governing permissions and limitations // under the License. // -#include "Stack.h" - -#include +#include +#include namespace apl { diff --git a/DNP3/Stack.h b/opendnp3/DNP3/Stack.h similarity index 88% rename from DNP3/Stack.h rename to opendnp3/DNP3/Stack.h index 951a5f35..c8f7fbfb 100644 --- a/DNP3/Stack.h +++ b/opendnp3/DNP3/Stack.h @@ -19,11 +19,11 @@ #ifndef __STACK_H_ #define __STACK_H_ -#include "LinkLayer.h" -#include "TransportLayer.h" -#include "AppLayer.h" -#include "VtoDataInterface.h" -#include "VtoReader.h" +#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/StackManager.cpp b/opendnp3/DNP3/StackManager.cpp similarity index 97% rename from DNP3/StackManager.cpp rename to opendnp3/DNP3/StackManager.cpp index f2c28b78..2dffd3cb 100644 --- a/DNP3/StackManager.cpp +++ b/opendnp3/DNP3/StackManager.cpp @@ -15,10 +15,9 @@ // implied. See the License for the specific language governing // permissions and limitations under the License. // -#include "StackManager.h" - -#include -#include +#include +#include +#include namespace apl { diff --git a/DNP3/StackManager.h b/opendnp3/DNP3/StackManager.h similarity index 92% rename from DNP3/StackManager.h rename to opendnp3/DNP3/StackManager.h index c06fd18b..5f7680b2 100644 --- a/DNP3/StackManager.h +++ b/opendnp3/DNP3/StackManager.h @@ -18,15 +18,14 @@ #ifndef __STACK_MANAGER_H_ #define __STACK_MANAGER_H_ -#include -#include -#include -#include -#include - -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include diff --git a/DNP3/StartupTasks.cpp b/opendnp3/DNP3/StartupTasks.cpp similarity index 94% rename from DNP3/StartupTasks.cpp rename to opendnp3/DNP3/StartupTasks.cpp index 6a2a10f7..0b648480 100644 --- a/DNP3/StartupTasks.cpp +++ b/opendnp3/DNP3/StartupTasks.cpp @@ -16,13 +16,12 @@ // specific language governing permissions and limitations // under the License. // -#include "StartupTasks.h" - -#include "APDU.h" -#include "ObjectReadIterator.h" -#include "PointClass.h" -#include -#include +#include +#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/StartupTasks.h b/opendnp3/DNP3/StartupTasks.h similarity index 96% rename from DNP3/StartupTasks.h rename to opendnp3/DNP3/StartupTasks.h index 190ca88e..e7ce3e3c 100644 --- a/DNP3/StartupTasks.h +++ b/opendnp3/DNP3/StartupTasks.h @@ -19,8 +19,9 @@ #ifndef __STARTUP_TASKS_H_ #define __STARTUP_TASKS_H_ -#include -#include "MasterTaskBase.h" +#include +#include + #include namespace apl diff --git a/DNP3/TLS_Base.cpp b/opendnp3/DNP3/TLS_Base.cpp similarity index 93% rename from DNP3/TLS_Base.cpp rename to opendnp3/DNP3/TLS_Base.cpp index 3e36d490..1c888ccb 100644 --- a/DNP3/TLS_Base.cpp +++ b/opendnp3/DNP3/TLS_Base.cpp @@ -16,12 +16,9 @@ // specific language governing permissions and limitations // under the License. // -#include "TLS_Base.h" - - - -#include "TransportLayer.h" -#include +#include +#include +#include namespace apl { diff --git a/DNP3/TLS_Base.h b/opendnp3/DNP3/TLS_Base.h similarity index 95% rename from DNP3/TLS_Base.h rename to opendnp3/DNP3/TLS_Base.h index 8538701f..f270287b 100644 --- a/DNP3/TLS_Base.h +++ b/opendnp3/DNP3/TLS_Base.h @@ -19,9 +19,8 @@ #ifndef __TLS_BASE_H_ #define __TLS_BASE_H_ - -#include -#include +#include +#include #include diff --git a/DNP3/TransportConstants.h b/opendnp3/DNP3/TransportConstants.h similarity index 96% rename from DNP3/TransportConstants.h rename to opendnp3/DNP3/TransportConstants.h index d40007cf..ad1f80dc 100644 --- a/DNP3/TransportConstants.h +++ b/opendnp3/DNP3/TransportConstants.h @@ -19,8 +19,7 @@ #ifndef __TRANSPORT_CONSTANTS_H_ #define __TRANSPORT_CONSTANTS_H_ - -#include "DNPConstants.h" +#include namespace apl { diff --git a/DNP3/TransportLayer.cpp b/opendnp3/DNP3/TransportLayer.cpp similarity index 95% rename from DNP3/TransportLayer.cpp rename to opendnp3/DNP3/TransportLayer.cpp index 04db3ca0..fab607c8 100644 --- a/DNP3/TransportLayer.cpp +++ b/opendnp3/DNP3/TransportLayer.cpp @@ -16,20 +16,15 @@ // specific language governing permissions and limitations // under the License. // -#include "TransportLayer.h" - -#include -#include - - -#include "TransportConstants.h" +#include +#include +#include +#include +#include #include #include - -#include "TransportStates.h" - using namespace std; namespace apl diff --git a/DNP3/TransportLayer.h b/opendnp3/DNP3/TransportLayer.h similarity index 93% rename from DNP3/TransportLayer.h rename to opendnp3/DNP3/TransportLayer.h index 2f8e523b..591a1cce 100644 --- a/DNP3/TransportLayer.h +++ b/opendnp3/DNP3/TransportLayer.h @@ -19,14 +19,10 @@ #ifndef __TRANSPORT_LAYER_H_ #define __TRANSPORT_LAYER_H_ - - -#include "TransportRx.h" -#include "TransportTx.h" - -#include "DNPConstants.h" - -#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/TransportRx.cpp b/opendnp3/DNP3/TransportRx.cpp similarity index 94% rename from DNP3/TransportRx.cpp rename to opendnp3/DNP3/TransportRx.cpp index be373e01..fb95a98f 100644 --- a/DNP3/TransportRx.cpp +++ b/opendnp3/DNP3/TransportRx.cpp @@ -16,15 +16,14 @@ // specific language governing permissions and limitations // under the License. // -#include "TransportRx.h" +#include +#include +#include +#include +#include -#include "TransportLayer.h" -#include "TransportConstants.h" -#include -#include - -#include #include +#include using namespace std; diff --git a/DNP3/TransportRx.h b/opendnp3/DNP3/TransportRx.h similarity index 90% rename from DNP3/TransportRx.h rename to opendnp3/DNP3/TransportRx.h index e47c3008..d050ccd4 100644 --- a/DNP3/TransportRx.h +++ b/opendnp3/DNP3/TransportRx.h @@ -19,12 +19,10 @@ #ifndef __TRANSPORT_RX_H_ #define __TRANSPORT_RX_H_ - -#include -#include -#include - -#include "TransportConstants.h" +#include +#include +#include +#include namespace apl { diff --git a/DNP3/TransportStates.cpp b/opendnp3/DNP3/TransportStates.cpp similarity index 96% rename from DNP3/TransportStates.cpp rename to opendnp3/DNP3/TransportStates.cpp index 39ef1474..57791226 100644 --- a/DNP3/TransportStates.cpp +++ b/opendnp3/DNP3/TransportStates.cpp @@ -16,9 +16,8 @@ // specific language governing permissions and limitations // under the License. // -#include "TransportStates.h" - -#include "TransportLayer.h" +#include +#include namespace apl { diff --git a/DNP3/TransportStates.h b/opendnp3/DNP3/TransportStates.h similarity index 95% rename from DNP3/TransportStates.h rename to opendnp3/DNP3/TransportStates.h index 29c525e0..a2bc58dd 100644 --- a/DNP3/TransportStates.h +++ b/opendnp3/DNP3/TransportStates.h @@ -19,9 +19,8 @@ #ifndef __TRANSPORT_STATES_H_ #define __TRANSPORT_STATES_H_ - -#include "TLS_Base.h" -#include +#include +#include namespace apl { diff --git a/DNP3/TransportTx.cpp b/opendnp3/DNP3/TransportTx.cpp similarity index 94% rename from DNP3/TransportTx.cpp rename to opendnp3/DNP3/TransportTx.cpp index bc94070b..626c817c 100644 --- a/DNP3/TransportTx.cpp +++ b/opendnp3/DNP3/TransportTx.cpp @@ -16,16 +16,14 @@ // specific language governing permissions and limitations // under the License. // -#include "TransportTx.h" - - -#include "TransportLayer.h" -#include -#include +#include +#include +#include +#include #include -#include #include +#include using namespace std; diff --git a/DNP3/TransportTx.h b/opendnp3/DNP3/TransportTx.h similarity index 90% rename from DNP3/TransportTx.h rename to opendnp3/DNP3/TransportTx.h index ac6c569f..99985f99 100644 --- a/DNP3/TransportTx.h +++ b/opendnp3/DNP3/TransportTx.h @@ -19,12 +19,10 @@ #ifndef __TRANSPORT_TX_H_ #define __TRANSPORT_TX_H_ - -#include -#include -#include - -#include "TransportConstants.h" +#include +#include +#include +#include namespace apl { diff --git a/DNP3/UnsolicitedChannel.cpp b/opendnp3/DNP3/UnsolicitedChannel.cpp similarity index 93% rename from DNP3/UnsolicitedChannel.cpp rename to opendnp3/DNP3/UnsolicitedChannel.cpp index c6041c05..586a61e7 100644 --- a/DNP3/UnsolicitedChannel.cpp +++ b/opendnp3/DNP3/UnsolicitedChannel.cpp @@ -16,10 +16,9 @@ // specific language governing permissions and limitations // under the License. // -#include "UnsolicitedChannel.h" - -#include -#include "AppLayer.h" +#include +#include +#include namespace apl { diff --git a/DNP3/UnsolicitedChannel.h b/opendnp3/DNP3/UnsolicitedChannel.h similarity index 97% rename from DNP3/UnsolicitedChannel.h rename to opendnp3/DNP3/UnsolicitedChannel.h index 2465ad27..33f007f0 100644 --- a/DNP3/UnsolicitedChannel.h +++ b/opendnp3/DNP3/UnsolicitedChannel.h @@ -19,7 +19,7 @@ #ifndef __UNSOLICITED_CHANNEL_H_ #define __UNSOLICITED_CHANNEL_H_ -#include "AppLayerChannel.h" +#include namespace apl { diff --git a/DNP3/VtoConfig.h b/opendnp3/DNP3/VtoConfig.h similarity index 96% rename from DNP3/VtoConfig.h rename to opendnp3/DNP3/VtoConfig.h index cdea2aa8..c8a623be 100644 --- a/DNP3/VtoConfig.h +++ b/opendnp3/DNP3/VtoConfig.h @@ -19,7 +19,7 @@ #ifndef __VTO_CONFIG_H_ #define __VTO_CONFIG_H_ -#include "VtoRouterSettings.h" +#include namespace apl { diff --git a/DNP3/VtoData.cpp b/opendnp3/DNP3/VtoData.cpp similarity index 98% rename from DNP3/VtoData.cpp rename to opendnp3/DNP3/VtoData.cpp index 9348fd84..e73216f7 100644 --- a/DNP3/VtoData.cpp +++ b/opendnp3/DNP3/VtoData.cpp @@ -15,7 +15,7 @@ // under the License. // -#include "VtoData.h" +#include #include #include diff --git a/DNP3/VtoData.h b/opendnp3/DNP3/VtoData.h similarity index 97% rename from DNP3/VtoData.h rename to opendnp3/DNP3/VtoData.h index 5da769dc..c5b236e5 100644 --- a/DNP3/VtoData.h +++ b/opendnp3/DNP3/VtoData.h @@ -18,7 +18,7 @@ #ifndef __VTO_DATA_H_ #define __VTO_DATA_H_ -#include +#include #include diff --git a/DNP3/VtoDataInterface.h b/opendnp3/DNP3/VtoDataInterface.h similarity index 97% rename from DNP3/VtoDataInterface.h rename to opendnp3/DNP3/VtoDataInterface.h index 7506e2a4..a9ba8de9 100644 --- a/DNP3/VtoDataInterface.h +++ b/opendnp3/DNP3/VtoDataInterface.h @@ -18,12 +18,11 @@ #ifndef __VTO_DATA_INTERFACE_H_ #define __VTO_DATA_INTERFACE_H_ -#include - -#include +#include +#include +#include -#include "EventTypes.h" -#include "ObjectInterfaces.h" +#include namespace apl { diff --git a/DNP3/VtoEventBufferAdapter.h b/opendnp3/DNP3/VtoEventBufferAdapter.h old mode 100755 new mode 100644 similarity index 93% rename from DNP3/VtoEventBufferAdapter.h rename to opendnp3/DNP3/VtoEventBufferAdapter.h index 6ed4530b..f953c2e5 --- a/DNP3/VtoEventBufferAdapter.h +++ b/opendnp3/DNP3/VtoEventBufferAdapter.h @@ -18,8 +18,8 @@ #ifndef __VTO_EVENT_BUFFER_ADAPTER_H_ #define __VTO_EVENT_BUFFER_ADAPTER_H_ -#include "EventBufferBase.h" -#include "IVtoEventAcceptor.h" +#include +#include namespace apl { diff --git a/DNP3/VtoReader.cpp b/opendnp3/DNP3/VtoReader.cpp similarity index 94% rename from DNP3/VtoReader.cpp rename to opendnp3/DNP3/VtoReader.cpp index 09b651e7..14f68440 100644 --- a/DNP3/VtoReader.cpp +++ b/opendnp3/DNP3/VtoReader.cpp @@ -15,13 +15,11 @@ * under the License. */ -#include "VtoReader.h" - -#include "DNPConstants.h" -#include "EnhancedVto.h" - -#include -#include +#include +#include +#include +#include +#include #include diff --git a/DNP3/VtoReader.h b/opendnp3/DNP3/VtoReader.h similarity index 93% rename from DNP3/VtoReader.h rename to opendnp3/DNP3/VtoReader.h index 072860b7..ecf52638 100644 --- a/DNP3/VtoReader.h +++ b/opendnp3/DNP3/VtoReader.h @@ -18,15 +18,14 @@ #ifndef __VTO_READER_H_ #define __VTO_READER_H_ -#include - -#include -#include -#include +#include +#include +#include +#include +#include +#include -#include "VtoDataInterface.h" -#include "VtoData.h" -#include "IStackObserver.h" +#include namespace apl { diff --git a/DNP3/VtoRouter.cpp b/opendnp3/DNP3/VtoRouter.cpp similarity index 95% rename from DNP3/VtoRouter.cpp rename to opendnp3/DNP3/VtoRouter.cpp index 2d653cd6..1c6003f9 100644 --- a/DNP3/VtoRouter.cpp +++ b/opendnp3/DNP3/VtoRouter.cpp @@ -15,18 +15,16 @@ * under the License. */ -#include "VtoRouter.h" +#include +#include +#include +#include +#include +#include +#include #include -#include -#include -#include -#include - -#include "VtoReader.h" -#include "VtoRouterSettings.h" - namespace apl { namespace dnp diff --git a/DNP3/VtoRouter.h b/opendnp3/DNP3/VtoRouter.h similarity index 97% rename from DNP3/VtoRouter.h rename to opendnp3/DNP3/VtoRouter.h index 3aee1cd7..d0d031a6 100644 --- a/DNP3/VtoRouter.h +++ b/opendnp3/DNP3/VtoRouter.h @@ -18,15 +18,14 @@ #ifndef __VTO_ROUTER_H_ #define __VTO_ROUTER_H_ +#include +#include +#include +#include + #include #include -#include -#include -#include - -#include "VtoDataInterface.h" - namespace apl { diff --git a/DNP3/VtoRouterManager.cpp b/opendnp3/DNP3/VtoRouterManager.cpp similarity index 93% rename from DNP3/VtoRouterManager.cpp rename to opendnp3/DNP3/VtoRouterManager.cpp index a07fb42a..c8f69769 100644 --- a/DNP3/VtoRouterManager.cpp +++ b/opendnp3/DNP3/VtoRouterManager.cpp @@ -15,20 +15,17 @@ * under the License. */ -#include "VtoRouterManager.h" - -#include "AlwaysOpeningVtoRouter.h" -#include "EnhancedVtoRouter.h" -#include "VtoRouterSettings.h" - -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include -#include #include namespace apl diff --git a/DNP3/VtoRouterManager.h b/opendnp3/DNP3/VtoRouterManager.h similarity index 94% rename from DNP3/VtoRouterManager.h rename to opendnp3/DNP3/VtoRouterManager.h index ae68da86..96635bba 100644 --- a/DNP3/VtoRouterManager.h +++ b/opendnp3/DNP3/VtoRouterManager.h @@ -18,13 +18,13 @@ #ifndef __VTO_ROUTER_MANAGER_H_ #define __VTO_ROUTER_MANAGER_H_ -#include -#include +#include +#include +#include +#include -#include -#include -#include -#include +#include +#include namespace apl { diff --git a/DNP3/VtoRouterSettings.cpp b/opendnp3/DNP3/VtoRouterSettings.cpp similarity index 96% rename from DNP3/VtoRouterSettings.cpp rename to opendnp3/DNP3/VtoRouterSettings.cpp index 9df4e62b..34b9c4ca 100644 --- a/DNP3/VtoRouterSettings.cpp +++ b/opendnp3/DNP3/VtoRouterSettings.cpp @@ -15,7 +15,7 @@ * under the License. */ -#include "VtoRouterSettings.h" +#include namespace apl { diff --git a/DNP3/VtoRouterSettings.h b/opendnp3/DNP3/VtoRouterSettings.h similarity index 98% rename from DNP3/VtoRouterSettings.h rename to opendnp3/DNP3/VtoRouterSettings.h index 5f76295d..e0b92298 100644 --- a/DNP3/VtoRouterSettings.h +++ b/opendnp3/DNP3/VtoRouterSettings.h @@ -18,7 +18,7 @@ #ifndef __VTO_ROUTER_SETTINGS_H_ #define __VTO_ROUTER_SETTINGS_H_ -#include +#include namespace apl { diff --git a/DNP3/VtoTransmitTask.cpp b/opendnp3/DNP3/VtoTransmitTask.cpp similarity index 96% rename from DNP3/VtoTransmitTask.cpp rename to opendnp3/DNP3/VtoTransmitTask.cpp index 02becf0e..ba8a9647 100644 --- a/DNP3/VtoTransmitTask.cpp +++ b/opendnp3/DNP3/VtoTransmitTask.cpp @@ -15,10 +15,9 @@ * under the License. */ -#include - -#include "APDU.h" -#include "VtoTransmitTask.h" +#include +#include +#include using namespace apl; using namespace apl::dnp; diff --git a/DNP3/VtoTransmitTask.h b/opendnp3/DNP3/VtoTransmitTask.h similarity index 96% rename from DNP3/VtoTransmitTask.h rename to opendnp3/DNP3/VtoTransmitTask.h index 96a5d8df..971b92d4 100644 --- a/DNP3/VtoTransmitTask.h +++ b/opendnp3/DNP3/VtoTransmitTask.h @@ -18,10 +18,10 @@ #ifndef __VTO_WRITER_TO_BUFFER_TASK_H_ #define __VTO_WRITER_TO_BUFFER_TASK_H_ -#include +#include +#include -#include "EventBuffers.h" -#include "MasterTaskBase.h" +#include using namespace apl; @@ -100,7 +100,7 @@ class VtoTransmitTask : public MasterTaskBase protected: - /** FC_WRITE can't be retried so, another code is needed to + /** FC_WRITE can't be retried so, another code is needed to * make a reliable stream in the MASTER -> SLAVE direction */ bool mUseNonStandardCode; diff --git a/DNP3/VtoWriter.cpp b/opendnp3/DNP3/VtoWriter.cpp similarity index 97% rename from DNP3/VtoWriter.cpp rename to opendnp3/DNP3/VtoWriter.cpp index 8b423964..efab341d 100644 --- a/DNP3/VtoWriter.cpp +++ b/opendnp3/DNP3/VtoWriter.cpp @@ -15,11 +15,10 @@ * under the License. */ -#include "VtoWriter.h" -#include "EnhancedVto.h" - -#include -#include +#include +#include +#include +#include namespace apl { diff --git a/DNP3/VtoWriter.h b/opendnp3/DNP3/VtoWriter.h similarity index 92% rename from DNP3/VtoWriter.h rename to opendnp3/DNP3/VtoWriter.h index e67f44b0..7c775d0d 100644 --- a/DNP3/VtoWriter.h +++ b/opendnp3/DNP3/VtoWriter.h @@ -18,19 +18,18 @@ #ifndef __VTO_WRITER_H_ #define __VTO_WRITER_H_ +#include +#include +#include +#include +#include +#include +#include +#include + #include #include -#include -#include -#include -#include - -#include "EventTypes.h" -#include "VtoDataInterface.h" -#include "VtoData.h" -#include "IVtoEventAcceptor.h" - namespace apl { namespace dnp diff --git a/DNP3/rake.project.rb b/opendnp3/DNP3/rake.project.rb similarity index 100% rename from DNP3/rake.project.rb rename to opendnp3/DNP3/rake.project.rb diff --git a/version.hpp b/opendnp3/version.hpp similarity index 100% rename from version.hpp rename to opendnp3/version.hpp From a62a6de29a562958776af09c74d55ccb785eb948 Mon Sep 17 00:00:00 2001 From: Lukas Rist Date: Tue, 16 Apr 2013 12:44:33 +0300 Subject: [PATCH 25/51] Missing declaration --- DNP3XML/XmlToConfig.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DNP3XML/XmlToConfig.cpp b/DNP3XML/XmlToConfig.cpp index b26d2ad2..5d55da77 100644 --- a/DNP3XML/XmlToConfig.cpp +++ b/DNP3XML/XmlToConfig.cpp @@ -222,7 +222,7 @@ DeviceTemplate XmlToConfig::Convert(const APLXML_DNP::DeviceTemplate_t& arCfg, b return t; } -CommandModes ConvertMode(const std::string& arMode) +CommandModes XmlToConfig::ConvertMode(const std::string& arMode) { if(arMode == "SBO") return CM_SBO_ONLY; if(arMode == "DO_ONLY") return CM_DO_ONLY; From b946c88f067b69a55afe6d894dc08fceadb08db7 Mon Sep 17 00:00:00 2001 From: Lukas Rist Date: Tue, 16 Apr 2013 12:45:31 +0300 Subject: [PATCH 26/51] Missing declaration --- DNP3XML/XmlToConfig.h | 1 + 1 file changed, 1 insertion(+) diff --git a/DNP3XML/XmlToConfig.h b/DNP3XML/XmlToConfig.h index 022a8e1a..91e90930 100644 --- a/DNP3XML/XmlToConfig.h +++ b/DNP3XML/XmlToConfig.h @@ -83,6 +83,7 @@ class XmlToConfig static SlaveConfig Convert(const APLXML_DNP::SlaveConfig_t& arCfg, const APLXML_DNP::AppLayer_t& arApp); static VtoConfig Convert(const APLXML_DNP::VtoPorts_t& arCfg); static DeviceTemplate Convert( const APLXML_DNP::DeviceTemplate_t& arCfg, bool aStartOnline = false); + static CommandModes ConvertMode(const std::string& arMode); private: From 75af394a330f55db87e1f46908687b3874972176 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Tue, 16 Apr 2013 21:32:41 -0700 Subject: [PATCH 27/51] testset: use the AllowTimeSync for the MasterSettings tag For a master stack in testset, enabling time sync support was hardcoded to 'true'. This prevented testing with testset where time sync needs to be disabled on the master stack. Now we read the property and feed it into the master stack configuration struct properly. --- DNP3XML/XmlToConfig.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DNP3XML/XmlToConfig.cpp b/DNP3XML/XmlToConfig.cpp index 5d55da77..7352001c 100644 --- a/DNP3XML/XmlToConfig.cpp +++ b/DNP3XML/XmlToConfig.cpp @@ -126,7 +126,7 @@ AppConfig XmlToConfig::Convert(const APLXML_DNP::AppLayer_t& arCfg) MasterConfig XmlToConfig::Convert(const APLXML_DNP::Master_t& arCfg) { MasterConfig cfg; - cfg.AllowTimeSync = true; + cfg.AllowTimeSync = arCfg.MasterSettings.AllowTimeSync; cfg.DoUnsolOnStartup = arCfg.Unsol.DoTask; cfg.EnableUnsol = arCfg.Unsol.Enable; cfg.FragSize = arCfg.Stack.AppLayer.MaxFragSize; From 7b67a7dd7f47ff27eef0e46881e9831058b399b2 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Mon, 1 Jul 2013 22:45:07 -0700 Subject: [PATCH 28/51] Multiple class events for the same data type causes 0-length object group When multiple events are queued up for an object group, where the events themselves are part of different DNP3 classes (1/2/3), the iterator loop in ResponseContext::LoadEvents() was causing a 0-length object group to be added to the APDU. ResponseContext::IterateIndexed() appears to be writing everything in one iteration. The iterator loop needs to be bound on both the queue size _and_ whether any elements are remaining. --- DNP3Test/TestSlave.cpp | 235 ++++++++++++++++++++++++++++++ opendnp3/DNP3/ResponseContext.cpp | 28 +++- opendnp3/DNP3/ResponseContext.h | 27 +++- opendnp3/DNP3/SlaveStates.cpp | 14 ++ 4 files changed, 297 insertions(+), 7 deletions(-) diff --git a/DNP3Test/TestSlave.cpp b/DNP3Test/TestSlave.cpp index c27d679b..6b76c2fe 100644 --- a/DNP3Test/TestSlave.cpp +++ b/DNP3Test/TestSlave.cpp @@ -458,6 +458,241 @@ BOOST_AUTO_TEST_CASE(UnsolData) BOOST_REQUIRE_EQUAL(t.app.NumAPDU(), 0); //check that no more frags are sent } +BOOST_AUTO_TEST_CASE(UnsolDataWithZeroLenObjectGroup) +{ + SlaveConfig cfg; + cfg.mDisableUnsol = false; + cfg.mUnsolMask = ClassMask(false, false, false); + cfg.mAllowTimeSync = false; + cfg.mEventBinary = GrpVar(2, 2); + cfg.mEventAnalog = GrpVar(32, 3); + + SlaveTestObject t(cfg, LEV_DEBUG, true); + + t.db.Configure(DT_BINARY, 5); + t.db.SetClass(DT_BINARY, 0, PC_CLASS_0); + t.db.SetClass(DT_BINARY, 1, PC_CLASS_0); + t.db.SetClass(DT_BINARY, 2, PC_CLASS_0); + t.db.SetClass(DT_BINARY, 3, PC_CLASS_0); + t.db.SetClass(DT_BINARY, 4, PC_CLASS_1); + + t.db.Configure(DT_ANALOG, 16); + t.db.SetClass(DT_ANALOG, 0, PC_CLASS_0); + t.db.SetClass(DT_ANALOG, 1, PC_CLASS_0); + t.db.SetClass(DT_ANALOG, 2, PC_CLASS_0); + t.db.SetClass(DT_ANALOG, 3, PC_CLASS_0); + t.db.SetClass(DT_ANALOG, 4, PC_CLASS_0); + t.db.SetClass(DT_ANALOG, 5, PC_CLASS_1); + t.db.SetClass(DT_ANALOG, 6, PC_CLASS_1); + t.db.SetClass(DT_ANALOG, 7, PC_CLASS_1); + t.db.SetClass(DT_ANALOG, 8, PC_CLASS_1); + t.db.SetClass(DT_ANALOG, 9, PC_CLASS_1); + t.db.SetClass(DT_ANALOG, 10, PC_CLASS_1); + t.db.SetClass(DT_ANALOG, 11, PC_CLASS_1); + t.db.SetClass(DT_ANALOG, 12, PC_CLASS_1); + t.db.SetClass(DT_ANALOG, 13, PC_CLASS_2); + t.db.SetClass(DT_ANALOG, 14, PC_CLASS_3); + t.db.SetClass(DT_ANALOG, 15, PC_CLASS_3); + for (size_t pt = 5; pt < 16; pt++) + t.db.SetDeadband(DT_ANALOG, pt, 10000); + + t.db.Configure(DT_COUNTER, 8); + for (size_t pt = 0; pt < 8; pt++) + t.db.SetClass(DT_COUNTER, pt, PC_CLASS_0); + + t.db.Configure(DT_SETPOINT_STATUS, 2); + t.db.Configure(DT_CONTROL_STATUS, 2); + + // do a transaction before the layer comes online to prove that the null transaction + // is occuring before unsol data is sent + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Binary(false, BQ_ONLINE), 0); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Binary(false, BQ_ONLINE), 1); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Binary(false, BQ_ONLINE), 2); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Binary(false, BQ_ONLINE), 3); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Binary(true, BQ_ONLINE), 4); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Analog(131072, AQ_ONLINE), 0); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Analog(500000, AQ_ONLINE), 1); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Analog(0, AQ_ONLINE), 2); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Analog(400000, AQ_ONLINE), 3); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Analog(0, AQ_ONLINE), 4); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Analog(80, AQ_ONLINE), 5); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Analog(0, AQ_ONLINE), 6); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Analog(0, AQ_ONLINE), 7); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Analog(0, AQ_ONLINE), 8); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Analog(0, AQ_ONLINE), 9); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Analog(0, AQ_ONLINE), 10); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Analog(0, AQ_ONLINE), 11); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Analog(0, AQ_ONLINE), 12); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Analog(0, AQ_ONLINE), 13); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Analog(0, AQ_ONLINE), 14); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Analog(0, AQ_ONLINE), 15); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Counter(0, CQ_ONLINE), 0); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Counter(0, CQ_ONLINE), 1); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Counter(0, CQ_ONLINE), 2); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Counter(0, CQ_ONLINE), 3); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Counter(0, CQ_ONLINE), 4); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Counter(0, CQ_ONLINE), 5); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Counter(0, CQ_ONLINE), 6); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + { + Transaction tr(t.slave.GetDataObserver()); + t.slave.GetDataObserver()->Update(Counter(0, CQ_ONLINE), 7); + } + BOOST_REQUIRE(t.mts.DispatchOne()); + + // Bring up the app layer + t.slave.OnLowerLayerUp(); + + // Disable spontaneous messages + t.SendToSlave("C0 15 3C 02 06 3C 03 06 3C 04 06"); + + // Receive the DEVICE_RESTART unsol message + BOOST_REQUIRE_EQUAL(t.Read(), "F0 82 80 00"); + + // Response to disabling sponatenous messages + BOOST_REQUIRE_EQUAL(t.Read(), "C0 81 80 00"); + + // Confirm + t.SendToSlave("D0 00"); + + // Function not supported + BOOST_REQUIRE_EQUAL(t.Read(), "C0 81 80 01"); + + // Write + t.SendToSlave("C1 02 50 01 00 07 07 00"); + + // Response to write + BOOST_REQUIRE_EQUAL(t.Read(), "C0 81 00 00"); + + // Read class 0 + t.SendToSlave("C2 01 3C 01 06"); + + // Response to read class 0 + BOOST_REQUIRE_EQUAL(t.Read(), "C0 81 00 00 01 02 00 00 04 01 01 01 01 81 1E 01 00 00 0F 01 00 00 02 00 01 20 A1 07 00 01 00 00 00 00 01 80 1A 06 00 01 00 00 00 00 01 50 00 00 00 01 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 00 00 00 00 14 01 00 00 07 01 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 00 00 00 00 01 00 00 00 00 0A 02 00 00 01 02 02 28 01 00 00 01 02 00 00 00 00 02 00 00 00 00"); + + // Enable spontaneous messages + t.SendToSlave("C3 14 3C 02 06 3C 03 06 3C 04 06"); + + // Response to enabling spontaneous messages + BOOST_REQUIRE_EQUAL(t.Read(), "C0 81 00 00"); + + // Read the unsolicited response + BOOST_REQUIRE_EQUAL(t.Read(), "F0 82 00 00 02 02 17 01 04 81 00 00 00 00 00 00 20 03 17 0B 05 01 50 00 00 00 00 00 00 00 00 00 06 01 00 00 00 00 00 00 00 00 00 00 07 01 00 00 00 00 00 00 00 00 00 00 08 01 00 00 00 00 00 00 00 00 00 00 09 01 00 00 00 00 00 00 00 00 00 00 0A 01 00 00 00 00 00 00 00 00 00 00 0B 01 00 00 00 00 00 00 00 00 00 00 0C 01 00 00 00 00 00 00 00 00 00 00 0D 01 00 00 00 00 00 00 00 00 00 00 0E 01 00 00 00 00 00 00 00 00 00 00 0F 01 00 00 00 00 00 00 00 00 00 00"); +} + BOOST_AUTO_TEST_CASE(UnsolEventBufferOverflow) { SlaveConfig cfg; diff --git a/opendnp3/DNP3/ResponseContext.cpp b/opendnp3/DNP3/ResponseContext.cpp index 4e42912b..9b47b6ab 100644 --- a/opendnp3/DNP3/ResponseContext.cpp +++ b/opendnp3/DNP3/ResponseContext.cpp @@ -261,15 +261,32 @@ IINField ResponseContext::Configure(const APDU& arRequest) void ResponseContext::SelectEvents(PointClass aClass, size_t aNum) { size_t remain = aNum; + size_t numBinaryEvents = 0; + size_t numAnalogEvents = 0; + size_t numCounterEvents = 0; + size_t numVtoEvents = 0; if (mBuffer.IsOverflow()) { mTempIIN.SetEventBufferOverflow(true); } - remain -= this->SelectEvents(aClass, mpRspTypes->mpEventBinary, mBinaryEvents, remain); - remain -= this->SelectEvents(aClass, mpRspTypes->mpEventAnalog, mAnalogEvents, remain); - remain -= this->SelectEvents(aClass, mpRspTypes->mpEventCounter, mCounterEvents, remain); - remain -= this->SelectVtoEvents(aClass, mpRspTypes->mpEventVto, remain); + numBinaryEvents = this->SelectEvents(aClass, mpRspTypes->mpEventBinary, mBinaryEvents, remain); + remain -= numBinaryEvents; + + numAnalogEvents = this->SelectEvents(aClass, mpRspTypes->mpEventAnalog, mAnalogEvents, remain); + remain -= numBinaryEvents; + + numCounterEvents = this->SelectEvents(aClass, mpRspTypes->mpEventCounter, mCounterEvents, remain); + remain -= numBinaryEvents; + + numVtoEvents = this->SelectVtoEvents(aClass, mpRspTypes->mpEventVto, remain); + remain -= numBinaryEvents; + + LOG_BLOCK(LEV_DEBUG, "ResponseContext::SelectEvents(PointClass=" << aClass << ", size_t=" << aNum << ")"); + LOG_BLOCK(LEV_DEBUG, "Selected: " << numBinaryEvents << " binary event(s)"); + LOG_BLOCK(LEV_DEBUG, "Selected: " << numAnalogEvents << " analog event(s)"); + LOG_BLOCK(LEV_DEBUG, "Selected: " << numCounterEvents << " counter event(s)"); + LOG_BLOCK(LEV_DEBUG, "Selected: " << numVtoEvents << " vto event(s)"); } size_t ResponseContext::SelectVtoEvents(PointClass aClass, const SizeByVariationObject* apObj, size_t aNum) @@ -305,10 +322,12 @@ void ResponseContext::LoadResponse(APDU& arAPDU) bool ResponseContext::SelectUnsol(ClassMask m) { + LOG_BLOCK(LEV_DEBUG, "ResponseContext::SelectUnsol(ClassMask)"); if(m.class1) this->SelectEvents(PC_CLASS_1); if(m.class2) this->SelectEvents(PC_CLASS_2); if(m.class3) this->SelectEvents(PC_CLASS_3); + LOG_BLOCK(LEV_DEBUG, "Selected events: " << mBuffer.NumSelected()); return mBuffer.NumSelected() > 0; } @@ -323,6 +342,7 @@ bool ResponseContext::HasEvents(ClassMask m) void ResponseContext::LoadUnsol(APDU& arAPDU, const IINField& arIIN, ClassMask m) { + LOG_BLOCK(LEV_DEBUG, "ResponseContext::LoadUnsol(arAPDU, IINField, ClassMask)"); this->SelectUnsol(m); arAPDU.Set(FC_UNSOLICITED_RESPONSE, true, true, true, true); diff --git a/opendnp3/DNP3/ResponseContext.h b/opendnp3/DNP3/ResponseContext.h index fed91eae..64129c53 100644 --- a/opendnp3/DNP3/ResponseContext.h +++ b/opendnp3/DNP3/ResponseContext.h @@ -334,37 +334,58 @@ bool ResponseContext::WriteStaticObjects(StreamObject* apO template bool ResponseContext::LoadEvents(APDU& arAPDU, std::deque< EventRequest >& arQueue) { + LOG_BLOCK(LEV_DEBUG, "ResponseContext::LoadEvents<" << typeid(T).name() << ">(APDU&, std::deque>&)"); + typename EvtItr< EventInfo >::Type itr; mBuffer.Begin(itr); size_t remain = mBuffer.NumSelected(Convert(T::MeasEnum)); - while (arQueue.size() > 0) { + while (arQueue.size() > 0 && remain > 0) { /* Get the number of events requested */ EventRequest& r = arQueue.front(); + LOG_BLOCK(LEV_DEBUG, "[" << __LINE__ << "] " << arAPDU.ToString()); + LOG_BLOCK(LEV_DEBUG, "[" << __LINE__ << "] arQueue.size() = " << arQueue.size()); + LOG_BLOCK(LEV_DEBUG, "[" << __LINE__ << "] r.count = " << r.count); + LOG_BLOCK(LEV_DEBUG, "[" << __LINE__ << "] remain = " << remain); + if (r.count > remain) { + LOG_BLOCK(LEV_DEBUG, "[" << __LINE__ << "] r.count = remain"); r.count = remain; } + LOG_BLOCK(LEV_DEBUG, "[" << __LINE__ << "] r.pObj->UseCTO() = " << r.pObj->UseCTO()); + size_t written = r.pObj->UseCTO() ? this->IterateCTO(r.pObj, r.count, itr, arAPDU) : this->IterateIndexed(r, itr, arAPDU); + LOG_BLOCK(LEV_DEBUG, "[" << __LINE__ << "] written = " << written); remain -= written; + LOG_BLOCK(LEV_DEBUG, "[" << __LINE__ << "] remain = " << remain); if (written > 0) { + LOG_BLOCK(LEV_DEBUG, "[" << __LINE__ << "] at least one event loaded"); /* At least one event was loaded */ this->mLoadedEventData = true; + } else { + LOG_BLOCK(LEV_DEBUG, "[" << __LINE__ << "] no events loaded"); } if (written == r.count) { + LOG_BLOCK(LEV_DEBUG, "[" << __LINE__ << "] all events written, finished with request"); /* all events were written, finished with request */ arQueue.pop_front(); - } - else { + } else { + LOG_BLOCK(LEV_DEBUG, "[" << __LINE__ << "] more event data remains in the queue"); /* more event data remains in the queue */ r.count -= written; + LOG_BLOCK(LEV_DEBUG, "[" << __LINE__ << "] r.count = " << r.count); + LOG_BLOCK(LEV_DEBUG, "[" << __LINE__ << "] " << arAPDU.ToString()); return false; } } + LOG_BLOCK(LEV_DEBUG, "[" << __LINE__ << "] queue emptied"); + LOG_BLOCK(LEV_DEBUG, "[" << __LINE__ << "] " << arAPDU.ToString()); + return true; // the queue has been exhausted on this iteration } diff --git a/opendnp3/DNP3/SlaveStates.cpp b/opendnp3/DNP3/SlaveStates.cpp index ec0702d4..e1997111 100644 --- a/opendnp3/DNP3/SlaveStates.cpp +++ b/opendnp3/DNP3/SlaveStates.cpp @@ -224,6 +224,7 @@ void AS_Idle::OnRequest(Slave* c, const APDU& arAPDU, SequenceInfo aSeqInfo) void AS_Idle::OnDataUpdate(Slave* c) { + LOGGER_BLOCK(c->mpLogger, LEV_DEBUG, "AS_Idle::OnDataUpdate(Slave*)"); c->FlushUpdates(); // start the unsol timer or act immediately if there's no pack timer @@ -241,6 +242,7 @@ void AS_Idle::OnDataUpdate(Slave* c) void AS_Idle::OnUnsolExpiration(Slave* c) { + LOGGER_BLOCK(c->mpLogger, LEV_DEBUG, "AS_Idle::OnUnsolExpiration(Slave*)"); if (c->mStartupNullUnsol) { if (c->mRspContext.HasEvents(c->mConfig.mUnsolMask)) { ChangeState(c, AS_WaitForUnsolSuccess::Inst()); @@ -258,6 +260,7 @@ void AS_Idle::OnUnsolExpiration(Slave* c) void AS_Idle::OnUnknown(Slave* c) { + LOGGER_BLOCK(c->mpLogger, LEV_DEBUG, "AS_Idle::OnUnknown(Slave*)"); c->HandleUnknown(); ChangeState(c, AS_WaitForRspSuccess::Inst()); c->Send(c->mResponse); @@ -269,12 +272,14 @@ AS_WaitForRspSuccess AS_WaitForRspSuccess::mInstance; void AS_WaitForRspSuccess::OnSolFailure(Slave* c) { + LOGGER_BLOCK(c->mpLogger, LEV_DEBUG, "AS_WaitForRspSuccess::OnSolFailure(Slave*)"); ChangeState(c, AS_Idle::Inst()); c->mRspContext.Reset(); } void AS_WaitForRspSuccess::OnSolSendSuccess(Slave* c) { + LOGGER_BLOCK(c->mpLogger, LEV_DEBUG, "AS_WaitForRspSuccess::OnSolSendSuccess(Slave*)"); c->mRspContext.ClearWritten(); if (c->mRspContext.IsComplete()) { @@ -292,6 +297,7 @@ void AS_WaitForRspSuccess::OnSolSendSuccess(Slave* c) // The callback may still succeed if void AS_WaitForRspSuccess::OnRequest(Slave* c, const APDU& arAPDU, SequenceInfo aSeqInfo) { + LOGGER_BLOCK(c->mpLogger, LEV_DEBUG, "AS_WaitForRspSuccess::OnSolOnRequest(Slave*)"); c->mpAppLayer->CancelResponse(); c->mRequest = arAPDU; c->mSeqInfo = aSeqInfo; @@ -304,6 +310,7 @@ AS_WaitForUnsolSuccess AS_WaitForUnsolSuccess::mInstance; void AS_WaitForUnsolSuccess::OnUnsolFailure(Slave* c) { + LOGGER_BLOCK(c->mpLogger, LEV_DEBUG, "AS_WaitForUnsolSuccess::OnUnsolFailure(Slave*)"); // if any unsol transaction fails, we re-enable the timer with the unsol retry delay ChangeState(c, AS_Idle::Inst()); c->mRspContext.Reset(); @@ -312,12 +319,14 @@ void AS_WaitForUnsolSuccess::OnUnsolFailure(Slave* c) void AS_WaitForUnsolSuccess::OnUnsolSendSuccess(Slave* c) { + LOGGER_BLOCK(c->mpLogger, LEV_DEBUG, "AS_WaitForUnsolSuccess::OnUnsolSendSuccess(Slave*)"); ChangeState(c, AS_Idle::Inst()); // transition to the idle state this->DoUnsolSuccess(c); } void AS_WaitForUnsolSuccess::OnRequest(Slave* c, const APDU& arAPDU, SequenceInfo aSeqInfo) { + LOGGER_BLOCK(c->mpLogger, LEV_DEBUG, "AS_WaitForUnsolSuccess::OnRequest(Slave*)"); if (arAPDU.GetFunction() == FC_READ) { //read requests should be defered until after the unsol c->mRequest = arAPDU; @@ -337,6 +346,7 @@ AS_WaitForSolUnsolSuccess AS_WaitForSolUnsolSuccess::mInstance; void AS_WaitForSolUnsolSuccess::OnRequest(Slave* c, const APDU& arAPDU, SequenceInfo aSeqInfo) { + LOGGER_BLOCK(c->mpLogger, LEV_DEBUG, "AS_WaitForSolUnsolSuccess::OnRequest(Slave*)"); // Both channels are busy... buffer the request c->mRequest = arAPDU; c->mSeqInfo = aSeqInfo; @@ -345,16 +355,19 @@ void AS_WaitForSolUnsolSuccess::OnRequest(Slave* c, const APDU& arAPDU, Sequence void AS_WaitForSolUnsolSuccess::OnSolFailure(Slave* c) { + LOGGER_BLOCK(c->mpLogger, LEV_DEBUG, "AS_WaitForSolUnsolSuccess::OnSolFailure(Slave*)"); ChangeState(c, AS_WaitForUnsolSuccess::Inst()); } void AS_WaitForSolUnsolSuccess::OnSolSendSuccess(Slave* c) { + LOGGER_BLOCK(c->mpLogger, LEV_DEBUG, "AS_WaitForSolUnsolSuccess::OnSolSendSuccess(Slave*)"); ChangeState(c, AS_WaitForUnsolSuccess::Inst()); } void AS_WaitForSolUnsolSuccess::OnUnsolFailure(Slave* c) { + LOGGER_BLOCK(c->mpLogger, LEV_DEBUG, "AS_WaitForSolUnsolSuccess::OnUnsolFailure(Slave*)"); ChangeState(c, AS_WaitForRspSuccess::Inst()); c->mRspContext.Reset(); if (c->mConfig.mUnsolRetryDelay > 0) @@ -365,6 +378,7 @@ void AS_WaitForSolUnsolSuccess::OnUnsolFailure(Slave* c) void AS_WaitForSolUnsolSuccess::OnUnsolSendSuccess(Slave* c) { + LOGGER_BLOCK(c->mpLogger, LEV_DEBUG, "AS_WaitForSolUnsolSuccess::OnUnsolSendSuccess(Slave*)"); ChangeState(c, AS_WaitForRspSuccess::Inst()); this->DoUnsolSuccess(c); } From 7937454a86f71b1ea2603ecbe3ab37c4c1384976 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Thu, 12 Sep 2013 17:49:00 -0700 Subject: [PATCH 29/51] Added 'mResetTimeSyncOnDown' control flag to SlaveConfig Historically, a Slave would reset its Time IIN bit each time the stack when down. This could cause extra traffic that isn't desired, so we now give the application control. The default behavior has been maintained. --- opendnp3/DNP3/SlaveConfig.cpp | 1 + opendnp3/DNP3/SlaveConfig.h | 5 ++--- opendnp3/DNP3/SlaveStates.cpp | 8 +++++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/opendnp3/DNP3/SlaveConfig.cpp b/opendnp3/DNP3/SlaveConfig.cpp index fd49fcbf..b3dc291f 100644 --- a/opendnp3/DNP3/SlaveConfig.cpp +++ b/opendnp3/DNP3/SlaveConfig.cpp @@ -44,6 +44,7 @@ SlaveConfig::SlaveConfig() : mDisableUnsol(false), mUnsolMask(true, true, true), mAllowTimeSync(false), + mResetTimeSyncOnDown(true), mTimeSyncPeriod(10 * 60 * 1000), //every 10 min mUnsolPackDelay(200), mUnsolRetryDelay(2000), diff --git a/opendnp3/DNP3/SlaveConfig.h b/opendnp3/DNP3/SlaveConfig.h index 8672e602..3694d165 100644 --- a/opendnp3/DNP3/SlaveConfig.h +++ b/opendnp3/DNP3/SlaveConfig.h @@ -70,7 +70,6 @@ when the master requests class data or variation 0. struct SlaveConfig { SlaveConfig(); - // The maximum number of controls the slave will attempt to process from a single APDU size_t mMaxControls; @@ -83,6 +82,8 @@ struct SlaveConfig { // if true, the slave will request time synchronization on an interval bool mAllowTimeSync; + // if true, the slave will reset the time sync IIN whenever the stack goes down + bool mResetTimeSyncOnDown; // The period of time sync interval in milliseconds millis_t mTimeSyncPeriod; @@ -93,7 +94,6 @@ struct SlaveConfig { // How long the slave will wait before retrying an unsuccessful unsol response millis_t mUnsolRetryDelay; - // The maximum fragment size the slave will use for data it sends size_t mMaxFragSize; @@ -117,7 +117,6 @@ struct SlaveConfig { // The default group/variation to use for static setpoint status responses GrpVar mStaticSetpointStatus; - // default event response types // The default group/variation to use for binary event responses diff --git a/opendnp3/DNP3/SlaveStates.cpp b/opendnp3/DNP3/SlaveStates.cpp index e1997111..8060c791 100644 --- a/opendnp3/DNP3/SlaveStates.cpp +++ b/opendnp3/DNP3/SlaveStates.cpp @@ -196,7 +196,13 @@ AS_Closed AS_Closed::mInstance; void AS_Closed::OnLowerLayerUp(Slave* c) { // this is implemented as a simple timer because it can run if the slave is connected/disconnected etc - if (c->mConfig.mAllowTimeSync) c->ResetTimeIIN(); + if (c->mConfig.mAllowTimeSync) { + static bool firstTimeSyncIssued = false; + if (c->mConfig.mResetTimeSyncOnDown || !firstTimeSyncIssued) { + c->ResetTimeIIN(); + firstTimeSyncIssued = true; + } + } ChangeState(c, AS_Idle::Inst()); } From 04a2639eaf068f0ceb97e3a9a61c8925e6f100b2 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Fri, 13 Sep 2013 14:27:20 -0700 Subject: [PATCH 30/51] Reset time sync timer appropriately --- opendnp3/DNP3/Slave.cpp | 8 ++++++++ opendnp3/DNP3/Slave.h | 3 +++ opendnp3/DNP3/SlaveStates.cpp | 6 +++--- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/opendnp3/DNP3/Slave.cpp b/opendnp3/DNP3/Slave.cpp index 3e51bde1..5783ce90 100644 --- a/opendnp3/DNP3/Slave.cpp +++ b/opendnp3/DNP3/Slave.cpp @@ -47,6 +47,7 @@ Slave::Slave(Logger* apLogger, IAppLayer* apAppLayer, ITimerSource* apTimerSrc, mRspContext(apLogger, apDatabase, &mRspTypes, arCfg.mEventMaxConfig), mHaveLastRequest(false), mLastRequest(arCfg.mMaxFragSize), + mFirstTimeSyncIssued(false), mpTime(apTime), mCommsStatus(apLogger, "comms_status"), mDeferredUpdate(false), @@ -599,6 +600,13 @@ void Slave::ResetTimeIIN() { mpTimeTimer = NULL; mIIN.SetNeedTime(true); + mFirstTimeSyncIssued = true; + RestartTimeSyncTimer(); +} + +void Slave::RestartTimeSyncTimer() +{ + mpTimeTimer = NULL; mpTimeTimer = mpTimerSrc->Start(mConfig.mTimeSyncPeriod, boost::bind(&Slave::ResetTimeIIN, this)); } diff --git a/opendnp3/DNP3/Slave.h b/opendnp3/DNP3/Slave.h index db0dff1c..3a2ff8f4 100644 --- a/opendnp3/DNP3/Slave.h +++ b/opendnp3/DNP3/Slave.h @@ -177,6 +177,8 @@ class Slave : public Loggable, public IAppUser bool mHaveLastRequest; APDU mLastRequest; // APDU used to form responses + bool mFirstTimeSyncIssued; // track whether a time sync has been issued + ITimeManager* mpTime; CachedLogVariable mCommsStatus; @@ -228,6 +230,7 @@ class Slave : public Loggable, public IAppUser // Task handlers void ResetTimeIIN(); + void RestartTimeSyncTimer(); ITimer* mpTimeTimer; /** diff --git a/opendnp3/DNP3/SlaveStates.cpp b/opendnp3/DNP3/SlaveStates.cpp index 8060c791..f0faf685 100644 --- a/opendnp3/DNP3/SlaveStates.cpp +++ b/opendnp3/DNP3/SlaveStates.cpp @@ -197,10 +197,10 @@ void AS_Closed::OnLowerLayerUp(Slave* c) { // this is implemented as a simple timer because it can run if the slave is connected/disconnected etc if (c->mConfig.mAllowTimeSync) { - static bool firstTimeSyncIssued = false; - if (c->mConfig.mResetTimeSyncOnDown || !firstTimeSyncIssued) { + if (c->mConfig.mResetTimeSyncOnDown || !c->mFirstTimeSyncIssued) { c->ResetTimeIIN(); - firstTimeSyncIssued = true; + } else if (!c->mConfig.mResetTimeSyncOnDown) { + c->RestartTimeSyncTimer(); } } From 6b56c4772282afdeebe918dea6f312d417e7395b Mon Sep 17 00:00:00 2001 From: Hung Le Date: Tue, 8 Oct 2013 16:09:02 -0700 Subject: [PATCH 31/51] Indicates the name of the physical layer the unknown route log entry is generated from. This enables the application to create a new slave stack and to properly bind it to the correct physical layer. --- DNP3Test/LinkLayerRouterTest.cpp | 2 +- DNP3Test/TransportIntegrationStack.cpp | 2 +- DNP3Test/TransportLoopbackTestObject.cpp | 2 +- TestSet/AddressScanner.cpp | 2 +- opendnp3/DNP3/LinkChannel.cpp | 3 +-- opendnp3/DNP3/LinkChannel.h | 5 ----- opendnp3/DNP3/LinkLayerRouter.cpp | 4 +++- opendnp3/DNP3/LinkLayerRouter.h | 7 ++++++- 8 files changed, 14 insertions(+), 13 deletions(-) diff --git a/DNP3Test/LinkLayerRouterTest.cpp b/DNP3Test/LinkLayerRouterTest.cpp index 4f3070fd..5597fb51 100644 --- a/DNP3Test/LinkLayerRouterTest.cpp +++ b/DNP3Test/LinkLayerRouterTest.cpp @@ -27,7 +27,7 @@ LinkLayerRouterTest::LinkLayerRouterTest(FilterLevel aLevel, bool aImmediate) : LogTester(aImmediate), mts(), phys(mLog.GetLogger(aLevel, "Physical")), - router(mLog.GetLogger(aLevel, "Router"), &phys, &mts, 100) + router(mLog.GetLogger(aLevel, "Router"), "router_test", &phys, &mts, 100) { } diff --git a/DNP3Test/TransportIntegrationStack.cpp b/DNP3Test/TransportIntegrationStack.cpp index 39471610..84b598af 100644 --- a/DNP3Test/TransportIntegrationStack.cpp +++ b/DNP3Test/TransportIntegrationStack.cpp @@ -26,7 +26,7 @@ namespace dnp { TransportIntegrationStack::TransportIntegrationStack(Logger* apLogger, ITimerSource* apTimerSrc, IPhysicalLayerAsync* apPhys, LinkConfig aCfg) : - mRouter(apLogger, apPhys, apTimerSrc, 1000), + mRouter(apLogger, "integration", apPhys, apTimerSrc, 1000), mLink(apLogger, apTimerSrc, aCfg), mTransport(apLogger), mUpper(apLogger) diff --git a/DNP3Test/TransportLoopbackTestObject.cpp b/DNP3Test/TransportLoopbackTestObject.cpp index 7ce75aa7..2fe6d28e 100644 --- a/DNP3Test/TransportLoopbackTestObject.cpp +++ b/DNP3Test/TransportLoopbackTestObject.cpp @@ -48,7 +48,7 @@ TransportLoopbackTestObject::TransportLoopbackTestObject( mLinkB(mpLogger, &mTimerSource, aCfgB), mTransA(mpLogger), mTransB(mpLogger), - mRouter(mpLogger, apPhys, &mTimerSource, 1000), + mRouter(mpLogger, "loopback_test", apPhys, &mTimerSource, 1000), mUpperA(mpLogger), mUpperB(mpLogger) { diff --git a/TestSet/AddressScanner.cpp b/TestSet/AddressScanner.cpp index 4cbddbb4..ed0a1bf5 100644 --- a/TestSet/AddressScanner.cpp +++ b/TestSet/AddressScanner.cpp @@ -35,7 +35,7 @@ AddressScanner::AddressScanner(Logger* apLogger, const APLXML_MTS::MasterTestSet manager(apLogger, mService.Get(), &cfg.PhysicalLayerList, xml::Convert(cfg.Log.Filter)), mTimerSrc(mService.Get()), mThread(apLogger->GetSubLogger("ioservice"), mService.Get()), - mRouter(apLogger, manager.AcquireLayer(cfg.PhysicalLayer), &mTimerSrc, 1000), + mRouter(apLogger, "addr_scan", manager.AcquireLayer(cfg.PhysicalLayer), &mTimerSrc, 1000), mpTimer(NULL), mMasterAddr(cfg.Master.Stack.LinkLayer.LocalAddress), mScanTimeout(cfg.Master.Stack.LinkLayer.AckTimeoutMS), diff --git a/opendnp3/DNP3/LinkChannel.cpp b/opendnp3/DNP3/LinkChannel.cpp index 4315f10f..a2146e65 100644 --- a/opendnp3/DNP3/LinkChannel.cpp +++ b/opendnp3/DNP3/LinkChannel.cpp @@ -33,8 +33,7 @@ namespace dnp LinkChannel::LinkChannel(Logger* apLogger, const std::string& arName, ITimerSource* apTimerSrc, IPhysicalLayerAsync* apPhys, AsyncTaskGroup* apTaskGroup, millis_t aOpenRetry) : Loggable(apLogger), - LinkLayerRouter(apLogger, apPhys, apTimerSrc, aOpenRetry), - mName(arName), + LinkLayerRouter(apLogger, arName, apPhys, apTimerSrc, aOpenRetry), mpTaskGroup(apTaskGroup) { diff --git a/opendnp3/DNP3/LinkChannel.h b/opendnp3/DNP3/LinkChannel.h index 16ebad5c..af82998c 100644 --- a/opendnp3/DNP3/LinkChannel.h +++ b/opendnp3/DNP3/LinkChannel.h @@ -60,10 +60,6 @@ class LinkChannel : private LinkLayerRouter void RemoveStackFromChannel(const std::string& arStackName); std::vector StacksOnChannel(); - std::string Name() { - return mName; - } - void AddPhysicalLayerObserver(IPhysicalLayerObserver* apObserver) { this->AddObserver(apObserver); } @@ -82,7 +78,6 @@ class LinkChannel : private LinkLayerRouter private: - std::string mName; AsyncTaskGroup* mpTaskGroup; typedef std::map StackMap; diff --git a/opendnp3/DNP3/LinkLayerRouter.cpp b/opendnp3/DNP3/LinkLayerRouter.cpp index 590b2961..2686dfb8 100644 --- a/opendnp3/DNP3/LinkLayerRouter.cpp +++ b/opendnp3/DNP3/LinkLayerRouter.cpp @@ -33,9 +33,10 @@ namespace apl namespace dnp { -LinkLayerRouter::LinkLayerRouter(apl::Logger* apLogger, IPhysicalLayerAsync* apPhys, ITimerSource* apTimerSrc, millis_t aOpenRetry) : +LinkLayerRouter::LinkLayerRouter(apl::Logger* apLogger, const std::string& arName, IPhysicalLayerAsync* apPhys, ITimerSource* apTimerSrc, millis_t aOpenRetry) : Loggable(apLogger), PhysicalLayerMonitor(apLogger, apPhys, apTimerSrc, aOpenRetry), + mName(arName), mReceiver(apLogger, this), mTransmitting(false) {} @@ -103,6 +104,7 @@ ILinkContext* LinkLayerRouter::GetDestination(boost::uint16_t aDest, boost::uint LogEntry le(LEV_WARNING, mpLogger->GetName(), LOCATION, oss.str(), DLERR_UNKNOWN_ROUTE); le.AddValue("SOURCE", aSrc); le.AddValue("DESTINATION", aDest); + le.AddValue("PHYS_LAYER_NAME", mName); mpLogger->Log(le); } diff --git a/opendnp3/DNP3/LinkLayerRouter.h b/opendnp3/DNP3/LinkLayerRouter.h index c4d08df9..01094294 100644 --- a/opendnp3/DNP3/LinkLayerRouter.h +++ b/opendnp3/DNP3/LinkLayerRouter.h @@ -48,7 +48,11 @@ class LinkLayerRouter : public PhysicalLayerMonitor, public IFrameSink, public I { public: - LinkLayerRouter(apl::Logger*, IPhysicalLayerAsync*, ITimerSource*, millis_t aOpenRetry); + LinkLayerRouter(apl::Logger*, const std::string& arName, IPhysicalLayerAsync*, ITimerSource*, millis_t aOpenRetry); + + std::string Name() { + return mName; + } // Ties the lower part of the link layer to the upper part void AddContext(ILinkContext*, const LinkRoute& arRoute); @@ -77,6 +81,7 @@ class LinkLayerRouter : public PhysicalLayerMonitor, public IFrameSink, public I void CheckForSend(); + std::string mName; typedef std::map AddressMap; typedef std::deque TransmitQueue; From bd067672a3bbf9abe30d74d61cfd79ec1853887a Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Tue, 19 Nov 2013 15:16:46 -0800 Subject: [PATCH 32/51] Added PhysLayerSettings option for enabling SO_KEEPALIVE --- APLTestTools/AsyncPhysTestObject.cpp | 4 +-- APLTestTools/WrappedTcpPipe.cpp | 4 +-- APLXML/PhysicalLayerXMLFactory.cpp | 8 ++--- TestSet/StackHelpers.cpp | 2 +- opendnp3/APL/PhysLayerSettings.h | 6 ++-- opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp | 8 ++++- opendnp3/APL/PhysicalLayerAsyncTCPClient.h | 3 +- opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp | 8 ++++- opendnp3/APL/PhysicalLayerAsyncTCPServer.h | 5 +-- opendnp3/APL/PhysicalLayerAsyncTCPv4Client.h | 5 +-- opendnp3/APL/PhysicalLayerAsyncTCPv4Server.h | 5 +-- opendnp3/APL/PhysicalLayerAsyncTCPv6Client.h | 5 +-- opendnp3/APL/PhysicalLayerAsyncTCPv6Server.h | 5 +-- opendnp3/APL/PhysicalLayerFactory.cpp | 32 ++++++++++---------- opendnp3/APL/PhysicalLayerFactory.h | 16 +++++----- opendnp3/APL/PhysicalLayerManager.cpp | 8 ++--- 16 files changed, 72 insertions(+), 52 deletions(-) diff --git a/APLTestTools/AsyncPhysTestObject.cpp b/APLTestTools/AsyncPhysTestObject.cpp index c1241d47..40964620 100644 --- a/APLTestTools/AsyncPhysTestObject.cpp +++ b/APLTestTools/AsyncPhysTestObject.cpp @@ -25,8 +25,8 @@ namespace apl AsyncPhysTestObject::AsyncPhysTestObject(FilterLevel aLevel, bool aImmediate, bool aAutoRead) : AsyncTestObjectASIO(), LogTester(aImmediate), - mTCPClient(mLog.GetLogger(aLevel, "TCPClient"), this->GetService(), "127.0.0.1", 50000), - mTCPServer(mLog.GetLogger(aLevel, "TCPSever"), this->GetService(), "127.0.0.1", 50000), + mTCPClient(mLog.GetLogger(aLevel, "TCPClient"), this->GetService(), "127.0.0.1", 50000, false), + mTCPServer(mLog.GetLogger(aLevel, "TCPSever"), this->GetService(), "127.0.0.1", 50000, false), mClientAdapter(mLog.GetLogger(aLevel, "ClientAdapter"), &mTCPClient, aAutoRead), mServerAdapter(mLog.GetLogger(aLevel, "ServerAdapter"), &mTCPServer, aAutoRead), mClientUpper(mLog.GetLogger(aLevel, "MockUpperClient")), diff --git a/APLTestTools/WrappedTcpPipe.cpp b/APLTestTools/WrappedTcpPipe.cpp index a9ef545e..6664f8ae 100644 --- a/APLTestTools/WrappedTcpPipe.cpp +++ b/APLTestTools/WrappedTcpPipe.cpp @@ -6,8 +6,8 @@ namespace apl { WrappedTcpPipe::WrappedTcpPipe(Logger* apLogger, boost::asio::io_service* apService, boost::uint16_t aPort) : - clientTcp(apLogger->GetSubLogger("clientTcp"), apService, "127.0.0.1", aPort), - serverTcp(apLogger->GetSubLogger("serverTcp"), apService, "127.0.0.1", aPort), + clientTcp(apLogger->GetSubLogger("clientTcp"), apService, "127.0.0.1", aPort, false), + serverTcp(apLogger->GetSubLogger("serverTcp"), apService, "127.0.0.1", aPort, false), client(apLogger->GetSubLogger("clientWrapper"), &clientTcp), server(apLogger->GetSubLogger("serverWrapper"), &serverTcp) { diff --git a/APLXML/PhysicalLayerXMLFactory.cpp b/APLXML/PhysicalLayerXMLFactory.cpp index 4b3f49b1..627c2c8f 100644 --- a/APLXML/PhysicalLayerXMLFactory.cpp +++ b/APLXML/PhysicalLayerXMLFactory.cpp @@ -57,25 +57,25 @@ IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base::TCPv4Client_t* apCfg) { boost::uint16_t port = boost::numeric::converter::convert(apCfg->Port); - return PhysicalLayerFactory::GetTCPv4ClientAsync(apCfg->Address, port); + return PhysicalLayerFactory::GetTCPv4ClientAsync(apCfg->Address, port, false); } IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base::TCPv4Server_t* apCfg) { boost::uint16_t port = boost::numeric::converter::convert(apCfg->Port); - return PhysicalLayerFactory::GetTCPv4ServerAsync(apCfg->Endpoint, port); + return PhysicalLayerFactory::GetTCPv4ServerAsync(apCfg->Endpoint, port, false); } IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base::TCPv6Client_t* apCfg) { boost::uint16_t port = boost::numeric::converter::convert(apCfg->Port); - return PhysicalLayerFactory::GetTCPv6ClientAsync(apCfg->Address, port); + return PhysicalLayerFactory::GetTCPv6ClientAsync(apCfg->Address, port, false); } IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base::TCPv6Server_t* apCfg) { boost::uint16_t port = boost::numeric::converter::convert(apCfg->Port); - return PhysicalLayerFactory::GetTCPv6ServerAsync(apCfg->Endpoint, port); + return PhysicalLayerFactory::GetTCPv6ServerAsync(apCfg->Endpoint, port, false); } SerialSettings GetSerialSettings(const APLXML_Base::Serial_t* apCfg) diff --git a/TestSet/StackHelpers.cpp b/TestSet/StackHelpers.cpp index 3ecb3fee..8da4771b 100644 --- a/TestSet/StackHelpers.cpp +++ b/TestSet/StackHelpers.cpp @@ -38,7 +38,7 @@ namespace dnp IPhysicalLayerAsync* FGetTerminalPhys(Logger* apLogger, boost::asio::io_service* apSrv, bool aRemote, boost::uint16_t aRemotePort) { - if (aRemote) return PhysicalLayerFactory::FGetTCPv4ServerAsync("0.0.0.0", aRemotePort, apSrv, apLogger); + if (aRemote) return PhysicalLayerFactory::FGetTCPv4ServerAsync("0.0.0.0", aRemotePort, false, apSrv, apLogger); else return new PhysicalLayerIOStreamAsync(apLogger, apSrv); } diff --git a/opendnp3/APL/PhysLayerSettings.h b/opendnp3/APL/PhysLayerSettings.h index fbe00f6a..9e06bfd9 100644 --- a/opendnp3/APL/PhysLayerSettings.h +++ b/opendnp3/APL/PhysLayerSettings.h @@ -32,15 +32,17 @@ struct PhysLayerSettings { PhysLayerSettings() : LogLevel(LEV_INFO), RetryTimeout(5000), mpObserver(NULL) {} - PhysLayerSettings(FilterLevel aLevel, millis_t aRetryTimeout, IPhysicalLayerObserver* apObserver = NULL) : + PhysLayerSettings(FilterLevel aLevel, millis_t aRetryTimeout, IPhysicalLayerObserver* apObserver = NULL, bool aUseKeepAlives = false) : LogLevel(aLevel), RetryTimeout(aRetryTimeout), - mpObserver(apObserver) + mpObserver(apObserver), + UseKeepAlives(aUseKeepAlives) {} FilterLevel LogLevel; millis_t RetryTimeout; IPhysicalLayerObserver* mpObserver; + bool UseKeepAlives; }; } diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp b/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp index dc178fae..72d99804 100644 --- a/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp +++ b/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp @@ -32,9 +32,10 @@ using namespace std; namespace apl { -PhysicalLayerAsyncTCPClient::PhysicalLayerAsyncTCPClient(Logger* apLogger, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const std::string& arAddress) +PhysicalLayerAsyncTCPClient::PhysicalLayerAsyncTCPClient(Logger* apLogger, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const std::string& arAddress, bool aUseKeepAlives) : PhysicalLayerAsyncBaseTCP(apLogger, apIOService) , mRemoteEndpoint(arEndpoint) + , mUseKeepAlives(aUseKeepAlives) { mRemoteEndpoint.address( ResolveAddress(arAddress) ); } @@ -56,6 +57,11 @@ void PhysicalLayerAsyncTCPClient::DoOpeningClose() void PhysicalLayerAsyncTCPClient::DoOpenSuccess() { LOG_BLOCK(LEV_INFO, "Connected to: " << mRemoteEndpoint); + if (mUseKeepAlives) { + LOG_BLOCK(LEV_DEBUG, "Enabling keepalives on the socket connection to " << mRemoteEndpoint); + boost::asio::socket_base::keep_alive option(true); + mSocket.set_option(option); + } } } diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPClient.h b/opendnp3/APL/PhysicalLayerAsyncTCPClient.h index ac521839..23a3be87 100644 --- a/opendnp3/APL/PhysicalLayerAsyncTCPClient.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPClient.h @@ -29,7 +29,7 @@ namespace apl class PhysicalLayerAsyncTCPClient : public PhysicalLayerAsyncBaseTCP { public: - PhysicalLayerAsyncTCPClient(Logger* apLogger, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const std::string& arAddress); + PhysicalLayerAsyncTCPClient(Logger* apLogger, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const std::string& arAddress, bool aUseKeepAlives = false); /* Implement the remaining actions */ void DoOpen(); @@ -38,6 +38,7 @@ class PhysicalLayerAsyncTCPClient : public PhysicalLayerAsyncBaseTCP private: boost::asio::ip::tcp::endpoint mRemoteEndpoint; + bool mUseKeepAlives; }; } diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp b/opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp index 18427d0d..de82d3be 100644 --- a/opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp +++ b/opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp @@ -33,10 +33,11 @@ using namespace std; namespace apl { -PhysicalLayerAsyncTCPServer::PhysicalLayerAsyncTCPServer(Logger* apLogger, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const std::string& arAddress) +PhysicalLayerAsyncTCPServer::PhysicalLayerAsyncTCPServer(Logger* apLogger, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const std::string& arAddress, bool aUseKeepAlives) : PhysicalLayerAsyncBaseTCP(apLogger, apIOService) , mLocalEndpoint(arEndpoint) , mAcceptor(*apIOService) + , mUseKeepAlives(aUseKeepAlives) { mLocalEndpoint.address( ResolveAddress(arAddress) ); } @@ -86,6 +87,11 @@ void PhysicalLayerAsyncTCPServer::DoOpeningClose() void PhysicalLayerAsyncTCPServer::DoOpenSuccess() { LOG_BLOCK(LEV_INFO, "Accepted connection from: " << mRemoteEndpoint); + if (mUseKeepAlives) { + LOG_BLOCK(LEV_DEBUG, "Enabling keepalives on the socket connection to " << mRemoteEndpoint); + boost::asio::socket_base::keep_alive option(true); + mSocket.set_option(option); + } } } diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPServer.h b/opendnp3/APL/PhysicalLayerAsyncTCPServer.h index 4b91f57e..ee809a2a 100644 --- a/opendnp3/APL/PhysicalLayerAsyncTCPServer.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPServer.h @@ -28,9 +28,9 @@ namespace apl class PhysicalLayerAsyncTCPServer : public PhysicalLayerAsyncBaseTCP { public: - PhysicalLayerAsyncTCPServer(Logger*, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const std::string& arAddress); + PhysicalLayerAsyncTCPServer(Logger*, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const std::string& arAddress, bool aUseKeepAlives = false); - /* Implement the remainging actions */ + /* Implement the remaining actions */ void DoOpen(); void DoOpeningClose(); //override this to cancel the acceptor instead of the socket void DoOpenSuccess(); @@ -43,6 +43,7 @@ class PhysicalLayerAsyncTCPServer : public PhysicalLayerAsyncBaseTCP boost::asio::ip::tcp::endpoint mRemoteEndpoint; boost::asio::ip::tcp::acceptor mAcceptor; + bool mUseKeepAlives; }; } diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPv4Client.h b/opendnp3/APL/PhysicalLayerAsyncTCPv4Client.h index 44043bbf..7c386773 100644 --- a/opendnp3/APL/PhysicalLayerAsyncTCPv4Client.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPv4Client.h @@ -29,7 +29,7 @@ namespace apl class PhysicalLayerAsyncTCPv4Client : public PhysicalLayerAsyncTCPClient { public: - PhysicalLayerAsyncTCPv4Client(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort) + PhysicalLayerAsyncTCPv4Client(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort, bool aUseKeepAlives = false) : PhysicalLayerAsyncTCPClient( apLogger, apIOService, @@ -37,7 +37,8 @@ class PhysicalLayerAsyncTCPv4Client : public PhysicalLayerAsyncTCPClient boost::asio::ip::tcp::v4(), aPort ), - arAddress + arAddress, + aUseKeepAlives ) {} }; diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPv4Server.h b/opendnp3/APL/PhysicalLayerAsyncTCPv4Server.h index 009ceeea..2a634ebf 100644 --- a/opendnp3/APL/PhysicalLayerAsyncTCPv4Server.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPv4Server.h @@ -28,7 +28,7 @@ namespace apl class PhysicalLayerAsyncTCPv4Server : public PhysicalLayerAsyncTCPServer { public: - PhysicalLayerAsyncTCPv4Server(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort) + PhysicalLayerAsyncTCPv4Server(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort, bool aUseKeepAlives = false) : PhysicalLayerAsyncTCPServer( apLogger, apIOService, @@ -36,7 +36,8 @@ class PhysicalLayerAsyncTCPv4Server : public PhysicalLayerAsyncTCPServer boost::asio::ip::tcp::v4(), aPort ), - arAddress + arAddress, + aUseKeepAlives ) {} }; diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPv6Client.h b/opendnp3/APL/PhysicalLayerAsyncTCPv6Client.h index 44d42d49..e5a9116a 100644 --- a/opendnp3/APL/PhysicalLayerAsyncTCPv6Client.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPv6Client.h @@ -29,7 +29,7 @@ namespace apl class PhysicalLayerAsyncTCPv6Client : public PhysicalLayerAsyncTCPClient { public: - PhysicalLayerAsyncTCPv6Client(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort) + PhysicalLayerAsyncTCPv6Client(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort, bool aUseKeepAlives = false) : PhysicalLayerAsyncTCPClient( apLogger, apIOService, @@ -37,7 +37,8 @@ class PhysicalLayerAsyncTCPv6Client : public PhysicalLayerAsyncTCPClient boost::asio::ip::tcp::v6(), aPort ), - arAddress + arAddress, + aUseKeepAlives ) {} }; diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPv6Server.h b/opendnp3/APL/PhysicalLayerAsyncTCPv6Server.h index 47737197..f8691b7f 100644 --- a/opendnp3/APL/PhysicalLayerAsyncTCPv6Server.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPv6Server.h @@ -28,7 +28,7 @@ namespace apl class PhysicalLayerAsyncTCPv6Server : public PhysicalLayerAsyncTCPServer { public: - PhysicalLayerAsyncTCPv6Server(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort) + PhysicalLayerAsyncTCPv6Server(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort, bool aUseKeepAlives = false) : PhysicalLayerAsyncTCPServer( apLogger, apIOService, @@ -36,7 +36,8 @@ class PhysicalLayerAsyncTCPv6Server : public PhysicalLayerAsyncTCPServer boost::asio::ip::tcp::v6(), aPort ), - arAddress + arAddress, + aUseKeepAlives ) {} }; diff --git a/opendnp3/APL/PhysicalLayerFactory.cpp b/opendnp3/APL/PhysicalLayerFactory.cpp index 74f17f5c..9f1dfb64 100644 --- a/opendnp3/APL/PhysicalLayerFactory.cpp +++ b/opendnp3/APL/PhysicalLayerFactory.cpp @@ -36,24 +36,24 @@ IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetSerialAsync(SerialSettings return boost::bind(&PhysicalLayerFactory::FGetSerialAsync, s, _2, _1); } -IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort) +IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort, bool aUseKeepAlives) { - return boost::bind(&PhysicalLayerFactory::FGetTCPv4ClientAsync, aAddress, aPort, _2, _1); + return boost::bind(&PhysicalLayerFactory::FGetTCPv4ClientAsync, aAddress, aPort, aUseKeepAlives, _2, _1); } -IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort) +IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort, bool aUseKeepAlives) { - return boost::bind(&PhysicalLayerFactory::FGetTCPv4ServerAsync, aEndpoint, aPort, _2, _1); + return boost::bind(&PhysicalLayerFactory::FGetTCPv4ServerAsync, aEndpoint, aPort, aUseKeepAlives, _2, _1); } -IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort) +IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort, bool aUseKeepAlives) { - return boost::bind(&PhysicalLayerFactory::FGetTCPv6ClientAsync, aAddress, aPort, _2, _1); + return boost::bind(&PhysicalLayerFactory::FGetTCPv6ClientAsync, aAddress, aPort, aUseKeepAlives, _2, _1); } -IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort) +IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort, bool aUseKeepAlives) { - return boost::bind(&PhysicalLayerFactory::FGetTCPv6ServerAsync, aEndpoint, aPort, _2, _1); + return boost::bind(&PhysicalLayerFactory::FGetTCPv6ServerAsync, aEndpoint, aPort, aUseKeepAlives, _2, _1); } IPhysicalLayerAsync* PhysicalLayerFactory :: FGetSerialAsync(SerialSettings s, boost::asio::io_service* apSrv, Logger* apLogger) @@ -61,24 +61,24 @@ IPhysicalLayerAsync* PhysicalLayerFactory :: FGetSerialAsync(SerialSettings s, b return new PhysicalLayerAsyncSerial(apLogger, apSrv, s); } -IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger) +IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort, bool aUseKeepAlives, boost::asio::io_service* apSrv, Logger* apLogger) { - return new PhysicalLayerAsyncTCPv4Client(apLogger, apSrv, aAddress, aPort); + return new PhysicalLayerAsyncTCPv4Client(apLogger, apSrv, aAddress, aPort, aUseKeepAlives); } -IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger) +IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort, bool aUseKeepAlives, boost::asio::io_service* apSrv, Logger* apLogger) { - return new PhysicalLayerAsyncTCPv4Server(apLogger, apSrv, aEndpoint, aPort); + return new PhysicalLayerAsyncTCPv4Server(apLogger, apSrv, aEndpoint, aPort, aUseKeepAlives); } -IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger) +IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort, bool aUseKeepAlives, boost::asio::io_service* apSrv, Logger* apLogger) { - return new PhysicalLayerAsyncTCPv6Client(apLogger, apSrv, aAddress, aPort); + return new PhysicalLayerAsyncTCPv6Client(apLogger, apSrv, aAddress, aPort, aUseKeepAlives); } -IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger) +IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort, bool aUseKeepAlives, boost::asio::io_service* apSrv, Logger* apLogger) { - return new PhysicalLayerAsyncTCPv6Server(apLogger, apSrv, aEndpoint, aPort); + return new PhysicalLayerAsyncTCPv6Server(apLogger, apSrv, aEndpoint, aPort, aUseKeepAlives); } } diff --git a/opendnp3/APL/PhysicalLayerFactory.h b/opendnp3/APL/PhysicalLayerFactory.h index 41e96619..4b9e031d 100644 --- a/opendnp3/APL/PhysicalLayerFactory.h +++ b/opendnp3/APL/PhysicalLayerFactory.h @@ -34,17 +34,17 @@ class PhysicalLayerFactory public: static IPhysicalLayerAsyncFactory GetSerialAsync(SerialSettings s); - static IPhysicalLayerAsyncFactory GetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort); - static IPhysicalLayerAsyncFactory GetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort); - static IPhysicalLayerAsyncFactory GetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort); - static IPhysicalLayerAsyncFactory GetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort); + static IPhysicalLayerAsyncFactory GetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort, bool aUseKeepAlives); + static IPhysicalLayerAsyncFactory GetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort, bool aUseKeepAlives); + static IPhysicalLayerAsyncFactory GetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort, bool aUseKeepAlives); + static IPhysicalLayerAsyncFactory GetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort, bool aUseKeepAlives); //normal factory functions static IPhysicalLayerAsync* FGetSerialAsync(SerialSettings s, boost::asio::io_service* apSrv, Logger* apLogger); - static IPhysicalLayerAsync* FGetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger); - static IPhysicalLayerAsync* FGetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger); - static IPhysicalLayerAsync* FGetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger); - static IPhysicalLayerAsync* FGetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort, boost::asio::io_service* apSrv, Logger* apLogger); + static IPhysicalLayerAsync* FGetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort, bool aUseKeepAlives, boost::asio::io_service* apSrv, Logger* apLogger); + static IPhysicalLayerAsync* FGetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort, bool aUseKeepAlives, boost::asio::io_service* apSrv, Logger* apLogger); + static IPhysicalLayerAsync* FGetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort, bool aUseKeepAlives, boost::asio::io_service* apSrv, Logger* apLogger); + static IPhysicalLayerAsync* FGetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort, bool aUseKeepAlives, boost::asio::io_service* apSrv, Logger* apLogger); }; } diff --git a/opendnp3/APL/PhysicalLayerManager.cpp b/opendnp3/APL/PhysicalLayerManager.cpp index 86b6d44e..57a53673 100644 --- a/opendnp3/APL/PhysicalLayerManager.cpp +++ b/opendnp3/APL/PhysicalLayerManager.cpp @@ -61,28 +61,28 @@ void PhysicalLayerManager ::AddPhysicalLayer(const std::string& arName, PhysLaye void PhysicalLayerManager ::AddTCPv4Client(const std::string& arName, PhysLayerSettings s, const std::string& arAddr, boost::uint16_t aPort) { - IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv4ClientAsync(arAddr, aPort); + IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv4ClientAsync(arAddr, aPort, s.UseKeepAlives); PhysLayerInstance pli(fac); this->AddLayer(arName, s, pli); } void PhysicalLayerManager ::AddTCPv4Server(const std::string& arName, PhysLayerSettings s, const std::string& arEndpoint, boost::uint16_t aPort) { - IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv4ServerAsync(arEndpoint, aPort); + IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv4ServerAsync(arEndpoint, aPort, s.UseKeepAlives); PhysLayerInstance pli(fac); this->AddLayer(arName, s, pli); } void PhysicalLayerManager ::AddTCPv6Client(const std::string& arName, PhysLayerSettings s, const std::string& arAddr, boost::uint16_t aPort) { - IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv6ClientAsync(arAddr, aPort); + IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv6ClientAsync(arAddr, aPort, s.UseKeepAlives); PhysLayerInstance pli(fac); this->AddLayer(arName, s, pli); } void PhysicalLayerManager ::AddTCPv6Server(const std::string& arName, PhysLayerSettings s, const std::string& arEndpoint, boost::uint16_t aPort) { - IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv6ServerAsync(arEndpoint, aPort); + IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv6ServerAsync(arEndpoint, aPort, s.UseKeepAlives); PhysLayerInstance pli(fac); this->AddLayer(arName, s, pli); } From cc4f4268486132db2d98557a18e13f47c5e2efbf Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Wed, 20 Nov 2013 00:37:40 -0800 Subject: [PATCH 33/51] Resolve the remote address at each connection attempt --- opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp | 7 ++++--- opendnp3/APL/PhysicalLayerAsyncTCPClient.h | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp b/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp index 72d99804..dccbf105 100644 --- a/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp +++ b/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp @@ -36,13 +36,14 @@ PhysicalLayerAsyncTCPClient::PhysicalLayerAsyncTCPClient(Logger* apLogger, boost : PhysicalLayerAsyncBaseTCP(apLogger, apIOService) , mRemoteEndpoint(arEndpoint) , mUseKeepAlives(aUseKeepAlives) -{ - mRemoteEndpoint.address( ResolveAddress(arAddress) ); -} + , mRemoteAddress(arAddress) +{} /* Implement the actions */ void PhysicalLayerAsyncTCPClient::DoOpen() { + /* Re-resolve the remote address each time just in case DNS shifts things on us */ + mRemoteEndpoint.address( ResolveAddress(mRemoteAddress) ); mSocket.async_connect(mRemoteEndpoint, boost::bind(&PhysicalLayerAsyncTCPClient::OnOpenCallback, this, diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPClient.h b/opendnp3/APL/PhysicalLayerAsyncTCPClient.h index 23a3be87..c625969b 100644 --- a/opendnp3/APL/PhysicalLayerAsyncTCPClient.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPClient.h @@ -39,6 +39,7 @@ class PhysicalLayerAsyncTCPClient : public PhysicalLayerAsyncBaseTCP private: boost::asio::ip::tcp::endpoint mRemoteEndpoint; bool mUseKeepAlives; + std::string mRemoteAddress; }; } From c64cb18698b94c310236257c68efc039fcbd8e34 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Wed, 20 Nov 2013 00:39:26 -0800 Subject: [PATCH 34/51] Bump revision to 1.1.1 --- DNP3Java/pom.xml | 2 +- config/doxygen.config | 2 +- configure.ac | 2 +- opendnp3/version.hpp | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/DNP3Java/pom.xml b/DNP3Java/pom.xml index 81c87c22..88db5b4d 100644 --- a/DNP3Java/pom.xml +++ b/DNP3Java/pom.xml @@ -4,7 +4,7 @@ org.totalgrid.reef.protocol.dnp3 dnp3java jar - 1.1.0-SNAPSHOT + 1.1.1 diff --git a/config/doxygen.config b/config/doxygen.config index 18a11b86..8eb687ea 100644 --- a/config/doxygen.config +++ b/config/doxygen.config @@ -31,7 +31,7 @@ PROJECT_NAME = "OpenDNP3" # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 1.1.0-dev +PROJECT_NUMBER = 1.1.1 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff --git a/configure.ac b/configure.ac index 1caf6108..4ec540de 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([opendnp3], [1.1.0], [open-dnp3@googlegroups.com]) +AC_INIT([opendnp3], [1.1.1], [open-dnp3@googlegroups.com]) AC_COPYRIGHT([(C) 2010, 2011 Green Energy Corp. All rights reserved.]) srcdir="`cd $srcdir; pwd`" diff --git a/opendnp3/version.hpp b/opendnp3/version.hpp index bfa97451..4701d1e0 100644 --- a/opendnp3/version.hpp +++ b/opendnp3/version.hpp @@ -9,12 +9,12 @@ // OPENDNP3_VERSION / 100 % 1000 is the minor version // OPENDNP3_VERSION / 100000 is the major version -#define OPENDNP3_VERSION 100100 +#define OPENDNP3_VERSION 100101 // OPENDNP3_LIB_VERSION must be defined to be the same as OPENDNP3_VERSION // but as a *string* in the form "x_y[_z]" where x is the major version // number, y is the minor version number, and z is the patch level if not 0. -#define OPENDNP3_LIB_VERSION "1_1_0" +#define OPENDNP3_LIB_VERSION "1_1_1" #endif From f6bbf8c49e08abf5bf07a72adac6c827072d5458 Mon Sep 17 00:00:00 2001 From: Hung Le Date: Tue, 4 Feb 2014 10:08:23 -0800 Subject: [PATCH 35/51] WIP: Changed StackManager to take log filter level argument --- opendnp3/DNP3/StackManager.cpp | 4 ++-- opendnp3/DNP3/StackManager.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/opendnp3/DNP3/StackManager.cpp b/opendnp3/DNP3/StackManager.cpp index 2dffd3cb..ab8bc9b7 100644 --- a/opendnp3/DNP3/StackManager.cpp +++ b/opendnp3/DNP3/StackManager.cpp @@ -24,9 +24,9 @@ namespace apl namespace dnp { -StackManager::StackManager() +StackManager::StackManager(FilterLevel aLevel) : mpLog ( new EventLog() ) - , mpImpl ( new AsyncStackManager(mpLog->GetLogger(LEV_WARNING, "dnp")) ) + , mpImpl ( new AsyncStackManager(mpLog->GetLogger(aLevel, "dnp")) ) {} void StackManager::AddLogHook(ILogBase* apHook) diff --git a/opendnp3/DNP3/StackManager.h b/opendnp3/DNP3/StackManager.h index 5f7680b2..8b8be508 100644 --- a/opendnp3/DNP3/StackManager.h +++ b/opendnp3/DNP3/StackManager.h @@ -51,7 +51,7 @@ class AsyncStackManager; class StackManager { public: - StackManager(); + explicit StackManager(FilterLevel aLevel); ~StackManager(); void AddTCPClient(const std::string& arName, From 8a51c06e7cb8fe2e705ed37160e92c8c35ceb0ac Mon Sep 17 00:00:00 2001 From: Hung Le Date: Fri, 7 Mar 2014 16:14:32 -0800 Subject: [PATCH 36/51] Ported fix for conformance issue with unsolicited when the outstation receives a READ request while waiting for an unsolicited confirm when it should abort any retries --- DNP3Test/MockAppLayer.cpp | 6 ++++++ DNP3Test/MockAppLayer.h | 2 ++ opendnp3/DNP3/AppInterfaces.h | 7 +++++++ opendnp3/DNP3/AppLayer.cpp | 5 +++++ opendnp3/DNP3/AppLayer.h | 1 + opendnp3/DNP3/AppLayerChannel.cpp | 5 +++++ opendnp3/DNP3/AppLayerChannel.h | 1 + opendnp3/DNP3/SlaveStates.cpp | 1 + 8 files changed, 28 insertions(+) diff --git a/DNP3Test/MockAppLayer.cpp b/DNP3Test/MockAppLayer.cpp index 87cc7049..aeb5f64d 100644 --- a/DNP3Test/MockAppLayer.cpp +++ b/DNP3Test/MockAppLayer.cpp @@ -31,6 +31,7 @@ namespace dnp MockAppLayer::MockAppLayer(Logger* apLogger) : Loggable(apLogger), mNumCancel(0), + mNumCancelUnsolicited(0), mpUser(NULL), mAutoSendCallback(true), mIsSuccess(true) @@ -120,5 +121,10 @@ void MockAppLayer::CancelResponse() ++mNumCancel; } +void MockAppLayer::CancelUnsolicitedRetries() +{ + ++mNumCancelUnsolicited; +} + } } diff --git a/DNP3Test/MockAppLayer.h b/DNP3Test/MockAppLayer.h index d88102ce..be40f927 100644 --- a/DNP3Test/MockAppLayer.h +++ b/DNP3Test/MockAppLayer.h @@ -50,8 +50,10 @@ class MockAppLayer : public IAppLayer, public Loggable void SendUnsolicited(APDU&); void SendRequest(APDU&); void CancelResponse(); + void CancelUnsolicitedRetries(); size_t mNumCancel; + size_t mNumCancelUnsolicited; void EnableAutoSendCallback(bool aIsSuccess); void DisableAutoSendCallback(); diff --git a/opendnp3/DNP3/AppInterfaces.h b/opendnp3/DNP3/AppInterfaces.h index b86d856e..7bf85919 100644 --- a/opendnp3/DNP3/AppInterfaces.h +++ b/opendnp3/DNP3/AppInterfaces.h @@ -103,6 +103,13 @@ class IAppLayer 4.2.1 - ReadRules - Rule 1 */ virtual void CancelResponse() = 0; + + /** + Cancel a running unsolicited transaction + + This behavior is necessary so that retries can be aborted if a READ is received + */ + virtual void CancelUnsolicitedRetries() = 0; }; diff --git a/opendnp3/DNP3/AppLayer.cpp b/opendnp3/DNP3/AppLayer.cpp index 87c0675a..2a6459d1 100644 --- a/opendnp3/DNP3/AppLayer.cpp +++ b/opendnp3/DNP3/AppLayer.cpp @@ -88,6 +88,11 @@ void AppLayer::CancelResponse() mSolicited.Cancel(); } +void AppLayer::CancelUnsolicitedRetries() +{ + mUnsolicited.CancelRetries(); +} + //////////////////// // External events //////////////////// diff --git a/opendnp3/DNP3/AppLayer.h b/opendnp3/DNP3/AppLayer.h index d53f8e0b..109e0124 100644 --- a/opendnp3/DNP3/AppLayer.h +++ b/opendnp3/DNP3/AppLayer.h @@ -65,6 +65,7 @@ class AppLayer : public IUpperLayer, public IAppLayer void SendResponse(APDU&); void SendRequest(APDU&); void CancelResponse(); + void CancelUnsolicitedRetries(); private: diff --git a/opendnp3/DNP3/AppLayerChannel.cpp b/opendnp3/DNP3/AppLayerChannel.cpp index cbe41fed..251d61ca 100644 --- a/opendnp3/DNP3/AppLayerChannel.cpp +++ b/opendnp3/DNP3/AppLayerChannel.cpp @@ -81,6 +81,11 @@ void AppLayerChannel::Cancel() mpState->Cancel(this); } +void AppLayerChannel::CancelRetries() +{ + LOG_BLOCK(LEV_INFO, "Canceling channel retries"); + mNumRetry = 0; +} // ---- State Actions ---- diff --git a/opendnp3/DNP3/AppLayerChannel.h b/opendnp3/DNP3/AppLayerChannel.h index 94483126..ba4c77e0 100644 --- a/opendnp3/DNP3/AppLayerChannel.h +++ b/opendnp3/DNP3/AppLayerChannel.h @@ -68,6 +68,7 @@ class AppLayerChannel : public Loggable // send, wether a response is expected is implicit based on func code void Send(APDU&, size_t aNumRetry); void Cancel(); + void CancelRetries(); // Events void OnSendSuccess(); diff --git a/opendnp3/DNP3/SlaveStates.cpp b/opendnp3/DNP3/SlaveStates.cpp index f0faf685..c94fded6 100644 --- a/opendnp3/DNP3/SlaveStates.cpp +++ b/opendnp3/DNP3/SlaveStates.cpp @@ -335,6 +335,7 @@ void AS_WaitForUnsolSuccess::OnRequest(Slave* c, const APDU& arAPDU, SequenceInf LOGGER_BLOCK(c->mpLogger, LEV_DEBUG, "AS_WaitForUnsolSuccess::OnRequest(Slave*)"); if (arAPDU.GetFunction() == FC_READ) { //read requests should be defered until after the unsol + c->mpAppLayer->CancelUnsolicitedRetries(); c->mRequest = arAPDU; c->mSeqInfo = aSeqInfo; c->mDeferredRequest = true; From 1e44c84aa5b562287fe7681d2b3aaaae45a08135 Mon Sep 17 00:00:00 2001 From: Hung Le Date: Wed, 5 Feb 2014 18:44:48 -0800 Subject: [PATCH 37/51] Log to file within StackManager to work around callback issue to Java --- opendnp3/DNP3/StackManager.cpp | 7 ++++--- opendnp3/DNP3/StackManager.h | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/opendnp3/DNP3/StackManager.cpp b/opendnp3/DNP3/StackManager.cpp index ab8bc9b7..a31240c1 100644 --- a/opendnp3/DNP3/StackManager.cpp +++ b/opendnp3/DNP3/StackManager.cpp @@ -24,9 +24,10 @@ namespace apl namespace dnp { -StackManager::StackManager(FilterLevel aLevel) - : mpLog ( new EventLog() ) - , mpImpl ( new AsyncStackManager(mpLog->GetLogger(aLevel, "dnp")) ) +StackManager::StackManager(FilterLevel aLevel, const std::string& logFile) + : mpLog ( new EventLog() ) + , mpLogToFile( new LogToFile(mpLog, logFile) ) + , mpImpl ( new AsyncStackManager(mpLog->GetLogger(aLevel, "dnp")) ) {} void StackManager::AddLogHook(ILogBase* apHook) diff --git a/opendnp3/DNP3/StackManager.h b/opendnp3/DNP3/StackManager.h index 8b8be508..deed91f6 100644 --- a/opendnp3/DNP3/StackManager.h +++ b/opendnp3/DNP3/StackManager.h @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -51,7 +52,7 @@ class AsyncStackManager; class StackManager { public: - explicit StackManager(FilterLevel aLevel); + StackManager(FilterLevel aLevel, const std::string& logFile); ~StackManager(); void AddTCPClient(const std::string& arName, @@ -131,6 +132,7 @@ class StackManager private: EventLog* mpLog; + LogToFile* mpLogToFile; AsyncStackManager* mpImpl; }; From 1ad21fa451596e4fb37eaac4834c817e4108527f Mon Sep 17 00:00:00 2001 From: Hung Le Date: Thu, 6 Feb 2014 14:15:25 -0800 Subject: [PATCH 38/51] Disable strict aliasing optimization per Swig's guidance --- configure.ac | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 4ec540de..ec56918f 100644 --- a/configure.ac +++ b/configure.ac @@ -35,7 +35,7 @@ if test "$ac_lcov_enabled" = yes; then AC_CHECK_PROGS(genhtml, genhtml) AC_CHECK_PROGS(gendesc, gendesc) AC_CHECK_PROGS(geninfo, geninfo) - if ! test "$lcov" || ! test "$genhtml" || ! test "$gendesc" || + if ! test "$lcov" || ! test "$genhtml" || ! test "$gendesc" || ! test "$geninfo"; then AC_MSG_ERROR([Could not find lcov utilities, do you have lcov installed?]) fi @@ -106,6 +106,9 @@ if test "$want_java" = yes; then else CPPFLAGS="$CPPFLAGS -I/usr/lib/jvm/default-java/include" fi + CFLAGS="-g -O2 -fno-strict-aliasing" + CXXFLAGS="-g -O2 -fno-strict-aliasing" + AC_CHECK_HEADERS([jni.h] ,,AC_MSG_ERROR(missing header)) AM_PROG_GCJ fi From c8cdb33bb9de85b4acfb8c445c9741a24be67d7d Mon Sep 17 00:00:00 2001 From: Hung Le Date: Thu, 6 Mar 2014 14:41:46 -0800 Subject: [PATCH 39/51] Handle case where the host name failed to be resolved --- opendnp3/APL/PhysicalLayerAsyncBaseTCP.cpp | 19 ++++++++++++------- opendnp3/APL/PhysicalLayerAsyncBaseTCP.h | 3 ++- opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp | 17 ++++++++++++----- opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp | 8 +++++++- 4 files changed, 33 insertions(+), 14 deletions(-) mode change 100644 => 100755 opendnp3/APL/PhysicalLayerAsyncBaseTCP.cpp mode change 100644 => 100755 opendnp3/APL/PhysicalLayerAsyncBaseTCP.h mode change 100644 => 100755 opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp mode change 100644 => 100755 opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp diff --git a/opendnp3/APL/PhysicalLayerAsyncBaseTCP.cpp b/opendnp3/APL/PhysicalLayerAsyncBaseTCP.cpp old mode 100644 new mode 100755 index 3805219c..e993d52d --- a/opendnp3/APL/PhysicalLayerAsyncBaseTCP.cpp +++ b/opendnp3/APL/PhysicalLayerAsyncBaseTCP.cpp @@ -91,16 +91,18 @@ void PhysicalLayerAsyncBaseTCP::ShutdownSocket() if(ec) LOG_BLOCK(LEV_WARNING, "Error while shutting down socket: " << ec.message()); } -boost::asio::ip::address PhysicalLayerAsyncBaseTCP::ResolveAddress(const std::string& arEndpoint) +boost::asio::ip::address PhysicalLayerAsyncBaseTCP::ResolveAddress(const std::string& arEndpoint, + boost::system::error_code& ec) { LOG_BLOCK(LEV_DEBUG, "converting address '" << arEndpoint << "' to an IP address object"); try { - boost::system::error_code ec; - boost::asio::ip::address addr = boost::asio::ip::address::from_string(arEndpoint, ec); - if (ec) { + boost::system::error_code address_ec; + boost::asio::ip::address addr = boost::asio::ip::address::from_string(arEndpoint, address_ec); + if (address_ec) { LOG_BLOCK(LEV_DEBUG, "unable to convert address to object"); throw ArgumentException(LOCATION, "endpoint: " + arEndpoint + " is invalid"); } + LOG_BLOCK(LEV_DEBUG, "address converted to object: " << addr.to_string()); if (addr.is_v6()) { boost::asio::ip::address_v6 addrv6(addr.to_v6()); @@ -110,10 +112,15 @@ boost::asio::ip::address PhysicalLayerAsyncBaseTCP::ResolveAddress(const std::st return addr; } catch (...) { LOG_BLOCK(LEV_DEBUG, "attempting to resolve address '" << arEndpoint << "'"); + boost::asio::io_service io_service; boost::asio::ip::tcp::resolver resolver(io_service); boost::asio::ip::tcp::resolver::query query(arEndpoint, ""); - boost::asio::ip::tcp::resolver::iterator iter = resolver.resolve(query); + boost::asio::ip::tcp::resolver::iterator iter = resolver.resolve(query, ec); + + // On failure to resolve + if (ec) return boost::asio::ip::address(); + boost::asio::ip::tcp::resolver::iterator end; while (iter != end) { @@ -126,8 +133,6 @@ boost::asio::ip::address PhysicalLayerAsyncBaseTCP::ResolveAddress(const std::st } return ep.address(); } - LOG_BLOCK(LEV_DEBUG, "unable to resolve address '" << arEndpoint << "'") - throw ArgumentException(LOCATION, "endpoint: " + arEndpoint + " is invalid"); } } diff --git a/opendnp3/APL/PhysicalLayerAsyncBaseTCP.h b/opendnp3/APL/PhysicalLayerAsyncBaseTCP.h old mode 100644 new mode 100755 index d50b045d..6a401b7c --- a/opendnp3/APL/PhysicalLayerAsyncBaseTCP.h +++ b/opendnp3/APL/PhysicalLayerAsyncBaseTCP.h @@ -48,7 +48,8 @@ class PhysicalLayerAsyncBaseTCP : public PhysicalLayerAsyncASIO boost::asio::ip::tcp::socket mSocket; void CloseSocket(); - boost::asio::ip::address ResolveAddress(const std::string& arEndpoint); + boost::asio::ip::address ResolveAddress(const std::string& arEndpoint, + boost::system::error_code& ec); private: void ShutdownSocket(); diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp b/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp old mode 100644 new mode 100755 index dccbf105..7fe3782c --- a/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp +++ b/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp @@ -43,11 +43,18 @@ PhysicalLayerAsyncTCPClient::PhysicalLayerAsyncTCPClient(Logger* apLogger, boost void PhysicalLayerAsyncTCPClient::DoOpen() { /* Re-resolve the remote address each time just in case DNS shifts things on us */ - mRemoteEndpoint.address( ResolveAddress(mRemoteAddress) ); - mSocket.async_connect(mRemoteEndpoint, - boost::bind(&PhysicalLayerAsyncTCPClient::OnOpenCallback, - this, - boost::asio::placeholders::error)); + boost::system::error_code ec; + boost::asio::ip::address addr = ResolveAddress(mRemoteAddress, ec); + if (ec) { + OnOpenCallback(ec); + } + else { + mRemoteEndpoint.address(addr); + mSocket.async_connect(mRemoteEndpoint, + boost::bind(&PhysicalLayerAsyncTCPClient::OnOpenCallback, + this, + boost::asio::placeholders::error)); + } } void PhysicalLayerAsyncTCPClient::DoOpeningClose() diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp b/opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp old mode 100644 new mode 100755 index de82d3be..2f1e3c8e --- a/opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp +++ b/opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp @@ -39,7 +39,13 @@ PhysicalLayerAsyncTCPServer::PhysicalLayerAsyncTCPServer(Logger* apLogger, boost , mAcceptor(*apIOService) , mUseKeepAlives(aUseKeepAlives) { - mLocalEndpoint.address( ResolveAddress(arAddress) ); + boost::system::error_code ec; + boost::asio::ip::address addr = ResolveAddress(arAddress, ec); + if (ec) { + throw ArgumentException(LOCATION, "endpoint: " + arAddress + ", " + ec.message()); + } + + mLocalEndpoint.address(addr); } /* Implement the actions */ From eb43e283acba81b072d1578933d9399ff29d47ec Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Mon, 10 Mar 2014 20:42:12 +0000 Subject: [PATCH 40/51] Bumped to v1.1.2 --- config/doxygen.config | 2 +- configure.ac | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/doxygen.config b/config/doxygen.config index 8eb687ea..762f0bb1 100644 --- a/config/doxygen.config +++ b/config/doxygen.config @@ -31,7 +31,7 @@ PROJECT_NAME = "OpenDNP3" # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 1.1.1 +PROJECT_NUMBER = 1.1.2 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff --git a/configure.ac b/configure.ac index ec56918f..46f89c47 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([opendnp3], [1.1.1], [open-dnp3@googlegroups.com]) +AC_INIT([opendnp3], [1.1.2], [open-dnp3@googlegroups.com]) AC_COPYRIGHT([(C) 2010, 2011 Green Energy Corp. All rights reserved.]) srcdir="`cd $srcdir; pwd`" From a6d4c06a50ef57a447e88b387b70004aa3cdeb0d Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Mon, 10 Mar 2014 21:26:21 +0000 Subject: [PATCH 41/51] Added debian package files Basic process flow: Dependencies -- once per compile machine ---------------------------------------- sudo apt-get install -y \ dh-make devscripts dh-autoreconf \ libboost-all-dev \ oracle-java7-installer \ swig Common variables used below --------------------------- export PN="opendnp3" export PV="1.1.2" export P="${PN}-${PV}" export ORIG_TARBALL="${PN}_${PV}.orig.tar.gz" Step 1 - create the .orig.tar.gz file ------------------------------------- git clone github:sentient-energy/dnp3.git ${P} rm -rf ${P}/debian/ ${P}/.git tar cfz ${ORIG_TARBALL} ${P} rm -rf ${P} Step 2 - create the DEB(s) -------------------------- git clone github:sentient-energy/dnp3.git ${P} cd ${P} debuild -uc -us Step 3 - get the DEB(s) ----------------------- cd .. ls -la *.deb --- configure.ac | 4 +-- debian/README.Debian | 6 ++++ debian/README.source | 9 +++++ debian/changelog | 53 ++++++++++++++++++++++++++++++ debian/compat | 1 + debian/control | 14 ++++++++ debian/copyright | 30 +++++++++++++++++ debian/docs | 3 ++ debian/files | 1 + debian/opendnp3.debhelper.log | 35 ++++++++++++++++++++ debian/opendnp3.postinst.debhelper | 5 +++ debian/opendnp3.postrm.debhelper | 5 +++ debian/opendnp3.substvars | 2 ++ debian/patches/series | 0 debian/rules | 30 +++++++++++++++++ debian/source/format | 1 + debian/stamp-autotools | 0 debian/stamp-autotools-files | 0 debian/stamp-makefile-build | 0 debian/stamp-makefile-install | 0 20 files changed, 197 insertions(+), 2 deletions(-) create mode 100644 debian/README.Debian create mode 100644 debian/README.source create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/docs create mode 100644 debian/files create mode 100644 debian/opendnp3.debhelper.log create mode 100644 debian/opendnp3.postinst.debhelper create mode 100644 debian/opendnp3.postrm.debhelper create mode 100644 debian/opendnp3.substvars create mode 100644 debian/patches/series create mode 100755 debian/rules create mode 100644 debian/source/format create mode 100644 debian/stamp-autotools create mode 100644 debian/stamp-autotools-files create mode 100644 debian/stamp-makefile-build create mode 100644 debian/stamp-makefile-install diff --git a/configure.ac b/configure.ac index 46f89c47..5f8694aa 100644 --- a/configure.ac +++ b/configure.ac @@ -102,9 +102,9 @@ AC_ARG_WITH([java], if test "$want_java" = yes; then want_swig="yes" if test "x$ac_java_path" != "x"; then - CPPFLAGS="$CPPFLAGS -I$ac_java_path" + CPPFLAGS="$CPPFLAGS -I$ac_java_path -I$ac_java_path/linux" else - CPPFLAGS="$CPPFLAGS -I/usr/lib/jvm/default-java/include" + CPPFLAGS="$CPPFLAGS -I/usr/lib/jvm/default-java/include -I/usr/lib/jvm/default-java/include/linux -I/usr/lib/jvm/java-7-oracle/include -I/usr/lib/jvm/java-7-oracle/include/linux" fi CFLAGS="-g -O2 -fno-strict-aliasing" CXXFLAGS="-g -O2 -fno-strict-aliasing" diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 00000000..0a41f14e --- /dev/null +++ b/debian/README.Debian @@ -0,0 +1,6 @@ +opendnp3 for Debian +------------------- + + + + -- Chris Verges Mon, 18 Jun 2012 22:09:03 -0700 diff --git a/debian/README.source b/debian/README.source new file mode 100644 index 00000000..ab649dfc --- /dev/null +++ b/debian/README.source @@ -0,0 +1,9 @@ +opendnp3 for Debian +------------------- + + + + + + diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 00000000..54061d00 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,53 @@ +opendnp3 (1.1.2-0sentient0) unstable; urgency=low + + * Fixed unsolicited message conformance issue + * Enabled logging to file within Java StackManager + * Disabled strict aliasing optimization as per Swig recommendations + * Handled case where host name resolution fails + + -- Chris Verges Mon, 10 Mar 2014 13:48:00 -0800 + +opendnp3 (1.1.1-0sentient0) unstable; urgency=low + + * Fixed 'Time Needed' IIN bit algorithm to handle COMMS_DOWN more gracefully + * Added name of the physical layer in unknown route log entries + * Added SO_KEEPALIVE support for TCP sockets + * Fixed DNS resolution of endpoint addresses + + -- Chris Verges Wed, 20 Nov 2013 00:13:00 -0700 + +opendnp3 (1.1.0-0sentient0) unstable; urgency=low + + * Added AddTCP[Client|Server] API for backwards compatibility + + -- Chris Verges Tue, 16 Apr 2013 21:41:41 -0700 + +opendnp3 (1.1.0pre6-0sentient0) unstable; urgency=low + + * Added AddTCP[Client|Server] API for backwards compatibility + + -- Chris Verges Wed, 12 Sep 2012 00:31:05 -0700 + +opendnp3 (1.1.0pre5-0sentient0) unstable; urgency=low + + * Added AddTCP[Client|Server] API for backwards compatibility + + -- Chris Verges Tue, 11 Sep 2012 11:07:34 -0700 + +opendnp3 (1.1.0pre4-0sentient0) unstable; urgency=low + + * Added TCPv6[Client|Server] headers for development + + -- Chris Verges Wed, 18 Jul 2012 16:28:42 -0700 + +opendnp3 (1.1.0pre3-0sentient0) unstable; urgency=low + + * Reverted TCPClient/TCPServer XML tags + + -- Chris Verges Sat, 14 Jul 2012 02:47:48 -0700 + +opendnp3 (1.1.0pre2-0sentient0) unstable; urgency=low + + * Initial release. + + -- Chris Verges Sat, 14 Jul 2012 00:32:00 -0700 diff --git a/debian/compat b/debian/compat new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +8 diff --git a/debian/control b/debian/control new file mode 100644 index 00000000..8927ad70 --- /dev/null +++ b/debian/control @@ -0,0 +1,14 @@ +Source: opendnp3 +Section: misc +Priority: extra +Maintainer: Chris Verges +Build-Depends: autotools-dev, dh-autoreconf, debhelper (>= 8.0.0), libboost1.46-all-dev | libboost-all-dev, default-jvm | oracle-java7-installer, swig +Standards-Version: 3.9.2 +Homepage: https://github.com/cverges/dnp3 + +Package: opendnp3 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Open source DNP3 stack + The OpenDNP3 project provides an open source DNP3 implementation. + diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 00000000..523749d4 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,30 @@ +Format: http://dep.debian.net/deps/dep5 +Upstream-Name: opendnp3 +Source: http://code.google.com/p/dnp3 + +Files: * +Copyright: 2010, 2011, 2012 Green Energy Corp. +License: Apache-2.0 + +Files: debian/* +Copyright: 2012 Chris Verges +License: Apache-2.0 + +License: Apache-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + . + http://www.apache.org/licenses/LICENSE-2.0 + . + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + . + On Debian systems, the complete text of the Apache version 2.0 license + can be found in "/usr/share/common-licenses/Apache-2.0". + +# Please also look if there are files or directories which have a +# different copyright/license attached and list them here. diff --git a/debian/docs b/debian/docs new file mode 100644 index 00000000..b2f6cd20 --- /dev/null +++ b/debian/docs @@ -0,0 +1,3 @@ +NEWS +README +CHANGELOG.markdown diff --git a/debian/files b/debian/files new file mode 100644 index 00000000..a7593e3a --- /dev/null +++ b/debian/files @@ -0,0 +1 @@ +opendnp3_1.1.1-0sentient0_amd64.deb misc extra diff --git a/debian/opendnp3.debhelper.log b/debian/opendnp3.debhelper.log new file mode 100644 index 00000000..5586411b --- /dev/null +++ b/debian/opendnp3.debhelper.log @@ -0,0 +1,35 @@ +dh_prep +dh_installdirs +dh_installdirs +dh_installdocs +dh_installexamples +dh_installman +dh_installinfo +dh_installmenu +dh_installcron +dh_installinit +dh_installdebconf +dh_installemacsen +dh_installcatalogs +dh_installpam +dh_installlogrotate +dh_installlogcheck +dh_installchangelogs +dh_installudev +dh_lintian +dh_bugfiles +dh_install +dh_link +dh_installmime +dh_installgsettings +dh_strip +dh_compress +dh_fixperms +dh_makeshlibs +dh_installdeb +dh_perl +dh_shlibdeps +dh_gencontrol +dh_md5sums +dh_builddeb +dh_builddeb diff --git a/debian/opendnp3.postinst.debhelper b/debian/opendnp3.postinst.debhelper new file mode 100644 index 00000000..3d89d3ef --- /dev/null +++ b/debian/opendnp3.postinst.debhelper @@ -0,0 +1,5 @@ +# Automatically added by dh_makeshlibs +if [ "$1" = "configure" ]; then + ldconfig +fi +# End automatically added section diff --git a/debian/opendnp3.postrm.debhelper b/debian/opendnp3.postrm.debhelper new file mode 100644 index 00000000..7f440472 --- /dev/null +++ b/debian/opendnp3.postrm.debhelper @@ -0,0 +1,5 @@ +# Automatically added by dh_makeshlibs +if [ "$1" = "remove" ]; then + ldconfig +fi +# End automatically added section diff --git a/debian/opendnp3.substvars b/debian/opendnp3.substvars new file mode 100644 index 00000000..b4e4bc25 --- /dev/null +++ b/debian/opendnp3.substvars @@ -0,0 +1,2 @@ +shlibs:Depends=libboost-program-options1.46.1 (>= 1.46.1-1), libboost-system1.46.1 (>= 1.46.1-1), libboost-thread1.46.1 (>= 1.46.1-1), libc6 (>= 2.14), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.6), opendnp3 +misc:Depends= diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 00000000..e69de29b diff --git a/debian/rules b/debian/rules new file mode 100755 index 00000000..8ac894fb --- /dev/null +++ b/debian/rules @@ -0,0 +1,30 @@ +#!/usr/bin/make -f + + + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# This has to be exported to make some magic below work. +export DH_OPTIONS + +export MAKEFLAGS="-j8" + +DEB_CONFIGURE_FLAGS = --with-java=/usr/lib/jvm/java-7-oracle/include + +%: + dh $@ --parallel --max-parallel=8 --with=autoreconf + +override_dh_auto_configure: + dh_auto_configure -- $(DEB_CONFIGURE_FLAGS) + +override_dh_auto_build: + dh_auto_build + +override_dh_auto_install: + # Install the Java files first, since dh_auto_install will + # attempt to package them + #install -d $(CURDIR)/debian/tmp/usr/share/java + #find $(CURDIR)/java -name "*.jar" -exec install -m 0644 {} $(CURDIR)/debian/tmp/usr/share/java \; + # Now run the regular deb packaging sequence + dh_auto_install diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 00000000..163aaf8d --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/stamp-autotools b/debian/stamp-autotools new file mode 100644 index 00000000..e69de29b diff --git a/debian/stamp-autotools-files b/debian/stamp-autotools-files new file mode 100644 index 00000000..e69de29b diff --git a/debian/stamp-makefile-build b/debian/stamp-makefile-build new file mode 100644 index 00000000..e69de29b diff --git a/debian/stamp-makefile-install b/debian/stamp-makefile-install new file mode 100644 index 00000000..e69de29b From f0d640048390adb768865cfde6f5bcfae4e053de Mon Sep 17 00:00:00 2001 From: Hung Le Date: Mon, 10 Mar 2014 14:51:15 -0700 Subject: [PATCH 42/51] Added instructions for generating debian package --- README | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/README b/README index 35edb7cc..96d2ca60 100644 --- a/README +++ b/README @@ -368,3 +368,32 @@ installed. Enable the build tree to create the Python library: The Python library is called pyopendnp3. The Python class and shared library are installed to the 'opendnp3' package directory. +## Generate Debian Package ## +*Dependencies -- once per compile machine* +sudo apt-get install -y \ + dh-make devscripts dh-autoreconf \ + libboost-all-dev \ + oracle-java7-installer \ + swig + +*Common variables used below* +export PN="opendnp3" +export PV="1.1.2" +export P="${PN}-${PV}" +export ORIG_TARBALL="${PN}_${PV}.orig.tar.gz" + +# Step 1 - create the .orig.tar.gz file +git clone github:sentient-energy/dnp3.git ${P} +rm -rf ${P}/debian/ ${P}/.git +tar cfz ${ORIG_TARBALL} ${P} +rm -rf ${P} + +# Step 2 - create the DEB(s) +git clone github:sentient-energy/dnp3.git ${P} +rm -rf ${P}/.git +cd ${P} +debuild -uc -us + +# Step 3 - get the DEB(s) +cd .. +ls -la *.deb From 9d1e646c721db5b9f7ea84a725d1f0c56a77688b Mon Sep 17 00:00:00 2001 From: Hung Le Date: Fri, 28 Mar 2014 12:11:43 -0700 Subject: [PATCH 43/51] Change monitor state prior to issuing an async open to properly handle error if host name failed to be resolved. --- opendnp3/APL/PhysicalLayerMonitorStates.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opendnp3/APL/PhysicalLayerMonitorStates.cpp b/opendnp3/APL/PhysicalLayerMonitorStates.cpp index 30bd7654..128145cf 100644 --- a/opendnp3/APL/PhysicalLayerMonitorStates.cpp +++ b/opendnp3/APL/PhysicalLayerMonitorStates.cpp @@ -355,8 +355,8 @@ void MonitorStateWaiting::OnStartOneRequest(PhysicalLayerMonitor* apContext) void MonitorStateWaiting::OnOpenTimeout(PhysicalLayerMonitor* apContext) { - MonitorStateActions::AsyncOpen(apContext); MonitorStateActions::ChangeState(apContext, MonitorStateOpening::Inst()); + MonitorStateActions::AsyncOpen(apContext); } /* --- WaitingOne --- */ @@ -370,8 +370,8 @@ void MonitorStateWaitingOne::OnStartRequest(PhysicalLayerMonitor* apContext) void MonitorStateWaitingOne::OnOpenTimeout(PhysicalLayerMonitor* apContext) { - MonitorStateActions::AsyncOpen(apContext); MonitorStateActions::ChangeState(apContext, MonitorStateOpeningOne::Inst()); + MonitorStateActions::AsyncOpen(apContext); } /* --- Closing --- */ From 942ee1beae2a4b751564b06b50793dbca48c31f1 Mon Sep 17 00:00:00 2001 From: Hung Le Date: Fri, 28 Mar 2014 12:25:18 -0700 Subject: [PATCH 44/51] Bumped to v1.1.3 --- config/doxygen.config | 6 +++--- configure.ac | 2 +- debian/changelog | 7 +++++++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/config/doxygen.config b/config/doxygen.config index 762f0bb1..74fe0b0b 100644 --- a/config/doxygen.config +++ b/config/doxygen.config @@ -31,7 +31,7 @@ PROJECT_NAME = "OpenDNP3" # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 1.1.2 +PROJECT_NUMBER = 1.1.3 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. @@ -619,8 +619,8 @@ EXCLUDE_SYMLINKS = NO # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* -EXCLUDE_PATTERNS = - +EXCLUDE_PATTERNS = + # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the diff --git a/configure.ac b/configure.ac index 5f8694aa..b171fd54 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([opendnp3], [1.1.2], [open-dnp3@googlegroups.com]) +AC_INIT([opendnp3], [1.1.3], [open-dnp3@googlegroups.com]) AC_COPYRIGHT([(C) 2010, 2011 Green Energy Corp. All rights reserved.]) srcdir="`cd $srcdir; pwd`" diff --git a/debian/changelog b/debian/changelog index 54061d00..91a20b14 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +opendnp3 (1.1.3-0sentient0) unstable; urgency=low + + * Fixed incorrect handling of socket open failure when an async + open results in host name resolution failure. + + -- Hung Le Mon, 28 Mar 2014 12:20:00 -0800 + opendnp3 (1.1.2-0sentient0) unstable; urgency=low * Fixed unsolicited message conformance issue From 82454768400f79c080ac6136a1dd495de8385207 Mon Sep 17 00:00:00 2001 From: Hung Le Date: Fri, 16 May 2014 12:22:55 -0700 Subject: [PATCH 45/51] Reduced VTO buffering to better reflect network performance to user apps. --- opendnp3/DNP3/VtoRouter.cpp | 2 +- opendnp3/DNP3/VtoTransmitTask.h | 6 +++--- opendnp3/DNP3/VtoWriter.cpp | 3 +++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/opendnp3/DNP3/VtoRouter.cpp b/opendnp3/DNP3/VtoRouter.cpp index 1c6003f9..777b089f 100644 --- a/opendnp3/DNP3/VtoRouter.cpp +++ b/opendnp3/DNP3/VtoRouter.cpp @@ -111,7 +111,7 @@ void VtoRouter::_OnSendFailure() void VtoRouter::CheckForPhysRead() { - if(mpPhys->CanRead() && mVtoTxBuffer.size() < 10) { //TODO - Make this configurable or track the size in bytes + if(mpPhys->CanRead() && mVtoTxBuffer.size() < 3) { //TODO - Make this configurable or track the size in bytes mpPhys->AsyncRead(mReadBuffer, mReadBuffer.Size()); } } diff --git a/opendnp3/DNP3/VtoTransmitTask.h b/opendnp3/DNP3/VtoTransmitTask.h index 971b92d4..ac9b9171 100644 --- a/opendnp3/DNP3/VtoTransmitTask.h +++ b/opendnp3/DNP3/VtoTransmitTask.h @@ -20,6 +20,7 @@ #include #include +#include #include @@ -40,8 +41,7 @@ class VtoTransmitTask : public MasterTaskBase /** * Creates a new VtoTransmitTask instance. The internal buffer - * size is set to be an order of magnitude larger than a single - * fragment size, to prevent back-ups in the user application. + * size is set based on a single fragment size. * * @param log the Logger that the task should use for * message reporting @@ -51,7 +51,7 @@ class VtoTransmitTask : public MasterTaskBase */ VtoTransmitTask(Logger* log, size_t fragSize, bool aUseNonStandardCode) : MasterTaskBase(log), - mBuffer(fragSize * 10), + mBuffer((fragSize / VtoData::MAX_SIZE) * 2), mUseNonStandardCode(aUseNonStandardCode) {} diff --git a/opendnp3/DNP3/VtoWriter.cpp b/opendnp3/DNP3/VtoWriter.cpp index efab341d..86b0b4b0 100644 --- a/opendnp3/DNP3/VtoWriter.cpp +++ b/opendnp3/DNP3/VtoWriter.cpp @@ -57,6 +57,9 @@ size_t VtoWriter::Write(const boost::uint8_t* apData, * Chop up the data into Max(255) segments and add it to the queue. */ this->Commit(apData, num, aChannelId); + + LOG_BLOCK(LEV_INTERPRET, "VtoWriter: " << this->NumBytesAvailable() << " available out of " + << (mMaxVtoChunks * VtoData::MAX_SIZE)); } /* Tell any listeners that the queue has new data to be read. */ From fafb3572bdc9970e26e8f1533c69e1fe86cf49c0 Mon Sep 17 00:00:00 2001 From: Hung Le Date: Tue, 8 Jul 2014 12:53:38 -0700 Subject: [PATCH 46/51] Expose the ability to configure the VtoWriterQueueSize for the Master. If no value is specified, the default will be used. --- DNP3XML/XmlToConfig.cpp | 3 +++ XMLBindings/APLXML_DNP.cpp | 4 ++++ XMLBindings/APLXML_DNP.h | 1 + 3 files changed, 8 insertions(+) mode change 100644 => 100755 DNP3XML/XmlToConfig.cpp mode change 100644 => 100755 XMLBindings/APLXML_DNP.cpp mode change 100644 => 100755 XMLBindings/APLXML_DNP.h diff --git a/DNP3XML/XmlToConfig.cpp b/DNP3XML/XmlToConfig.cpp old mode 100644 new mode 100755 index 7352001c..eb8f5298 --- a/DNP3XML/XmlToConfig.cpp +++ b/DNP3XML/XmlToConfig.cpp @@ -135,6 +135,9 @@ MasterConfig XmlToConfig::Convert(const APLXML_DNP::Master_t& arCfg) cfg.UnsolClassMask = ClassMask::GetMask(arCfg.Unsol.Class1, arCfg.Unsol.Class2, arCfg.Unsol.Class3); cfg.IntegrityRate = arCfg.MasterSettings.IntegrityPeriodMS; cfg.UseNonStandardVtoFunction = arCfg.MasterSettings.UseNonStandardVtoTransferCode; + if (arCfg.MasterSettings.VtoWriterQueueSize > 0) { + cfg.VtoWriterQueueSize = arCfg.MasterSettings.VtoWriterQueueSize; + } std::vector& vec = arCfg.ScanList.ExceptionScanVector; for(size_t i = 0; i < vec.size(); ++i) { diff --git a/XMLBindings/APLXML_DNP.cpp b/XMLBindings/APLXML_DNP.cpp old mode 100644 new mode 100755 index 5392beed..a8497a29 --- a/XMLBindings/APLXML_DNP.cpp +++ b/XMLBindings/APLXML_DNP.cpp @@ -353,6 +353,9 @@ void MasterSettings_t :: fromXml(TiXmlNode* pNode){ TaskRetryMS = FromString_int(pEm, pEm->Attribute("TaskRetryMS")); IntegrityPeriodMS = FromString_int(pEm, pEm->Attribute("IntegrityPeriodMS")); UseNonStandardVtoTransferCode = FromString_bool(pEm, pEm->Attribute("UseNonStandardVtoTransferCode")); + + const char* attr = pEm->Attribute("VtoWriterQueueSize"); + VtoWriterQueueSize = FromString_int(pEm, attr ? attr : "0"); valid=true; }; void MasterSettings_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid){ @@ -368,6 +371,7 @@ void MasterSettings_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnor pEm->SetAttribute("TaskRetryMS", ToString_int(TaskRetryMS)); pEm->SetAttribute("IntegrityPeriodMS", ToString_int(IntegrityPeriodMS)); pEm->SetAttribute("UseNonStandardVtoTransferCode", ToString_bool(UseNonStandardVtoTransferCode)); + pEm->SetAttribute("VtoWriterQueueSize", ToString_int(VtoWriterQueueSize)); }; ScanList_t::ScanList_t(): diff --git a/XMLBindings/APLXML_DNP.h b/XMLBindings/APLXML_DNP.h old mode 100644 new mode 100755 index 9cc50741..9e6c5a93 --- a/XMLBindings/APLXML_DNP.h +++ b/XMLBindings/APLXML_DNP.h @@ -176,6 +176,7 @@ class MasterSettings_t : public IXMLDataBound { int TaskRetryMS; int IntegrityPeriodMS; bool UseNonStandardVtoTransferCode; + int VtoWriterQueueSize; }; #ifdef SWIG } From a03f7dee59f3fad90dc4a70dbd6a340d20c8153a Mon Sep 17 00:00:00 2001 From: Hung Le Date: Wed, 9 Jul 2014 15:54:33 -0700 Subject: [PATCH 47/51] Expose the ability to configure the TCP send and receive buffer size. If no value is specified, the default will be used. --- APLTestTools/AsyncPhysTestObject.cpp | 5 +- APLTestTools/WrappedTcpPipe.cpp | 4 +- APLXML/PhysicalLayerXMLFactory.cpp | 56 ++++++++++++-- APLXML/PhysicalLayerXMLFactory.h | 8 +- DNP3Test/IntegrationTest.cpp | 4 +- DNP3Test/StartupTeardownTest.cpp | 2 +- DNP3Test/TransportStackPair.cpp | 4 +- DNP3Test/VtoIntegrationTestBase.cpp | 8 +- DNP3XML/XmlToConfig.cpp | 8 +- TestSet/StackHelpers.cpp | 2 +- XMLBindings/APLXML_Base.cpp | 79 ++++++++++++++++++++ XMLBindings/APLXML_Base.h | 12 +++ demos/master-cpp/DemoMain.cpp | 3 +- demos/slave-cpp/DemoMain.cpp | 3 +- opendnp3/APL/PhysLayerSettings.h | 6 +- opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp | 25 +++++-- opendnp3/APL/PhysicalLayerAsyncTCPClient.h | 6 +- opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp | 28 +++++-- opendnp3/APL/PhysicalLayerAsyncTCPServer.h | 5 +- opendnp3/APL/PhysicalLayerAsyncTCPv4Client.h | 7 +- opendnp3/APL/PhysicalLayerAsyncTCPv4Server.h | 7 +- opendnp3/APL/PhysicalLayerAsyncTCPv6Client.h | 7 +- opendnp3/APL/PhysicalLayerAsyncTCPv6Server.h | 7 +- opendnp3/APL/PhysicalLayerFactory.cpp | 32 ++++---- opendnp3/APL/PhysicalLayerFactory.h | 17 +++-- opendnp3/APL/PhysicalLayerManager.cpp | 16 ++-- opendnp3/APL/PhysicalLayerManager.h | 9 ++- opendnp3/APL/TcpSettings.h | 57 ++++++++++++++ opendnp3/DNP3/AsyncStackManager.cpp | 24 +++--- opendnp3/DNP3/AsyncStackManager.h | 14 ++-- opendnp3/DNP3/StackManager.cpp | 24 +++--- opendnp3/DNP3/StackManager.h | 19 ++--- 32 files changed, 361 insertions(+), 147 deletions(-) mode change 100644 => 100755 APLTestTools/AsyncPhysTestObject.cpp mode change 100644 => 100755 APLTestTools/WrappedTcpPipe.cpp mode change 100644 => 100755 APLXML/PhysicalLayerXMLFactory.cpp mode change 100644 => 100755 APLXML/PhysicalLayerXMLFactory.h mode change 100644 => 100755 XMLBindings/APLXML_Base.cpp mode change 100644 => 100755 XMLBindings/APLXML_Base.h mode change 100644 => 100755 opendnp3/APL/PhysLayerSettings.h mode change 100644 => 100755 opendnp3/APL/PhysicalLayerAsyncTCPClient.h mode change 100644 => 100755 opendnp3/APL/PhysicalLayerAsyncTCPServer.h mode change 100644 => 100755 opendnp3/APL/PhysicalLayerAsyncTCPv4Client.h mode change 100644 => 100755 opendnp3/APL/PhysicalLayerAsyncTCPv4Server.h mode change 100644 => 100755 opendnp3/APL/PhysicalLayerAsyncTCPv6Client.h mode change 100644 => 100755 opendnp3/APL/PhysicalLayerAsyncTCPv6Server.h mode change 100644 => 100755 opendnp3/APL/PhysicalLayerFactory.cpp mode change 100644 => 100755 opendnp3/APL/PhysicalLayerFactory.h mode change 100644 => 100755 opendnp3/APL/PhysicalLayerManager.cpp mode change 100644 => 100755 opendnp3/APL/PhysicalLayerManager.h create mode 100755 opendnp3/APL/TcpSettings.h mode change 100644 => 100755 opendnp3/DNP3/AsyncStackManager.cpp mode change 100644 => 100755 opendnp3/DNP3/AsyncStackManager.h mode change 100644 => 100755 opendnp3/DNP3/StackManager.cpp mode change 100644 => 100755 opendnp3/DNP3/StackManager.h diff --git a/APLTestTools/AsyncPhysTestObject.cpp b/APLTestTools/AsyncPhysTestObject.cpp old mode 100644 new mode 100755 index 40964620..e1a72d64 --- a/APLTestTools/AsyncPhysTestObject.cpp +++ b/APLTestTools/AsyncPhysTestObject.cpp @@ -18,6 +18,7 @@ // #include "AsyncPhysTestObject.h" +#include namespace apl { @@ -25,8 +26,8 @@ namespace apl AsyncPhysTestObject::AsyncPhysTestObject(FilterLevel aLevel, bool aImmediate, bool aAutoRead) : AsyncTestObjectASIO(), LogTester(aImmediate), - mTCPClient(mLog.GetLogger(aLevel, "TCPClient"), this->GetService(), "127.0.0.1", 50000, false), - mTCPServer(mLog.GetLogger(aLevel, "TCPSever"), this->GetService(), "127.0.0.1", 50000, false), + mTCPClient(mLog.GetLogger(aLevel, "TCPClient"), this->GetService(), TcpSettings("127.0.0.1", 50000)), + mTCPServer(mLog.GetLogger(aLevel, "TCPSever"), this->GetService(), TcpSettings("127.0.0.1", 50000)), mClientAdapter(mLog.GetLogger(aLevel, "ClientAdapter"), &mTCPClient, aAutoRead), mServerAdapter(mLog.GetLogger(aLevel, "ServerAdapter"), &mTCPServer, aAutoRead), mClientUpper(mLog.GetLogger(aLevel, "MockUpperClient")), diff --git a/APLTestTools/WrappedTcpPipe.cpp b/APLTestTools/WrappedTcpPipe.cpp old mode 100644 new mode 100755 index 6664f8ae..dac12840 --- a/APLTestTools/WrappedTcpPipe.cpp +++ b/APLTestTools/WrappedTcpPipe.cpp @@ -6,8 +6,8 @@ namespace apl { WrappedTcpPipe::WrappedTcpPipe(Logger* apLogger, boost::asio::io_service* apService, boost::uint16_t aPort) : - clientTcp(apLogger->GetSubLogger("clientTcp"), apService, "127.0.0.1", aPort, false), - serverTcp(apLogger->GetSubLogger("serverTcp"), apService, "127.0.0.1", aPort, false), + clientTcp(apLogger->GetSubLogger("clientTcp"), apService, TcpSettings("127.0.0.1", aPort)), + serverTcp(apLogger->GetSubLogger("serverTcp"), apService, TcpSettings("127.0.0.1", aPort)), client(apLogger->GetSubLogger("clientWrapper"), &clientTcp), server(apLogger->GetSubLogger("serverWrapper"), &serverTcp) { diff --git a/APLXML/PhysicalLayerXMLFactory.cpp b/APLXML/PhysicalLayerXMLFactory.cpp old mode 100644 new mode 100755 index 627c2c8f..ef7b3b73 --- a/APLXML/PhysicalLayerXMLFactory.cpp +++ b/APLXML/PhysicalLayerXMLFactory.cpp @@ -56,26 +56,22 @@ IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base::TCPv4Client_t* apCfg) { - boost::uint16_t port = boost::numeric::converter::convert(apCfg->Port); - return PhysicalLayerFactory::GetTCPv4ClientAsync(apCfg->Address, port, false); + return PhysicalLayerFactory::GetTCPv4ClientAsync(GetTcpV4ClientSettings(apCfg)); } IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base::TCPv4Server_t* apCfg) { - boost::uint16_t port = boost::numeric::converter::convert(apCfg->Port); - return PhysicalLayerFactory::GetTCPv4ServerAsync(apCfg->Endpoint, port, false); + return PhysicalLayerFactory::GetTCPv4ServerAsync(GetTcpV4ServerSettings(apCfg)); } IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base::TCPv6Client_t* apCfg) { - boost::uint16_t port = boost::numeric::converter::convert(apCfg->Port); - return PhysicalLayerFactory::GetTCPv6ClientAsync(apCfg->Address, port, false); + return PhysicalLayerFactory::GetTCPv6ClientAsync(GetTcpV6ClientSettings(apCfg)); } IPhysicalLayerAsyncFactory PhysicalLayerXMLFactory :: GetAsync(const APLXML_Base::TCPv6Server_t* apCfg) { - boost::uint16_t port = boost::numeric::converter::convert(apCfg->Port); - return PhysicalLayerFactory::GetTCPv6ServerAsync(apCfg->Endpoint, port, false); + return PhysicalLayerFactory::GetTCPv6ServerAsync(GetTcpV6ServerSettings(apCfg)); } SerialSettings GetSerialSettings(const APLXML_Base::Serial_t* apCfg) @@ -130,5 +126,49 @@ FlowType EnumToFlow(APLXML_Base::FlowControlEnum aFlow) return FLOW_NONE; } +TcpSettings GetTcpV4ClientSettings(const APLXML_Base::TCPv4Client_t* apCfg) +{ + TcpSettings s; + s.mAddress = apCfg->Address; + s.mPort = boost::numeric::converter::convert(apCfg->Port); + s.mUseKeepAlives = apCfg->UseKeepAlives; + s.mSendBufferSize = boost::numeric::converter::convert(apCfg->SendBufferSize); + s.mRecvBufferSize = boost::numeric::converter::convert(apCfg->RecvBufferSize); + return s; +} + +TcpSettings GetTcpV4ServerSettings(const APLXML_Base::TCPv4Server_t* apCfg) +{ + TcpSettings s; + s.mAddress = apCfg->Endpoint; + s.mPort = boost::numeric::converter::convert(apCfg->Port); + s.mUseKeepAlives = apCfg->UseKeepAlives; + s.mSendBufferSize = boost::numeric::converter::convert(apCfg->SendBufferSize); + s.mRecvBufferSize = boost::numeric::converter::convert(apCfg->RecvBufferSize); + return s; +} + +TcpSettings GetTcpV6ClientSettings(const APLXML_Base::TCPv6Client_t* apCfg) +{ + TcpSettings s; + s.mAddress = apCfg->Address; + s.mPort = boost::numeric::converter::convert(apCfg->Port); + s.mUseKeepAlives = apCfg->UseKeepAlives; + s.mSendBufferSize = boost::numeric::converter::convert(apCfg->SendBufferSize); + s.mRecvBufferSize = boost::numeric::converter::convert(apCfg->RecvBufferSize); + return s; +} + +TcpSettings GetTcpV6ServerSettings(const APLXML_Base::TCPv6Server_t* apCfg) +{ + TcpSettings s; + s.mAddress = apCfg->Endpoint; + s.mPort = boost::numeric::converter::convert(apCfg->Port); + s.mUseKeepAlives = apCfg->UseKeepAlives; + s.mSendBufferSize = boost::numeric::converter::convert(apCfg->SendBufferSize); + s.mRecvBufferSize = boost::numeric::converter::convert(apCfg->RecvBufferSize); + return s; +} + } } diff --git a/APLXML/PhysicalLayerXMLFactory.h b/APLXML/PhysicalLayerXMLFactory.h old mode 100644 new mode 100755 index e12b347e..7f6b70db --- a/APLXML/PhysicalLayerXMLFactory.h +++ b/APLXML/PhysicalLayerXMLFactory.h @@ -22,6 +22,7 @@ #include #include #include +#include namespace apl { @@ -45,9 +46,14 @@ class PhysicalLayerXMLFactory int BaudToInt(APLXML_Base::BaudRateEnum aBaud); ParityType EnumToParity(APLXML_Base::ParityEnum aParity); -SerialSettings GetSerialSettings(const APLXML_Base::Serial_t* apCfg); FlowType EnumToFlow(APLXML_Base::FlowControlEnum); +SerialSettings GetSerialSettings(const APLXML_Base::Serial_t* apCfg); +TcpSettings GetTcpV4ClientSettings(const APLXML_Base::TCPv4Client_t* apCfg); +TcpSettings GetTcpV4ServerSettings(const APLXML_Base::TCPv4Server_t* apCfg); +TcpSettings GetTcpV6ClientSettings(const APLXML_Base::TCPv6Client_t* apCfg); +TcpSettings GetTcpV6ServerSettings(const APLXML_Base::TCPv6Server_t* apCfg); + } } diff --git a/DNP3Test/IntegrationTest.cpp b/DNP3Test/IntegrationTest.cpp index 8ca61ee8..ad539b42 100644 --- a/DNP3Test/IntegrationTest.cpp +++ b/DNP3Test/IntegrationTest.cpp @@ -160,8 +160,8 @@ void IntegrationTest::AddStackPair(FilterLevel aLevel, size_t aNumPoints) mMasterObservers.push_back(pMasterFDO); PhysLayerSettings s(aLevel, 1000); - this->mManager.AddTCPv4Client(client, s, "127.0.0.1", port); - this->mManager.AddTCPv4Server(server, s, "127.0.0.1", port); + this->mManager.AddTCPv4Client(client, s, TcpSettings("127.0.0.1", port)); + this->mManager.AddTCPv4Server(server, s, TcpSettings("127.0.0.1", port)); /* * Add a Master instance. The code is wrapped in braces so that we can diff --git a/DNP3Test/StartupTeardownTest.cpp b/DNP3Test/StartupTeardownTest.cpp index cce9fc86..31ee8a65 100644 --- a/DNP3Test/StartupTeardownTest.cpp +++ b/DNP3Test/StartupTeardownTest.cpp @@ -40,7 +40,7 @@ void StartupTeardownTest::CreatePort(const std::string& arName, FilterLevel aLev { std::string name = arName + " router"; PhysLayerSettings s(aLevel, 1000); - manager.AddTCPv4Client(arName, s, "127.0.0.1", 30000); + manager.AddTCPv4Client(arName, s, TcpSettings("127.0.0.1", 30000)); } void StartupTeardownTest::AddMaster(const std::string& arStackName, const std::string& arPortName, boost::uint16_t aLocalAddress, FilterLevel aLevel) diff --git a/DNP3Test/TransportStackPair.cpp b/DNP3Test/TransportStackPair.cpp index cc435c84..3a437145 100644 --- a/DNP3Test/TransportStackPair.cpp +++ b/DNP3Test/TransportStackPair.cpp @@ -36,8 +36,8 @@ TransportStackPair::TransportStackPair( ITimerSource* apTimerSrc, boost::uint16_t aPort) : - mClient(apLogger->GetSubLogger("TCPClient"), apService, "127.0.0.1", aPort), - mServer(apLogger->GetSubLogger("TCPServer"), apService, "127.0.0.1", aPort), + mClient(apLogger->GetSubLogger("TCPClient"), apService, TcpSettings("127.0.0.1", aPort)), + mServer(apLogger->GetSubLogger("TCPServer"), apService, TcpSettings("127.0.0.1", aPort)), mClientStack(apLogger->GetSubLogger("ClientStack"), apTimerSrc, &mClient, aClientCfg), mServerStack(apLogger->GetSubLogger("ServerStack"), apTimerSrc, &mServer, aServerCfg) { diff --git a/DNP3Test/VtoIntegrationTestBase.cpp b/DNP3Test/VtoIntegrationTestBase.cpp index 83e6044b..711628f4 100644 --- a/DNP3Test/VtoIntegrationTestBase.cpp +++ b/DNP3Test/VtoIntegrationTestBase.cpp @@ -43,8 +43,8 @@ VtoIntegrationTestBase::VtoIntegrationTestBase( mpLtf(aLogToFile ? new LogToFile(&mLog, "integration.log", true) : NULL), testObj(), timerSource(testObj.GetService()), - vtoClient(mLog.GetLogger(level, "local-tcp-client"), testObj.GetService(), "127.0.0.1", port + 20), - vtoServer(mLog.GetLogger(level, "loopback-tcp-server"), testObj.GetService(), "0.0.0.0", port + 10), + vtoClient(mLog.GetLogger(level, "local-tcp-client"), testObj.GetService(), TcpSettings("127.0.0.1", port + 20)), + vtoServer(mLog.GetLogger(level, "loopback-tcp-server"), testObj.GetService(), TcpSettings("0.0.0.0", port + 10)), manager(mLog.GetLogger(level, "manager")), tcpPipe(mLog.GetLogger(level, "pipe"), manager.GetIOService(), port) { @@ -73,9 +73,9 @@ VtoIntegrationTestBase::VtoIntegrationTestBase( std::string clientSideOfStack = clientOnSlave ? "slave" : "master"; std::string serverSideOfStack = clientOnSlave ? "master" : "slave"; - manager.AddTCPv4Client("vto-tcp-client", PhysLayerSettings(), "localhost", port + 10); + manager.AddTCPv4Client("vto-tcp-client", PhysLayerSettings(), TcpSettings("localhost", port + 10)); manager.StartVtoRouter("vto-tcp-client", clientSideOfStack, VtoRouterSettings(88, false, false, 1000)); - manager.AddTCPv4Server("vto-tcp-server", PhysLayerSettings(), "localhost", port + 20); + manager.AddTCPv4Server("vto-tcp-server", PhysLayerSettings(), TcpSettings("localhost", port + 20)); manager.StartVtoRouter("vto-tcp-server", serverSideOfStack, VtoRouterSettings(88, true, false, 1000)); } diff --git a/DNP3XML/XmlToConfig.cpp b/DNP3XML/XmlToConfig.cpp index eb8f5298..e2acc91f 100755 --- a/DNP3XML/XmlToConfig.cpp +++ b/DNP3XML/XmlToConfig.cpp @@ -49,22 +49,22 @@ bool XmlToConfig::Configure(const APLXML_Base::PhysicalLayerList_t& arList, Filt for (size_t i = 0; i < arList.TCPv4ClientVector.size(); i++ ) { TCPv4Client_t* pCfg = arList.TCPv4ClientVector[i]; PhysLayerSettings s(aLevel, pCfg->OpenRetryMS); - arMgr.AddTCPv4Client(pCfg->Name, s, pCfg->Address, pCfg->Port); + arMgr.AddTCPv4Client(pCfg->Name, s, xml::GetTcpV4ClientSettings(pCfg)); } for (size_t i = 0; i < arList.TCPv4ServerVector.size(); i++ ) { TCPv4Server_t* pCfg = arList.TCPv4ServerVector[i]; PhysLayerSettings s(aLevel, pCfg->OpenRetryMS); - arMgr.AddTCPv4Server(pCfg->Name, s, pCfg->Endpoint, pCfg->Port); + arMgr.AddTCPv4Server(pCfg->Name, s, xml::GetTcpV4ServerSettings(pCfg)); } for (size_t i = 0; i < arList.TCPv6ClientVector.size(); i++ ) { TCPv6Client_t* pCfg = arList.TCPv6ClientVector[i]; PhysLayerSettings s(aLevel, pCfg->OpenRetryMS); - arMgr.AddTCPv6Client(pCfg->Name, s, pCfg->Address, pCfg->Port); + arMgr.AddTCPv6Client(pCfg->Name, s, xml::GetTcpV6ClientSettings(pCfg)); } for (size_t i = 0; i < arList.TCPv6ServerVector.size(); i++ ) { TCPv6Server_t* pCfg = arList.TCPv6ServerVector[i]; PhysLayerSettings s(aLevel, pCfg->OpenRetryMS); - arMgr.AddTCPv6Server(pCfg->Name, s, pCfg->Endpoint, pCfg->Port); + arMgr.AddTCPv6Server(pCfg->Name, s, xml::GetTcpV6ServerSettings(pCfg)); } for (size_t i = 0; i < arList.SerialVector.size(); i++ ) { Serial_t* pCfg = arList.SerialVector[i]; diff --git a/TestSet/StackHelpers.cpp b/TestSet/StackHelpers.cpp index 8da4771b..b7d2b549 100644 --- a/TestSet/StackHelpers.cpp +++ b/TestSet/StackHelpers.cpp @@ -38,7 +38,7 @@ namespace dnp IPhysicalLayerAsync* FGetTerminalPhys(Logger* apLogger, boost::asio::io_service* apSrv, bool aRemote, boost::uint16_t aRemotePort) { - if (aRemote) return PhysicalLayerFactory::FGetTCPv4ServerAsync("0.0.0.0", aRemotePort, false, apSrv, apLogger); + if (aRemote) return PhysicalLayerFactory::FGetTCPv4ServerAsync(TcpSettings("0.0.0.0", aRemotePort), apSrv, apLogger); else return new PhysicalLayerIOStreamAsync(apLogger, apSrv); } diff --git a/XMLBindings/APLXML_Base.cpp b/XMLBindings/APLXML_Base.cpp old mode 100644 new mode 100755 index 6402800e..8d05e0e3 --- a/XMLBindings/APLXML_Base.cpp +++ b/XMLBindings/APLXML_Base.cpp @@ -175,8 +175,25 @@ void TCPv4Client_t :: fromXml(TiXmlNode* pNode){ this->APLXML_Base::PhysicalLayerDescriptor_t::fromXml(pNode); Address = FromString_string(pEm, pEm->Attribute("Address")); Port = FromString_int(pEm, pEm->Attribute("Port")); + + UseKeepAlives = false; + if (pEm->Attribute("UseKeepAlives")) { + UseKeepAlives = FromString_bool(pEm, pEm->Attribute("UseKeepAlives")); + } + + SendBufferSize = 0; + if (pEm->Attribute("SendBufferSize")) { + SendBufferSize = FromString_int(pEm, pEm->Attribute("SendBufferSize")); + } + + RecvBufferSize = 0; + if (pEm->Attribute("RecvBufferSize")) { + RecvBufferSize = FromString_int(pEm, pEm->Attribute("RecvBufferSize")); + } + valid=true; }; + void TCPv4Client_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid){ if(!aIgnoreValid && !valid) return; TiXmlElement * pEm; @@ -189,6 +206,9 @@ void TCPv4Client_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreVa this->APLXML_Base::PhysicalLayerDescriptor_t::toXml(pEm, false, aIgnoreValid); pEm->SetAttribute("Address", ToString_string(Address)); pEm->SetAttribute("Port", ToString_int(Port)); + pEm->SetAttribute("UseKeepAlives", ToString_bool(UseKeepAlives)); + pEm->SetAttribute("SendBufferSize", ToString_int(SendBufferSize)); + pEm->SetAttribute("RecvBufferSize", ToString_int(RecvBufferSize)); }; void TCPv4Server_t :: fromXml(TiXmlNode* pNode){ @@ -199,8 +219,25 @@ void TCPv4Server_t :: fromXml(TiXmlNode* pNode){ this->APLXML_Base::PhysicalLayerDescriptor_t::fromXml(pNode); Endpoint = FromString_string(pEm, pEm->Attribute("Endpoint")); Port = FromString_int(pEm, pEm->Attribute("Port")); + + UseKeepAlives = false; + if (pEm->Attribute("UseKeepAlives")) { + UseKeepAlives = FromString_bool(pEm, pEm->Attribute("UseKeepAlives")); + } + + SendBufferSize = 0; + if (pEm->Attribute("SendBufferSize")) { + SendBufferSize = FromString_int(pEm, pEm->Attribute("SendBufferSize")); + } + + RecvBufferSize = 0; + if (pEm->Attribute("RecvBufferSize")) { + RecvBufferSize = FromString_int(pEm, pEm->Attribute("RecvBufferSize")); + } + valid=true; }; + void TCPv4Server_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid){ if(!aIgnoreValid && !valid) return; TiXmlElement * pEm; @@ -213,6 +250,9 @@ void TCPv4Server_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreVa this->APLXML_Base::PhysicalLayerDescriptor_t::toXml(pEm, false, aIgnoreValid); pEm->SetAttribute("Endpoint", ToString_string(Endpoint)); pEm->SetAttribute("Port", ToString_int(Port)); + pEm->SetAttribute("UseKeepAlives", ToString_bool(UseKeepAlives)); + pEm->SetAttribute("SendBufferSize", ToString_int(SendBufferSize)); + pEm->SetAttribute("RecvBufferSize", ToString_int(RecvBufferSize)); }; void TCPv6Client_t :: fromXml(TiXmlNode* pNode){ @@ -223,8 +263,25 @@ void TCPv6Client_t :: fromXml(TiXmlNode* pNode){ this->APLXML_Base::PhysicalLayerDescriptor_t::fromXml(pNode); Address = FromString_string(pEm, pEm->Attribute("Address")); Port = FromString_int(pEm, pEm->Attribute("Port")); + + UseKeepAlives = false; + if (pEm->Attribute("UseKeepAlives")) { + UseKeepAlives = FromString_bool(pEm, pEm->Attribute("UseKeepAlives")); + } + + SendBufferSize = 0; + if (pEm->Attribute("SendBufferSize")) { + SendBufferSize = FromString_int(pEm, pEm->Attribute("SendBufferSize")); + } + + RecvBufferSize = 0; + if (pEm->Attribute("RecvBufferSize")) { + RecvBufferSize = FromString_int(pEm, pEm->Attribute("RecvBufferSize")); + } + valid=true; }; + void TCPv6Client_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid){ if(!aIgnoreValid && !valid) return; TiXmlElement * pEm; @@ -237,6 +294,9 @@ void TCPv6Client_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreVa this->APLXML_Base::PhysicalLayerDescriptor_t::toXml(pEm, false, aIgnoreValid); pEm->SetAttribute("Address", ToString_string(Address)); pEm->SetAttribute("Port", ToString_int(Port)); + pEm->SetAttribute("UseKeepAlives", ToString_bool(UseKeepAlives)); + pEm->SetAttribute("SendBufferSize", ToString_int(SendBufferSize)); + pEm->SetAttribute("RecvBufferSize", ToString_int(RecvBufferSize)); }; void TCPv6Server_t :: fromXml(TiXmlNode* pNode){ @@ -247,6 +307,22 @@ void TCPv6Server_t :: fromXml(TiXmlNode* pNode){ this->APLXML_Base::PhysicalLayerDescriptor_t::fromXml(pNode); Endpoint = FromString_string(pEm, pEm->Attribute("Endpoint")); Port = FromString_int(pEm, pEm->Attribute("Port")); + + UseKeepAlives = false; + if (pEm->Attribute("UseKeepAlives")) { + UseKeepAlives = FromString_bool(pEm, pEm->Attribute("UseKeepAlives")); + } + + SendBufferSize = 0; + if (pEm->Attribute("SendBufferSize")) { + SendBufferSize = FromString_int(pEm, pEm->Attribute("SendBufferSize")); + } + + RecvBufferSize = 0; + if (pEm->Attribute("RecvBufferSize")) { + RecvBufferSize = FromString_int(pEm, pEm->Attribute("RecvBufferSize")); + } + valid=true; }; void TCPv6Server_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreValid){ @@ -261,6 +337,9 @@ void TCPv6Server_t :: toXml(TiXmlNode* pParent, bool aCreateNode, bool aIgnoreVa this->APLXML_Base::PhysicalLayerDescriptor_t::toXml(pEm, false, aIgnoreValid); pEm->SetAttribute("Endpoint", ToString_string(Endpoint)); pEm->SetAttribute("Port", ToString_int(Port)); + pEm->SetAttribute("UseKeepAlives", ToString_bool(UseKeepAlives)); + pEm->SetAttribute("SendBufferSize", ToString_int(SendBufferSize)); + pEm->SetAttribute("RecvBufferSize", ToString_int(RecvBufferSize)); }; void Log_t :: fromXml(TiXmlNode* pNode){ diff --git a/XMLBindings/APLXML_Base.h b/XMLBindings/APLXML_Base.h old mode 100644 new mode 100755 index d7d2f509..1a7b56ce --- a/XMLBindings/APLXML_Base.h +++ b/XMLBindings/APLXML_Base.h @@ -78,6 +78,9 @@ class TCPv4Client_t : public APLXML_Base::PhysicalLayerDescriptor_t{ void fromXml(TiXmlNode* pNode); string Address; int Port; + bool UseKeepAlives; + int SendBufferSize; + int RecvBufferSize; }; class TCPv4Server_t : public APLXML_Base::PhysicalLayerDescriptor_t{ @@ -86,6 +89,9 @@ class TCPv4Server_t : public APLXML_Base::PhysicalLayerDescriptor_t{ void fromXml(TiXmlNode* pNode); string Endpoint; int Port; + bool UseKeepAlives; + int SendBufferSize; + int RecvBufferSize; }; class TCPv6Client_t : public APLXML_Base::PhysicalLayerDescriptor_t{ @@ -94,6 +100,9 @@ class TCPv6Client_t : public APLXML_Base::PhysicalLayerDescriptor_t{ void fromXml(TiXmlNode* pNode); string Address; int Port; + bool UseKeepAlives; + int SendBufferSize; + int RecvBufferSize; }; class TCPv6Server_t : public APLXML_Base::PhysicalLayerDescriptor_t{ public: @@ -101,6 +110,9 @@ class TCPv6Server_t : public APLXML_Base::PhysicalLayerDescriptor_t{ void fromXml(TiXmlNode* pNode); string Endpoint; int Port; + bool UseKeepAlives; + int SendBufferSize; + int RecvBufferSize; }; class Log_t : public IXMLDataBound { diff --git a/demos/master-cpp/DemoMain.cpp b/demos/master-cpp/DemoMain.cpp index 84ee8d1c..07093fe9 100755 --- a/demos/master-cpp/DemoMain.cpp +++ b/demos/master-cpp/DemoMain.cpp @@ -116,8 +116,7 @@ int main(int argc, char* argv[]) mgr.AddTCPv4Client( "tcpclient", PhysLayerSettings(LOG_LEVEL, 3000), - remote_ip.c_str(), - remote_port + TcpSettings(remote_ip.c_str(), remote_port) ); // The master config object for a master. The default are diff --git a/demos/slave-cpp/DemoMain.cpp b/demos/slave-cpp/DemoMain.cpp index ed345c3e..0854df53 100755 --- a/demos/slave-cpp/DemoMain.cpp +++ b/demos/slave-cpp/DemoMain.cpp @@ -115,8 +115,7 @@ int main(int argc, char* argv[]) mgr.AddTCPv4Server( "tcpserver", PhysLayerSettings(LOG_LEVEL, 3000), - local_ip, - local_port + TcpSettings(local_ip, local_port) ); // The master config object for a slave. The default are diff --git a/opendnp3/APL/PhysLayerSettings.h b/opendnp3/APL/PhysLayerSettings.h old mode 100644 new mode 100755 index 9e06bfd9..fbe00f6a --- a/opendnp3/APL/PhysLayerSettings.h +++ b/opendnp3/APL/PhysLayerSettings.h @@ -32,17 +32,15 @@ struct PhysLayerSettings { PhysLayerSettings() : LogLevel(LEV_INFO), RetryTimeout(5000), mpObserver(NULL) {} - PhysLayerSettings(FilterLevel aLevel, millis_t aRetryTimeout, IPhysicalLayerObserver* apObserver = NULL, bool aUseKeepAlives = false) : + PhysLayerSettings(FilterLevel aLevel, millis_t aRetryTimeout, IPhysicalLayerObserver* apObserver = NULL) : LogLevel(aLevel), RetryTimeout(aRetryTimeout), - mpObserver(apObserver), - UseKeepAlives(aUseKeepAlives) + mpObserver(apObserver) {} FilterLevel LogLevel; millis_t RetryTimeout; IPhysicalLayerObserver* mpObserver; - bool UseKeepAlives; }; } diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp b/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp index 7fe3782c..b322c179 100755 --- a/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp +++ b/opendnp3/APL/PhysicalLayerAsyncTCPClient.cpp @@ -32,11 +32,10 @@ using namespace std; namespace apl { -PhysicalLayerAsyncTCPClient::PhysicalLayerAsyncTCPClient(Logger* apLogger, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const std::string& arAddress, bool aUseKeepAlives) +PhysicalLayerAsyncTCPClient::PhysicalLayerAsyncTCPClient(Logger* apLogger, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const TcpSettings& arSettings) : PhysicalLayerAsyncBaseTCP(apLogger, apIOService) , mRemoteEndpoint(arEndpoint) - , mUseKeepAlives(aUseKeepAlives) - , mRemoteAddress(arAddress) + , mSettings(arSettings) {} /* Implement the actions */ @@ -44,7 +43,7 @@ void PhysicalLayerAsyncTCPClient::DoOpen() { /* Re-resolve the remote address each time just in case DNS shifts things on us */ boost::system::error_code ec; - boost::asio::ip::address addr = ResolveAddress(mRemoteAddress, ec); + boost::asio::ip::address addr = ResolveAddress(mSettings.mAddress, ec); if (ec) { OnOpenCallback(ec); } @@ -65,10 +64,24 @@ void PhysicalLayerAsyncTCPClient::DoOpeningClose() void PhysicalLayerAsyncTCPClient::DoOpenSuccess() { LOG_BLOCK(LEV_INFO, "Connected to: " << mRemoteEndpoint); - if (mUseKeepAlives) { - LOG_BLOCK(LEV_DEBUG, "Enabling keepalives on the socket connection to " << mRemoteEndpoint); + if (mSettings.mUseKeepAlives) { boost::asio::socket_base::keep_alive option(true); mSocket.set_option(option); + LOG_BLOCK(LEV_DEBUG, "Enabled keepalives on the socket connection to " << mRemoteEndpoint); + } + + if (mSettings.mSendBufferSize > 0) { + boost::asio::socket_base::send_buffer_size option(mSettings.mSendBufferSize); + mSocket.set_option(option); + mSocket.get_option(option); + LOG_BLOCK(LEV_DEBUG, "Set send buffer size to " << option.value()); + } + + if (mSettings.mRecvBufferSize > 0) { + boost::asio::socket_base::receive_buffer_size option(mSettings.mRecvBufferSize); + mSocket.set_option(option); + mSocket.get_option(option); + LOG_BLOCK(LEV_DEBUG, "Set receive buffer size to " << option.value()); } } diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPClient.h b/opendnp3/APL/PhysicalLayerAsyncTCPClient.h old mode 100644 new mode 100755 index c625969b..888d1476 --- a/opendnp3/APL/PhysicalLayerAsyncTCPClient.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPClient.h @@ -20,6 +20,7 @@ #define __PHYSICAL_LAYER_ASYNC_TCP_CLIENT_H_ #include +#include #include @@ -29,7 +30,7 @@ namespace apl class PhysicalLayerAsyncTCPClient : public PhysicalLayerAsyncBaseTCP { public: - PhysicalLayerAsyncTCPClient(Logger* apLogger, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const std::string& arAddress, bool aUseKeepAlives = false); + PhysicalLayerAsyncTCPClient(Logger* apLogger, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const TcpSettings& arSettings); /* Implement the remaining actions */ void DoOpen(); @@ -38,8 +39,7 @@ class PhysicalLayerAsyncTCPClient : public PhysicalLayerAsyncBaseTCP private: boost::asio::ip::tcp::endpoint mRemoteEndpoint; - bool mUseKeepAlives; - std::string mRemoteAddress; + TcpSettings mSettings; }; } diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp b/opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp index 2f1e3c8e..77ffe8c9 100755 --- a/opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp +++ b/opendnp3/APL/PhysicalLayerAsyncTCPServer.cpp @@ -33,16 +33,16 @@ using namespace std; namespace apl { -PhysicalLayerAsyncTCPServer::PhysicalLayerAsyncTCPServer(Logger* apLogger, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const std::string& arAddress, bool aUseKeepAlives) +PhysicalLayerAsyncTCPServer::PhysicalLayerAsyncTCPServer(Logger* apLogger, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const TcpSettings& arSettings) : PhysicalLayerAsyncBaseTCP(apLogger, apIOService) , mLocalEndpoint(arEndpoint) , mAcceptor(*apIOService) - , mUseKeepAlives(aUseKeepAlives) + , mSettings(arSettings) { boost::system::error_code ec; - boost::asio::ip::address addr = ResolveAddress(arAddress, ec); + boost::asio::ip::address addr = ResolveAddress(mSettings.mAddress, ec); if (ec) { - throw ArgumentException(LOCATION, "endpoint: " + arAddress + ", " + ec.message()); + throw ArgumentException(LOCATION, "endpoint: " + mSettings.mAddress + ", " + ec.message()); } mLocalEndpoint.address(addr); @@ -93,10 +93,24 @@ void PhysicalLayerAsyncTCPServer::DoOpeningClose() void PhysicalLayerAsyncTCPServer::DoOpenSuccess() { LOG_BLOCK(LEV_INFO, "Accepted connection from: " << mRemoteEndpoint); - if (mUseKeepAlives) { - LOG_BLOCK(LEV_DEBUG, "Enabling keepalives on the socket connection to " << mRemoteEndpoint); - boost::asio::socket_base::keep_alive option(true); + if (mSettings.mUseKeepAlives) { + boost::asio::socket_base::keep_alive option(true); + mSocket.set_option(option); + LOG_BLOCK(LEV_DEBUG, "Enabled keepalives on the socket connection to " << mRemoteEndpoint); + } + + if (mSettings.mSendBufferSize > 0) { + boost::asio::socket_base::send_buffer_size option(mSettings.mSendBufferSize); + mSocket.set_option(option); + mSocket.get_option(option); + LOG_BLOCK(LEV_DEBUG, "Set send buffer size to " << option.value()); + } + + if (mSettings.mRecvBufferSize > 0) { + boost::asio::socket_base::receive_buffer_size option(mSettings.mRecvBufferSize); mSocket.set_option(option); + mSocket.get_option(option); + LOG_BLOCK(LEV_DEBUG, "Set receive buffer size to " << option.value()); } } diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPServer.h b/opendnp3/APL/PhysicalLayerAsyncTCPServer.h old mode 100644 new mode 100755 index ee809a2a..6b83dc17 --- a/opendnp3/APL/PhysicalLayerAsyncTCPServer.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPServer.h @@ -19,6 +19,7 @@ #define __PHYSICAL_LAYER_ASYNC_TCP_SERVER_H_ #include +#include #include @@ -28,7 +29,7 @@ namespace apl class PhysicalLayerAsyncTCPServer : public PhysicalLayerAsyncBaseTCP { public: - PhysicalLayerAsyncTCPServer(Logger*, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const std::string& arAddress, bool aUseKeepAlives = false); + PhysicalLayerAsyncTCPServer(Logger*, boost::asio::io_service* apIOService, const boost::asio::ip::tcp::endpoint& arEndpoint, const TcpSettings& arSettings); /* Implement the remaining actions */ void DoOpen(); @@ -43,7 +44,7 @@ class PhysicalLayerAsyncTCPServer : public PhysicalLayerAsyncBaseTCP boost::asio::ip::tcp::endpoint mRemoteEndpoint; boost::asio::ip::tcp::acceptor mAcceptor; - bool mUseKeepAlives; + TcpSettings mSettings; }; } diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPv4Client.h b/opendnp3/APL/PhysicalLayerAsyncTCPv4Client.h old mode 100644 new mode 100755 index 7c386773..bf644e39 --- a/opendnp3/APL/PhysicalLayerAsyncTCPv4Client.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPv4Client.h @@ -29,16 +29,15 @@ namespace apl class PhysicalLayerAsyncTCPv4Client : public PhysicalLayerAsyncTCPClient { public: - PhysicalLayerAsyncTCPv4Client(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort, bool aUseKeepAlives = false) + PhysicalLayerAsyncTCPv4Client(Logger* apLogger, boost::asio::io_service* apIOService, const TcpSettings& arSettings) : PhysicalLayerAsyncTCPClient( apLogger, apIOService, boost::asio::ip::tcp::endpoint( boost::asio::ip::tcp::v4(), - aPort + arSettings.mPort ), - arAddress, - aUseKeepAlives + arSettings ) {} }; diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPv4Server.h b/opendnp3/APL/PhysicalLayerAsyncTCPv4Server.h old mode 100644 new mode 100755 index 2a634ebf..30e36428 --- a/opendnp3/APL/PhysicalLayerAsyncTCPv4Server.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPv4Server.h @@ -28,16 +28,15 @@ namespace apl class PhysicalLayerAsyncTCPv4Server : public PhysicalLayerAsyncTCPServer { public: - PhysicalLayerAsyncTCPv4Server(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort, bool aUseKeepAlives = false) + PhysicalLayerAsyncTCPv4Server(Logger* apLogger, boost::asio::io_service* apIOService, const TcpSettings& arSettings) : PhysicalLayerAsyncTCPServer( apLogger, apIOService, boost::asio::ip::tcp::endpoint( boost::asio::ip::tcp::v4(), - aPort + arSettings.mPort ), - arAddress, - aUseKeepAlives + arSettings ) {} }; diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPv6Client.h b/opendnp3/APL/PhysicalLayerAsyncTCPv6Client.h old mode 100644 new mode 100755 index e5a9116a..a12e937a --- a/opendnp3/APL/PhysicalLayerAsyncTCPv6Client.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPv6Client.h @@ -29,16 +29,15 @@ namespace apl class PhysicalLayerAsyncTCPv6Client : public PhysicalLayerAsyncTCPClient { public: - PhysicalLayerAsyncTCPv6Client(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort, bool aUseKeepAlives = false) + PhysicalLayerAsyncTCPv6Client(Logger* apLogger, boost::asio::io_service* apIOService, const TcpSettings& arSettings) : PhysicalLayerAsyncTCPClient( apLogger, apIOService, boost::asio::ip::tcp::endpoint( boost::asio::ip::tcp::v6(), - aPort + arSettings.mPort ), - arAddress, - aUseKeepAlives + arSettings ) {} }; diff --git a/opendnp3/APL/PhysicalLayerAsyncTCPv6Server.h b/opendnp3/APL/PhysicalLayerAsyncTCPv6Server.h old mode 100644 new mode 100755 index f8691b7f..bc1930f3 --- a/opendnp3/APL/PhysicalLayerAsyncTCPv6Server.h +++ b/opendnp3/APL/PhysicalLayerAsyncTCPv6Server.h @@ -28,16 +28,15 @@ namespace apl class PhysicalLayerAsyncTCPv6Server : public PhysicalLayerAsyncTCPServer { public: - PhysicalLayerAsyncTCPv6Server(Logger* apLogger, boost::asio::io_service* apIOService, const std::string& arAddress, boost::uint16_t aPort, bool aUseKeepAlives = false) + PhysicalLayerAsyncTCPv6Server(Logger* apLogger, boost::asio::io_service* apIOService, const TcpSettings& arSettings) : PhysicalLayerAsyncTCPServer( apLogger, apIOService, boost::asio::ip::tcp::endpoint( boost::asio::ip::tcp::v6(), - aPort + arSettings.mPort ), - arAddress, - aUseKeepAlives + arSettings ) {} }; diff --git a/opendnp3/APL/PhysicalLayerFactory.cpp b/opendnp3/APL/PhysicalLayerFactory.cpp old mode 100644 new mode 100755 index 9f1dfb64..90b9581f --- a/opendnp3/APL/PhysicalLayerFactory.cpp +++ b/opendnp3/APL/PhysicalLayerFactory.cpp @@ -36,24 +36,24 @@ IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetSerialAsync(SerialSettings return boost::bind(&PhysicalLayerFactory::FGetSerialAsync, s, _2, _1); } -IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort, bool aUseKeepAlives) +IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv4ClientAsync(TcpSettings s) { - return boost::bind(&PhysicalLayerFactory::FGetTCPv4ClientAsync, aAddress, aPort, aUseKeepAlives, _2, _1); + return boost::bind(&PhysicalLayerFactory::FGetTCPv4ClientAsync, s, _2, _1); } -IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort, bool aUseKeepAlives) +IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv4ServerAsync(TcpSettings s) { - return boost::bind(&PhysicalLayerFactory::FGetTCPv4ServerAsync, aEndpoint, aPort, aUseKeepAlives, _2, _1); + return boost::bind(&PhysicalLayerFactory::FGetTCPv4ServerAsync, s, _2, _1); } -IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort, bool aUseKeepAlives) +IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv6ClientAsync(TcpSettings s) { - return boost::bind(&PhysicalLayerFactory::FGetTCPv6ClientAsync, aAddress, aPort, aUseKeepAlives, _2, _1); + return boost::bind(&PhysicalLayerFactory::FGetTCPv6ClientAsync, s, _2, _1); } -IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort, bool aUseKeepAlives) +IPhysicalLayerAsyncFactory PhysicalLayerFactory :: GetTCPv6ServerAsync(TcpSettings s) { - return boost::bind(&PhysicalLayerFactory::FGetTCPv6ServerAsync, aEndpoint, aPort, aUseKeepAlives, _2, _1); + return boost::bind(&PhysicalLayerFactory::FGetTCPv6ServerAsync, s, _2, _1); } IPhysicalLayerAsync* PhysicalLayerFactory :: FGetSerialAsync(SerialSettings s, boost::asio::io_service* apSrv, Logger* apLogger) @@ -61,24 +61,24 @@ IPhysicalLayerAsync* PhysicalLayerFactory :: FGetSerialAsync(SerialSettings s, b return new PhysicalLayerAsyncSerial(apLogger, apSrv, s); } -IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort, bool aUseKeepAlives, boost::asio::io_service* apSrv, Logger* apLogger) +IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv4ClientAsync(TcpSettings s, boost::asio::io_service* apSrv, Logger* apLogger) { - return new PhysicalLayerAsyncTCPv4Client(apLogger, apSrv, aAddress, aPort, aUseKeepAlives); + return new PhysicalLayerAsyncTCPv4Client(apLogger, apSrv, s); } -IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort, bool aUseKeepAlives, boost::asio::io_service* apSrv, Logger* apLogger) +IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv4ServerAsync(TcpSettings s, boost::asio::io_service* apSrv, Logger* apLogger) { - return new PhysicalLayerAsyncTCPv4Server(apLogger, apSrv, aEndpoint, aPort, aUseKeepAlives); + return new PhysicalLayerAsyncTCPv4Server(apLogger, apSrv, s); } -IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort, bool aUseKeepAlives, boost::asio::io_service* apSrv, Logger* apLogger) +IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv6ClientAsync(TcpSettings s, boost::asio::io_service* apSrv, Logger* apLogger) { - return new PhysicalLayerAsyncTCPv6Client(apLogger, apSrv, aAddress, aPort, aUseKeepAlives); + return new PhysicalLayerAsyncTCPv6Client(apLogger, apSrv, s); } -IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort, bool aUseKeepAlives, boost::asio::io_service* apSrv, Logger* apLogger) +IPhysicalLayerAsync* PhysicalLayerFactory :: FGetTCPv6ServerAsync(TcpSettings s, boost::asio::io_service* apSrv, Logger* apLogger) { - return new PhysicalLayerAsyncTCPv6Server(apLogger, apSrv, aEndpoint, aPort, aUseKeepAlives); + return new PhysicalLayerAsyncTCPv6Server(apLogger, apSrv, s); } } diff --git a/opendnp3/APL/PhysicalLayerFactory.h b/opendnp3/APL/PhysicalLayerFactory.h old mode 100644 new mode 100755 index 4b9e031d..444efa58 --- a/opendnp3/APL/PhysicalLayerFactory.h +++ b/opendnp3/APL/PhysicalLayerFactory.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -34,17 +35,17 @@ class PhysicalLayerFactory public: static IPhysicalLayerAsyncFactory GetSerialAsync(SerialSettings s); - static IPhysicalLayerAsyncFactory GetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort, bool aUseKeepAlives); - static IPhysicalLayerAsyncFactory GetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort, bool aUseKeepAlives); - static IPhysicalLayerAsyncFactory GetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort, bool aUseKeepAlives); - static IPhysicalLayerAsyncFactory GetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort, bool aUseKeepAlives); + static IPhysicalLayerAsyncFactory GetTCPv4ClientAsync(TcpSettings s); + static IPhysicalLayerAsyncFactory GetTCPv4ServerAsync(TcpSettings s); + static IPhysicalLayerAsyncFactory GetTCPv6ClientAsync(TcpSettings s); + static IPhysicalLayerAsyncFactory GetTCPv6ServerAsync(TcpSettings s); //normal factory functions static IPhysicalLayerAsync* FGetSerialAsync(SerialSettings s, boost::asio::io_service* apSrv, Logger* apLogger); - static IPhysicalLayerAsync* FGetTCPv4ClientAsync(std::string aAddress, boost::uint16_t aPort, bool aUseKeepAlives, boost::asio::io_service* apSrv, Logger* apLogger); - static IPhysicalLayerAsync* FGetTCPv4ServerAsync(std::string aEndpoint, boost::uint16_t aPort, bool aUseKeepAlives, boost::asio::io_service* apSrv, Logger* apLogger); - static IPhysicalLayerAsync* FGetTCPv6ClientAsync(std::string aAddress, boost::uint16_t aPort, bool aUseKeepAlives, boost::asio::io_service* apSrv, Logger* apLogger); - static IPhysicalLayerAsync* FGetTCPv6ServerAsync(std::string aEndpoint, boost::uint16_t aPort, bool aUseKeepAlives, boost::asio::io_service* apSrv, Logger* apLogger); + static IPhysicalLayerAsync* FGetTCPv4ClientAsync(TcpSettings s, boost::asio::io_service* apSrv, Logger* apLogger); + static IPhysicalLayerAsync* FGetTCPv4ServerAsync(TcpSettings s, boost::asio::io_service* apSrv, Logger* apLogger); + static IPhysicalLayerAsync* FGetTCPv6ClientAsync(TcpSettings s, boost::asio::io_service* apSrv, Logger* apLogger); + static IPhysicalLayerAsync* FGetTCPv6ServerAsync(TcpSettings s, boost::asio::io_service* apSrv, Logger* apLogger); }; } diff --git a/opendnp3/APL/PhysicalLayerManager.cpp b/opendnp3/APL/PhysicalLayerManager.cpp old mode 100644 new mode 100755 index 57a53673..3714d390 --- a/opendnp3/APL/PhysicalLayerManager.cpp +++ b/opendnp3/APL/PhysicalLayerManager.cpp @@ -59,30 +59,30 @@ void PhysicalLayerManager ::AddPhysicalLayer(const std::string& arName, PhysLaye this->AddLayer(arName, s, pli); } -void PhysicalLayerManager ::AddTCPv4Client(const std::string& arName, PhysLayerSettings s, const std::string& arAddr, boost::uint16_t aPort) +void PhysicalLayerManager ::AddTCPv4Client(const std::string& arName, PhysLayerSettings s, TcpSettings aTcp) { - IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv4ClientAsync(arAddr, aPort, s.UseKeepAlives); + IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv4ClientAsync(aTcp); PhysLayerInstance pli(fac); this->AddLayer(arName, s, pli); } -void PhysicalLayerManager ::AddTCPv4Server(const std::string& arName, PhysLayerSettings s, const std::string& arEndpoint, boost::uint16_t aPort) +void PhysicalLayerManager ::AddTCPv4Server(const std::string& arName, PhysLayerSettings s, TcpSettings aTcp) { - IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv4ServerAsync(arEndpoint, aPort, s.UseKeepAlives); + IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv4ServerAsync(aTcp); PhysLayerInstance pli(fac); this->AddLayer(arName, s, pli); } -void PhysicalLayerManager ::AddTCPv6Client(const std::string& arName, PhysLayerSettings s, const std::string& arAddr, boost::uint16_t aPort) +void PhysicalLayerManager ::AddTCPv6Client(const std::string& arName, PhysLayerSettings s, TcpSettings aTcp) { - IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv6ClientAsync(arAddr, aPort, s.UseKeepAlives); + IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv6ClientAsync(aTcp); PhysLayerInstance pli(fac); this->AddLayer(arName, s, pli); } -void PhysicalLayerManager ::AddTCPv6Server(const std::string& arName, PhysLayerSettings s, const std::string& arEndpoint, boost::uint16_t aPort) +void PhysicalLayerManager ::AddTCPv6Server(const std::string& arName, PhysLayerSettings s, TcpSettings aTcp) { - IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv6ServerAsync(arEndpoint, aPort, s.UseKeepAlives); + IPhysicalLayerAsyncFactory fac = PhysicalLayerFactory::GetTCPv6ServerAsync(aTcp); PhysLayerInstance pli(fac); this->AddLayer(arName, s, pli); } diff --git a/opendnp3/APL/PhysicalLayerManager.h b/opendnp3/APL/PhysicalLayerManager.h old mode 100644 new mode 100755 index 59eacb19..f44f62da --- a/opendnp3/APL/PhysicalLayerManager.h +++ b/opendnp3/APL/PhysicalLayerManager.h @@ -21,6 +21,7 @@ #include #include +#include namespace apl { @@ -37,10 +38,10 @@ class PhysicalLayerManager : public PhysicalLayerMap //function for manually adding entires - void AddTCPv4Client(const std::string& arName, PhysLayerSettings, const std::string& arAddr, boost::uint16_t aPort); - void AddTCPv4Server(const std::string& arName, PhysLayerSettings, const std::string& arEndpoint, boost::uint16_t aPort); - void AddTCPv6Client(const std::string& arName, PhysLayerSettings, const std::string& arAddr, boost::uint16_t aPort); - void AddTCPv6Server(const std::string& arName, PhysLayerSettings, const std::string& arEndpoint, boost::uint16_t aPort); + void AddTCPv4Client(const std::string& arName, PhysLayerSettings, TcpSettings); + void AddTCPv4Server(const std::string& arName, PhysLayerSettings, TcpSettings); + void AddTCPv6Client(const std::string& arName, PhysLayerSettings, TcpSettings); + void AddTCPv6Server(const std::string& arName, PhysLayerSettings, TcpSettings); void AddSerial(const std::string& arName, PhysLayerSettings, SerialSettings); void AddPhysicalLayer(const std::string& arName, PhysLayerSettings, IPhysicalLayerAsync*); diff --git a/opendnp3/APL/TcpSettings.h b/opendnp3/APL/TcpSettings.h new file mode 100755 index 00000000..72591096 --- /dev/null +++ b/opendnp3/APL/TcpSettings.h @@ -0,0 +1,57 @@ +// +// Licensed to Green Energy Corp (www.greenenergycorp.com) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. Green Enery Corp licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// +#ifndef __TCP_SETTINGS_H_ +#define __TCP_SETTINGS_H_ + +#include +#include + +namespace apl +{ + +struct TcpSettings { + TcpSettings() : + mAddress(), + mPort(0), + mUseKeepAlives(false), + mSendBufferSize(0), + mRecvBufferSize(0) + { + } + + TcpSettings(const std::string& aAddress, boost::uint16_t aPort) : + mAddress(aAddress), + mPort(aPort), + mUseKeepAlives(false), + mSendBufferSize(0), + mRecvBufferSize(0) + { + } + + std::string mAddress; // For server, this is the endpoint + boost::uint16_t mPort; + bool mUseKeepAlives; + size_t mSendBufferSize; // 0 indicates to use system default + size_t mRecvBufferSize; // 0 indicates to use system default +}; + +} + +#endif + diff --git a/opendnp3/DNP3/AsyncStackManager.cpp b/opendnp3/DNP3/AsyncStackManager.cpp old mode 100644 new mode 100755 index 5076e96c..1e32ef5e --- a/opendnp3/DNP3/AsyncStackManager.cpp +++ b/opendnp3/DNP3/AsyncStackManager.cpp @@ -79,38 +79,38 @@ std::vector AsyncStackManager::GetPortNames() return GetKeys(mChannelNameToChannel); } -void AsyncStackManager::AddTCPClient(const std::string& arName, PhysLayerSettings aSettings, const std::string& arAddr, boost::uint16_t aPort) +void AsyncStackManager::AddTCPClient(const std::string& arName, PhysLayerSettings aSettings, TcpSettings aTcp) { - AddTCPv4Client(arName, aSettings, arAddr, aPort); + AddTCPv4Client(arName, aSettings, aTcp); } -void AsyncStackManager::AddTCPv4Client(const std::string& arName, PhysLayerSettings aSettings, const std::string& arAddr, boost::uint16_t aPort) +void AsyncStackManager::AddTCPv4Client(const std::string& arName, PhysLayerSettings aSettings, TcpSettings aTcp) { this->ThrowIfAlreadyShutdown(); - mMgr.AddTCPv4Client(arName, aSettings, arAddr, aPort); + mMgr.AddTCPv4Client(arName, aSettings, aTcp); } -void AsyncStackManager::AddTCPServer(const std::string& arName, PhysLayerSettings aSettings, const std::string& arEndpoint, boost::uint16_t aPort) +void AsyncStackManager::AddTCPServer(const std::string& arName, PhysLayerSettings aSettings, TcpSettings aTcp) { - AddTCPv4Server(arName, aSettings, arEndpoint, aPort); + AddTCPv4Server(arName, aSettings, aTcp); } -void AsyncStackManager::AddTCPv4Server(const std::string& arName, PhysLayerSettings aSettings, const std::string& arEndpoint, boost::uint16_t aPort) +void AsyncStackManager::AddTCPv4Server(const std::string& arName, PhysLayerSettings aSettings, TcpSettings aTcp) { this->ThrowIfAlreadyShutdown(); - mMgr.AddTCPv4Server(arName, aSettings, arEndpoint, aPort); + mMgr.AddTCPv4Server(arName, aSettings, aTcp); } -void AsyncStackManager::AddTCPv6Client(const std::string& arName, PhysLayerSettings aSettings, const std::string& arAddr, boost::uint16_t aPort) +void AsyncStackManager::AddTCPv6Client(const std::string& arName, PhysLayerSettings aSettings, TcpSettings aTcp) { this->ThrowIfAlreadyShutdown(); - mMgr.AddTCPv6Client(arName, aSettings, arAddr, aPort); + mMgr.AddTCPv6Client(arName, aSettings, aTcp); } -void AsyncStackManager::AddTCPv6Server(const std::string& arName, PhysLayerSettings aSettings, const std::string& arEndpoint, boost::uint16_t aPort) +void AsyncStackManager::AddTCPv6Server(const std::string& arName, PhysLayerSettings aSettings, TcpSettings aTcp) { this->ThrowIfAlreadyShutdown(); - mMgr.AddTCPv6Server(arName, aSettings, arEndpoint, aPort); + mMgr.AddTCPv6Server(arName, aSettings, aTcp); } void AsyncStackManager::AddSerial(const std::string& arName, PhysLayerSettings aSettings, SerialSettings aSerial) diff --git a/opendnp3/DNP3/AsyncStackManager.h b/opendnp3/DNP3/AsyncStackManager.h old mode 100644 new mode 100755 index c78ca8cc..bbddccc2 --- a/opendnp3/DNP3/AsyncStackManager.h +++ b/opendnp3/DNP3/AsyncStackManager.h @@ -31,10 +31,12 @@ #include #include #include +#include #include #include #include + #include #include @@ -76,18 +78,18 @@ class AsyncStackManager : private Threadable, private Loggable // All the io_service marshalling now occurs here. It's now safe to add/remove while the manager is running. // Adds a TCPv4Client port, excepts if the port already exists - void AddTCPClient(const std::string& arName, PhysLayerSettings, const std::string& arAddr, boost::uint16_t aPort); - void AddTCPv4Client(const std::string& arName, PhysLayerSettings, const std::string& arAddr, boost::uint16_t aPort); + void AddTCPClient(const std::string& arName, PhysLayerSettings, TcpSettings); + void AddTCPv4Client(const std::string& arName, PhysLayerSettings, TcpSettings); // Adds a TCPv4Server port, excepts if the port already exists - void AddTCPServer(const std::string& arName, PhysLayerSettings, const std::string& arEndpoint, boost::uint16_t aPort); - void AddTCPv4Server(const std::string& arName, PhysLayerSettings, const std::string& arEndpoint, boost::uint16_t aPort); + void AddTCPServer(const std::string& arName, PhysLayerSettings, TcpSettings); + void AddTCPv4Server(const std::string& arName, PhysLayerSettings, TcpSettings); // Adds a TCPv6Client port, excepts if the port already exists - void AddTCPv6Client(const std::string& arName, PhysLayerSettings, const std::string& arAddr, boost::uint16_t aPort); + void AddTCPv6Client(const std::string& arName, PhysLayerSettings, TcpSettings); // Adds a TCPv6Server port, excepts if the port already exists - void AddTCPv6Server(const std::string& arName, PhysLayerSettings, const std::string& arEndpoint, boost::uint16_t aPort); + void AddTCPv6Server(const std::string& arName, PhysLayerSettings, TcpSettings); // Adds a Serial port, excepts if the port already exists void AddSerial(const std::string& arName, PhysLayerSettings, SerialSettings); diff --git a/opendnp3/DNP3/StackManager.cpp b/opendnp3/DNP3/StackManager.cpp old mode 100644 new mode 100755 index a31240c1..d37ac84d --- a/opendnp3/DNP3/StackManager.cpp +++ b/opendnp3/DNP3/StackManager.cpp @@ -42,34 +42,34 @@ StackManager::~StackManager() } //used for defining ports -void StackManager::AddTCPClient(const std::string& arName, PhysLayerSettings s, const std::string& arAddr, boost::uint16_t aPort) +void StackManager::AddTCPClient(const std::string& arName, PhysLayerSettings s, TcpSettings aTcp) { - AddTCPv4Client(arName, s, arAddr, aPort); + AddTCPv4Client(arName, s, aTcp); } -void StackManager::AddTCPv4Client(const std::string& arName, PhysLayerSettings s, const std::string& arAddr, boost::uint16_t aPort) +void StackManager::AddTCPv4Client(const std::string& arName, PhysLayerSettings s, TcpSettings aTcp) { - mpImpl->AddTCPv4Client(arName, s, arAddr, aPort); + mpImpl->AddTCPv4Client(arName, s, aTcp); } -void StackManager::AddTCPServer(const std::string& arName, PhysLayerSettings s, const std::string& arEndpoint, boost::uint16_t aPort) +void StackManager::AddTCPServer(const std::string& arName, PhysLayerSettings s, TcpSettings aTcp) { - AddTCPv4Server(arName, s, arEndpoint, aPort); + AddTCPv4Server(arName, s, aTcp); } -void StackManager::AddTCPv4Server(const std::string& arName, PhysLayerSettings s, const std::string& arEndpoint, boost::uint16_t aPort) +void StackManager::AddTCPv4Server(const std::string& arName, PhysLayerSettings s, TcpSettings aTcp) { - mpImpl->AddTCPv4Server(arName, s, arEndpoint, aPort); + mpImpl->AddTCPv4Server(arName, s, aTcp); } -void StackManager::AddTCPv6Client(const std::string& arName, PhysLayerSettings s, const std::string& arAddr, boost::uint16_t aPort) +void StackManager::AddTCPv6Client(const std::string& arName, PhysLayerSettings s, TcpSettings aTcp) { - mpImpl->AddTCPv6Client(arName, s, arAddr, aPort); + mpImpl->AddTCPv6Client(arName, s, aTcp); } -void StackManager::AddTCPv6Server(const std::string& arName, PhysLayerSettings s, const std::string& arEndpoint, boost::uint16_t aPort) +void StackManager::AddTCPv6Server(const std::string& arName, PhysLayerSettings s, TcpSettings aTcp) { - mpImpl->AddTCPv6Server(arName, s, arEndpoint, aPort); + mpImpl->AddTCPv6Server(arName, s, aTcp); } void StackManager::AddSerial(const std::string& arName, PhysLayerSettings s, SerialSettings aSerial) diff --git a/opendnp3/DNP3/StackManager.h b/opendnp3/DNP3/StackManager.h old mode 100644 new mode 100755 index deed91f6..d6301f02 --- a/opendnp3/DNP3/StackManager.h +++ b/opendnp3/DNP3/StackManager.h @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -57,33 +58,27 @@ class StackManager void AddTCPClient(const std::string& arName, PhysLayerSettings aPhys, - const std::string& arAddr, - boost::uint16_t aPort); + TcpSettings aTcp); void AddTCPv4Client(const std::string& arName, PhysLayerSettings aPhys, - const std::string& arAddr, - boost::uint16_t aPort); + TcpSettings aTcp); void AddTCPServer(const std::string& arName, PhysLayerSettings aPhys, - const std::string& arEndpoint, - boost::uint16_t aPort); + TcpSettings aTcp); void AddTCPv4Server(const std::string& arName, PhysLayerSettings aPhys, - const std::string& arEndpoint, - boost::uint16_t aPort); + TcpSettings aTcp); void AddTCPv6Client(const std::string& arName, PhysLayerSettings aPhys, - const std::string& arAddr, - boost::uint16_t aPort); + TcpSettings aTcp); void AddTCPv6Server(const std::string& arName, PhysLayerSettings aPhys, - const std::string& arEndpoint, - boost::uint16_t aPort); + TcpSettings aTcp); void AddSerial(const std::string& arName, PhysLayerSettings aPhys, From 1abedb7c1f2121c2f358fc00c22cd55fc90145ef Mon Sep 17 00:00:00 2001 From: Hung Le Date: Tue, 5 Aug 2014 10:23:32 -0700 Subject: [PATCH 48/51] Added TcpSettings.h to the list of headers that need to be installed. --- Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.am b/Makefile.am index e098126c..ebfd4338 100644 --- a/Makefile.am +++ b/Makefile.am @@ -406,6 +406,7 @@ aplheaders_HEADERS = \ opendnp3/APL/SubjectBase.h \ opendnp3/APL/SuspendTimerSource.h \ opendnp3/APL/SyncVar.h \ + opendnp3/APL/TcpSettings.h \ opendnp3/APL/Threadable.h \ opendnp3/APL/ThreadBase.h \ opendnp3/APL/ThreadBoost.h \ From eb2f3eba3c616279e129775e068aa631d7450c37 Mon Sep 17 00:00:00 2001 From: Hung Le Date: Thu, 20 Nov 2014 15:30:26 -0800 Subject: [PATCH 49/51] Added the ability to clear the need time flag on the outstation through a IIN write. --- DNP3Test/TestSlave.cpp | 49 +++++++++++++++++++++++------------------ opendnp3/DNP3/Slave.cpp | 8 +++++++ 2 files changed, 36 insertions(+), 21 deletions(-) diff --git a/DNP3Test/TestSlave.cpp b/DNP3Test/TestSlave.cpp index 6b76c2fe..b09c208f 100644 --- a/DNP3Test/TestSlave.cpp +++ b/DNP3Test/TestSlave.cpp @@ -141,13 +141,25 @@ BOOST_AUTO_TEST_CASE(WriteIINEnabled) BOOST_REQUIRE_EQUAL(t.Read(), "C0 81 80 04"); } +BOOST_AUTO_TEST_CASE(WriteIINNeedTime) +{ + SlaveConfig cfg; + cfg.mDisableUnsol = true; + cfg.mAllowTimeSync = true; + SlaveTestObject t(cfg); + t.slave.OnLowerLayerUp(); + + t.SendToSlave("C0 02 50 01 00 04 04 00"); + BOOST_REQUIRE_EQUAL(t.Read(), "C0 81 80 00"); +} + BOOST_AUTO_TEST_CASE(WriteIINWrongBit) { SlaveConfig cfg; cfg.mDisableUnsol = true; SlaveTestObject t(cfg); t.slave.OnLowerLayerUp(); - t.SendToSlave("C0 02 50 01 00 04 04 01"); + t.SendToSlave("C0 02 50 01 01 00 80 00 80 01"); BOOST_REQUIRE_EQUAL(t.Read(), "C0 81 80 04"); } @@ -349,11 +361,9 @@ BOOST_AUTO_TEST_CASE(ReadClass1) t.SendToSlave("C0 01 3C 02 06"); - /* - * The indices should be in reverse-order from how they were - * added, but the values for a given index should be in the same - * order. - */ + // The indices should be in reverse-order from how they were + // added, but the values for a given index should be in the same + // order. BOOST_REQUIRE_EQUAL(t.Read(), "E0 81 80 00 20 01 17 05 10 01 87 09 00 00 17 01 34 12 00 00 05 01 22 22 00 00 05 01 33 33 00 00 05 01 44 44 00 00"); t.SendToSlave("C0 01 3C 02 06"); // Repeat read class 1 @@ -384,10 +394,9 @@ BOOST_AUTO_TEST_CASE(ReadClass1TimeOrdered) Analog a3(0x3333, AQ_ONLINE); a3.SetTime(TimeStamp_t(15)); - /* - * Expected order in packet should be: - * a2 -> a0 -> a3 -> a1 - */ + + // Expected order in packet should be: + // a2 -> a0 -> a3 -> a1 t.db.Update(a0, 0x10); t.db.Update(a1, 0x10); t.db.Update(a2, 0x10); @@ -396,11 +405,9 @@ BOOST_AUTO_TEST_CASE(ReadClass1TimeOrdered) t.SendToSlave("C0 01 3C 02 06"); - /* - * The indices should be in reverse-order from how they were - * added, but the values for a given index should be in the same - * order. - */ + // The indices should be in reverse-order from how they were + // added, but the values for a given index should be in the same + // order. BOOST_REQUIRE_EQUAL(t.Read(), "E0 81 80 00 20 01 17 04 10 01 11 11 00 00 10 01 22 22 00 00 10 01 33 33 00 00 10 01 44 44 00 00"); t.SendToSlave("C0 01 3C 02 06"); // Repeat read class 1 @@ -502,7 +509,7 @@ BOOST_AUTO_TEST_CASE(UnsolDataWithZeroLenObjectGroup) t.db.Configure(DT_SETPOINT_STATUS, 2); t.db.Configure(DT_CONTROL_STATUS, 2); - + // do a transaction before the layer comes online to prove that the null transaction // is occuring before unsol data is sent { @@ -652,7 +659,7 @@ BOOST_AUTO_TEST_CASE(UnsolDataWithZeroLenObjectGroup) t.slave.GetDataObserver()->Update(Counter(0, CQ_ONLINE), 7); } BOOST_REQUIRE(t.mts.DispatchOne()); - + // Bring up the app layer t.slave.OnLowerLayerUp(); @@ -661,7 +668,7 @@ BOOST_AUTO_TEST_CASE(UnsolDataWithZeroLenObjectGroup) // Receive the DEVICE_RESTART unsol message BOOST_REQUIRE_EQUAL(t.Read(), "F0 82 80 00"); - + // Response to disabling sponatenous messages BOOST_REQUIRE_EQUAL(t.Read(), "C0 81 80 00"); @@ -670,7 +677,7 @@ BOOST_AUTO_TEST_CASE(UnsolDataWithZeroLenObjectGroup) // Function not supported BOOST_REQUIRE_EQUAL(t.Read(), "C0 81 80 01"); - + // Write t.SendToSlave("C1 02 50 01 00 07 07 00"); @@ -1607,12 +1614,12 @@ BOOST_AUTO_TEST_CASE(ReadByRangeHeader) { Transaction tr(&t.db); - t.db.Update(Analog(42, AQ_ONLINE), 5); + t.db.Update(Analog(42, AQ_ONLINE), 5); t.db.Update(Analog(41, AQ_ONLINE), 6); } t.SendToSlave("C0 01 1E 02 00 05 06"); // read 30 var 2, [05 : 06] - BOOST_REQUIRE_EQUAL(t.Read(), "C0 81 80 00 1E 02 00 05 06 01 2A 00 01 29 00"); + BOOST_REQUIRE_EQUAL(t.Read(), "C0 81 80 00 1E 02 00 05 06 01 2A 00 01 29 00"); } template diff --git a/opendnp3/DNP3/Slave.cpp b/opendnp3/DNP3/Slave.cpp index 5783ce90..27b90e6a 100644 --- a/opendnp3/DNP3/Slave.cpp +++ b/opendnp3/DNP3/Slave.cpp @@ -354,6 +354,14 @@ void Slave::HandleWriteIIN(HeaderReadIterator& arHdr) } break; } + + case IINI_NEED_TIME: + mpTimeTimer->Cancel(); + mpTimeTimer = NULL; + mIIN.SetNeedTime(false); + LOG_BLOCK(LEV_INFO, "Master forced clear time needed flag"); + break; + default: mRspIIN.SetParameterError(true); ERROR_BLOCK(LEV_WARNING, "", SERR_INVALID_IIN_WRITE); From ac1c827336c237b3dd4321b42a937a6b25ac4598 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Tue, 2 Jun 2015 05:55:20 -0700 Subject: [PATCH 50/51] Added flag to allow builds on Ubuntu 14.04 with Boost 1.55 --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index ebfd4338..8c385492 100644 --- a/Makefile.am +++ b/Makefile.am @@ -9,7 +9,7 @@ CORE_BOOST_LIBS = $(BOOST_DATE_TIME_LIB) $(BOOST_THREAD_LIB) $(BOOST_PROGRAM_OP TEST_BOOST_LIBS = $(CORE_BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) AM_CXXFLAGS = $(BOOST_CPPFLAGS) -DBOOST_TEST_DYN_LINK -DBOOST_ASIO_ENABLE_CANCELIO -DBOOST_REGEX_NO_LIB -AM_LDFLAGS = $(BOOST_LDFLAGS) +AM_LDFLAGS = $(BOOST_LDFLAGS) $(BOOST_SYSTEM_LIB) # Dummy placeholder to allow for expansion later BUILT_SOURCES = From a1e2f655d3ae7e4720af2616958f6c399acd26f4 Mon Sep 17 00:00:00 2001 From: Chris Verges Date: Tue, 2 Jun 2015 05:55:38 -0700 Subject: [PATCH 51/51] Fixed counter type in testset --- Terminal/DOTerminalExtension.cpp | 4 ++-- Terminal/Terminal.cpp | 8 ++++++++ opendnp3/APL/DataTypes.h | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Terminal/DOTerminalExtension.cpp b/Terminal/DOTerminalExtension.cpp index 3e9e2225..e12665e0 100644 --- a/Terminal/DOTerminalExtension.cpp +++ b/Terminal/DOTerminalExtension.cpp @@ -36,9 +36,9 @@ void DOTerminalExtension::_BindToTerminal(ITerminal* apTerminal) cmd.mName = "c"; oss.str(""); - oss << "queue c <0|1> "; + oss << "queue c <#.#> "; cmd.mUsage = oss.str(); - cmd.mDesc = "Queues an counter value into the transaction buffer"; + cmd.mDesc = "Queues a counter value into the transaction buffer"; cmd.mHandler = boost::bind(&DOTerminalExtension::HandleQueueCounter, this, _1); apTerminal->BindCommand(cmd, "queue c"); diff --git a/Terminal/Terminal.cpp b/Terminal/Terminal.cpp index ea0776c8..be5e669a 100644 --- a/Terminal/Terminal.cpp +++ b/Terminal/Terminal.cpp @@ -77,6 +77,14 @@ void Terminal::InitCmdHandlers() quit.mDesc = "Terminates the program"; this->BindCommand(quit, "quit"); + + CommandNode exit; + exit.mName = "exit"; + exit.mHandler = boost::bind(&Terminal::HandleQuit, this, _1); + exit.mUsage = "exit"; + exit.mDesc = "Terminates the program (alias for quit)"; + + this->BindCommand(exit, "exit"); } else { diff --git a/opendnp3/APL/DataTypes.h b/opendnp3/APL/DataTypes.h index cc16947d..e5a6cc0c 100644 --- a/opendnp3/APL/DataTypes.h +++ b/opendnp3/APL/DataTypes.h @@ -137,7 +137,7 @@ class Counter : public TypedDataPoint SetQuality(aQuality); } - typedef boost::uint8_t ValueType; + typedef boost::uint32_t ValueType; typedef CounterQuality QualityType; typedef QualityConverter QualConverter;