From 8106f9e533945f71737fc05ec2c223ab6d169258 Mon Sep 17 00:00:00 2001 From: hikalkan Date: Sat, 1 Nov 2014 23:38:10 +0200 Subject: [PATCH] Added all sources and resources. --- binaries/DotNetMQ.exe | Bin 0 -> 6656 bytes binaries/DotNetMQ.exe.config | 22 + binaries/INSTALL_x64.bat | 2 + binaries/INSTALL_x86.bat | 2 + binaries/MDSCommonLib.XML | 3601 ++ binaries/MDSCommonLib.dll | Bin 0 -> 72192 bytes binaries/MDSCore.XmlSerializers.dll | Bin 0 -> 8704 bytes binaries/MDSCore.dll | Bin 0 -> 110080 bytes binaries/MDSManager.exe | Bin 0 -> 58368 bytes binaries/MDSManager.exe.config | 36 + binaries/MDSServiceProxyGenerator.exe | Bin 0 -> 15872 bytes binaries/MDSSettings.design.xml | 6 + binaries/MDSSettings.xml | 19 + binaries/MySql.Data.dll | Bin 0 -> 335872 bytes binaries/Setup/Databases/MSSQL/DB-FILES.zip | Bin 0 -> 157779 bytes binaries/Setup/Databases/MSSQL/ReadMe.txt | 6 + binaries/Setup/Databases/MSSQL/Tables.txt | 36 + binaries/Setup/Databases/MySQL/ReadMe.txt | 2 + binaries/Setup/Databases/MySQL/Tables.txt | 13 + binaries/SqliteDB/MDS.s3db | Bin 0 -> 52224 bytes binaries/SqliteDB/ReadMe.txt | 1 + binaries/System.Data.SQLite.dll | Bin 0 -> 904704 bytes binaries/UNINSTALL_x64.bat | 2 + binaries/UNINSTALL_x86.bat | 2 + binaries/log4net.dll | Bin 0 -> 270336 bytes doc/Article-latest.htm | 1090 + doc/Article.html | 825 + doc/Images/01_MessageQueue.gif | Bin 0 -> 8250 bytes doc/Images/02_BadMessaging.gif | Bin 0 -> 16694 bytes doc/Images/03_SimpleDotNetMQ.gif | Bin 0 -> 9518 bytes doc/Images/04_CompleteMessaging.gif | Bin 0 -> 18282 bytes doc/Images/05_AddApps.jpg | Bin 0 -> 29246 bytes doc/Images/06_FirstApps.gif | Bin 0 -> 33927 bytes doc/Images/07_ServerGraph1.gif | Bin 0 -> 31169 bytes doc/Images/08_NetworkMessaging.gif | Bin 0 -> 12983 bytes doc/Images/09_DistSmsSystem.gif | Bin 0 -> 29872 bytes doc/Images/10_StockService.gif | Bin 0 -> 22886 bytes doc/Images/11_ProxyGenerateTool.gif | Bin 0 -> 59082 bytes doc/Sample.docx | Bin 0 -> 13146 bytes .../Application1/Application1.csproj | 67 + .../FirstApplication/Application1/Program.cs | 45 + .../Application1/Properties/AssemblyInfo.cs | 36 + .../Application2/Application2.csproj | 67 + .../FirstApplication/Application2/Program.cs | 48 + .../Application2/Properties/AssemblyInfo.cs | 36 + .../Dependencies/MDSCommonLib.dll | Bin 0 -> 72192 bytes .../FirstApplication/Dependencies/log4net.dll | Bin 0 -> 270336 bytes samples/FirstApplication/FirstApplication.sln | 32 + .../Dependencies/MDSCommonLib.dll | Bin 0 -> 72192 bytes .../Dependencies/log4net.dll | Bin 0 -> 270336 bytes .../SmsMailClient/MyMailSmsServiceProxy.cs | 92 + .../SmsMailClient/Program.cs | 29 + .../SmsMailClient/Properties/AssemblyInfo.cs | 36 + .../SmsMailClient/SmsMailClient.csproj | 68 + .../SmsMailServer/MyMailSmsService.cs | 48 + .../SmsMailServer/Program.cs | 20 + .../SmsMailServer/Properties/AssemblyInfo.cs | 36 + .../SmsMailServer/SmsMailServer.csproj | 68 + .../SmsMailServerSystem.sln | 32 + .../Dependencies/MDSCommonLib.dll | Bin 0 -> 72192 bytes .../StockApplication/Dependencies/log4net.dll | Bin 0 -> 270336 bytes samples/StockApplication/StockApplication.sln | 38 + .../StockApplication/Program.cs | 56 + .../Properties/AssemblyInfo.cs | 36 + .../StockApplication/StockApplication.csproj | 73 + .../StockCommonLib/Properties/AssemblyInfo.cs | 36 + .../StockCommonLib/StockCommonLib.csproj | 60 + .../StockCommonLib/StockQueryMessage.cs | 10 + .../StockCommonLib/StockQueryResultMessage.cs | 12 + .../StockApplication/StockServer/Program.cs | 73 + .../StockServer/Properties/AssemblyInfo.cs | 36 + .../StockServer/StockServer.csproj | 73 + .../App_Code/MDSAppService.cs | 47 + samples/WebServiceSample/MDSAppService.asmx | 1 + samples/WebServiceSample/web.config | 120 + src/Dependencies/Databases/MSSQL/DB-FILES.zip | Bin 0 -> 157779 bytes src/Dependencies/Databases/MSSQL/ReadMe.txt | 6 + src/Dependencies/Databases/MSSQL/Tables.txt | 36 + src/Dependencies/Databases/MySQL/ReadMe.txt | 2 + src/Dependencies/Databases/MySQL/Tables.txt | 13 + src/Dependencies/Databases/SQLite/MDS.s3db | Bin 0 -> 52224 bytes src/Dependencies/Databases/SQLite/ReadMe.txt | 1 + src/Dependencies/Libraries/MySql.Data.dll | Bin 0 -> 335872 bytes .../Libraries/System.Data.SQLite.dll | Bin 0 -> 904704 bytes src/Dependencies/Libraries/log4net.dll | Bin 0 -> 270336 bytes src/Dependencies/Libraries/log4net.xml | 28655 ++++++++++++++++ src/DotNetMQ.sln | 94 + src/DotNetMQ/App.config | 22 + src/DotNetMQ/DotNetMQ.csproj | 106 + src/DotNetMQ/DotNetMqService.Designer.cs | 37 + src/DotNetMQ/DotNetMqService.cs | 77 + src/DotNetMQ/Liscense.txt | 16 + src/DotNetMQ/MDSSettings.design.xml | 6 + src/DotNetMQ/MDSSettings.xml | 19 + src/DotNetMQ/Program.cs | 24 + src/DotNetMQ/ProjectInstaller.Designer.cs | 60 + src/DotNetMQ/ProjectInstaller.cs | 19 + src/DotNetMQ/ProjectInstaller.resx | 129 + src/DotNetMQ/Properties/AssemblyInfo.cs | 37 + src/DotNetMQ/SqliteDB/MDS.s3db | Bin 0 -> 52224 bytes src/MDSCommonLib/Changes.txt | 2 + .../Client/AppService/IMDSApplication.cs | 41 + .../Client/AppService/IMDSServer.cs | 34 + .../Client/AppService/MDSAppServiceBase.cs | 37 + .../AppService/MDSClientApplicationBase.cs | 43 + .../Client/AppService/MDSMessageProcessor.cs | 49 + src/MDSCommonLib/Client/AppService/README.txt | 1 + src/MDSCommonLib/Client/IIncomingMessage.cs | 145 + src/MDSCommonLib/Client/IOutgoingMessage.cs | 133 + src/MDSCommonLib/Client/MDSClient.cs | 943 + .../Client/MDSRemoteAppEndPoint.cs | 53 + .../MDSServices/MDSRemoteInvokeMessage.cs | 46 + .../MDSRemoteInvokeReturnMessage.cs | 44 + .../Client/MDSServices/MDSService.cs | 321 + .../MDSServices/MDSServiceApplication.cs | 435 + .../Client/MDSServices/MDSServiceAttribute.cs | 50 + .../Client/MDSServices/MDSServiceConsumer.cs | 111 + .../MDSServices/MDSServiceMethodAttribute.cs | 36 + .../MDSServiceMethodParameterAttribute.cs | 44 + .../Client/MDSServices/MDSServiceProxyBase.cs | 166 + src/MDSCommonLib/Client/MessageAckStates.cs | 42 + .../Client/MessageReceivedEventArgs.cs | 41 + .../WebServices/IWebServiceIncomingMessage.cs | 91 + .../IWebServiceOperationResultMessage.cs | 38 + .../WebServices/IWebServiceOutgoingMessage.cs | 36 + .../WebServices/IWebServiceResponseMessage.cs | 38 + .../Client/WebServices/WebServiceHelper.cs | 183 + .../CommunicationStateChangedEventArgs.cs | 42 + .../Channels/ICommunicationChannel.cs | 77 + .../Channels/MessageReceivedEventArgs.cs | 42 + .../Communication/Channels/TCPChannel.cs | 339 + .../Communication/CommunicationConsts.cs | 42 + .../Communication/CommunicationStates.cs | 47 + .../Communication/CommunicationWays.cs | 38 + .../Communication/CommunicatorTypes.cs | 50 + .../AddNewApplicationMessage.cs | 62 + .../ApplicationWebServiceInfo.cs | 52 + .../ClientApplicationRefreshEventMessage.cs | 69 + .../ClientApplicationRemovedEventMessage.cs | 62 + .../ControllerMessages/ControlMessage.cs | 53 + .../ControlMessageFactory.cs | 78 + .../GetApplicationListMessage.cs | 35 + .../GetApplicationListResponseMessage.cs | 98 + .../GetApplicationWebServicesMessage.cs | 62 + ...etApplicationWebServicesResponseMessage.cs | 76 + .../GetServerGraphMessage.cs | 35 + .../GetServerGraphResponseMessage.cs | 62 + .../OperationResultMessage.cs | 69 + .../RemoveApplicationMessage.cs | 62 + .../RemoveApplicationResponseMessage.cs | 76 + .../ControllerMessages/ServerGraphInfo.cs | 117 + .../UpdateApplicationWebServicesMessage.cs | 70 + .../UpdateServerGraphMessage.cs | 62 + .../MDSChangeCommunicationWayMessage.cs | 65 + .../Messages/MDSControllerMessage.cs | 64 + .../Messages/MDSDataTransferMessage.cs | 143 + .../MDSDataTransferResponseMessage.cs | 71 + .../Communication/Messages/MDSMessage.cs | 77 + .../Messages/MDSMessageFactory.cs | 57 + .../Messages/MDSOperationResultMessage.cs | 73 + .../Communication/Messages/MDSPingMessage.cs | 40 + .../Messages/MDSRegisterMessage.cs | 95 + .../Messages/MessageTransmitRules.cs | 58 + .../Messages/ServerTransmitReport.cs | 76 + .../Protocols/IMDSWireProtocol.cs | 44 + .../Protocols/MDSDefaultWireProtocol.cs | 81 + .../Exceptions/MDSDatabaseException.cs | 64 + src/MDSCommonLib/Exceptions/MDSException.cs | 70 + .../Exceptions/MDSNoCommunicatorException.cs | 59 + .../Exceptions/MDSRemoteException.cs | 70 + .../Exceptions/MDSSerializationException.cs | 59 + .../Exceptions/MDSTimeoutException.cs | 59 + src/MDSCommonLib/GUI/MDSGuiHelper.cs | 104 + src/MDSCommonLib/GeneralHelper.cs | 107 + src/MDSCommonLib/Liscense.txt | 16 + src/MDSCommonLib/MDSCommonLib.csproj | 155 + .../ControlMessageReceivedEventArgs.cs | 51 + src/MDSCommonLib/Management/MDSController.cs | 513 + src/MDSCommonLib/Properties/AssemblyInfo.cs | 37 + .../CreateSerializableObjectHandler.cs | 31 + .../Serialization/IMDSDeserializer.cs | 106 + .../Serialization/IMDSSerializable.cs | 39 + .../Serialization/IMDSSerializer.cs | 101 + .../Serialization/MDSDefaultDeserializer.cs | 265 + .../Serialization/MDSDefaultSerializer.cs | 210 + .../Serialization/MDSSerializationHelper.cs | 75 + src/MDSCommonLib/Threading/IRunnable.cs | 43 + .../Threading/ProcessQueueItemHandler.cs | 59 + .../Threading/QueueProcessorThread.cs | 185 + src/MDSCommonLib/Utils/MDSObjectCollection.cs | 95 + src/MDSCommonLib/Utils/RegistrySettings.cs | 257 + src/MDSCore/Changes.txt | 5 + .../Communication/CommunicationLayer.cs | 437 + .../Communication/CommunicationManagerBase.cs | 63 + src/MDSCore/Communication/CommunicatorBase.cs | 204 + .../Events/CommunicatorConnectedEventArgs.cs | 41 + .../CommunicatorDisconnectedEventArgs.cs | 41 + .../CommunicatorStateChangedEventArgs.cs | 46 + ...essageReceivedFromCommunicatorEventArgs.cs | 47 + ...eReceivedFromRemoteApplicationEventArgs.cs | 51 + .../Communication/ICommunicationManager.cs | 35 + src/MDSCore/Communication/ICommunicator.cs | 63 + .../MDSRemoteApplication.SubClasses.cs | 485 + .../Communication/MDSRemoteApplication.cs | 615 + .../TCPClientConnectedEventArgs.cs | 42 + .../TCPCommunicationManager.cs | 112 + .../TCPCommunication/TCPCommunicator.cs | 242 + .../TCPCommunication/TCPConnectionListener.cs | 219 + .../WebServiceCommunicationManager.cs | 38 + .../WebServiceCommunicator.cs | 150 + src/MDSCore/Liscense.txt | 16 + src/MDSCore/MDSCore.csproj | 181 + src/MDSCore/MDSServer.cs | 140 + src/MDSCore/Organization/MDSAdjacentServer.cs | 322 + .../Organization/MDSClientApplication.cs | 92 + .../Organization/MDSClientApplicationList.cs | 135 + src/MDSCore/Organization/MDSController.cs | 671 + .../MDSPersistentRemoteApplicationBase.cs | 652 + src/MDSCore/Organization/MDSServerGraph.cs | 423 + src/MDSCore/Organization/MDSServerNode.cs | 53 + src/MDSCore/Organization/OrganizationLayer.cs | 768 + .../Routing/DistributionStrategyBase.cs | 67 + .../Routing/IDistributionStrategy.cs | 41 + .../Routing/RandomDistribution.cs | 102 + .../Routing/RoutingDestination.cs | 67 + .../Organization/Routing/RoutingFilter.cs | 106 + .../Organization/Routing/RoutingRule.cs | 108 + .../Organization/Routing/RoutingTable.cs | 115 + .../Routing/SequentialDistribution.cs | 106 + src/MDSCore/Properties/AssemblyInfo.cs | 37 + src/MDSCore/Properties/Settings.Designer.cs | 36 + src/MDSCore/Properties/Settings.settings | 9 + src/MDSCore/Settings/ApplicationInfoItem.cs | 72 + src/MDSCore/Settings/MDSDesignSettings.cs | 174 + src/MDSCore/Settings/MDSSettings.cs | 399 + src/MDSCore/Settings/RouteInfoItem.cs | 133 + src/MDSCore/Settings/ServerDesignItem.cs | 37 + src/MDSCore/Settings/ServerInfoItem.cs | 47 + .../FaultToleratedStorageManagerWrapper.cs | 375 + src/MDSCore/Storage/IStorageManager.cs | 87 + src/MDSCore/Storage/MDSMessageRecord.cs | 86 + .../MemoryStorage/MemoryStorageManager.cs | 227 + .../MsSqlStorage/MsSqlStorageManager.cs | 380 + .../MySqlStorage/MySqlNetStorageManager.cs | 384 + .../MySqlStorage/MySqlODBCStorageManager.cs | 383 + .../SQLiteStorage/SQLiteStorageManager.cs | 426 + src/MDSCore/Storage/StorageManagerFactory.cs | 49 + src/MDSCore/Storage/TableRecord.cs | 60 + .../MDSAppWebServiceRef/MDSAppService.disco | 6 + .../MDSAppWebServiceRef/MDSAppService.wsdl | 66 + .../MDSAppWebServiceRef/Reference.cs | 151 + .../MDSAppWebServiceRef/Reference.map | 7 + src/MDSCore/app.config | 19 + src/MDSManager/App.config | 36 + src/MDSManager/Changes.txt | 2 + src/MDSManager/Liscense.txt | 16 + src/MDSManager/MDSManager.csproj | 180 + .../AddNewApplicationForm.Designer.cs | 129 + .../AddNewApplicationForm.cs | 62 + .../AddNewApplicationForm.resx | 120 + .../ApplicationListForm.Designer.cs | 196 + .../ClientApplications/ApplicationListForm.cs | 421 + .../ApplicationListForm.resx | 129 + ...EditApplicationWebServicesForm.Designer.cs | 255 + .../EditApplicationWebServicesForm.cs | 252 + .../EditApplicationWebServicesForm.resx | 126 + .../GUI/ConnectToServerForm.Designer.cs | 160 + .../Management/GUI/ConnectToServerForm.cs | 105 + .../Management/GUI/ConnectToServerForm.resx | 120 + .../GUI/MDSServers/EditRouteForm.Designer.cs | 308 + .../GUI/MDSServers/EditRouteForm.cs | 39 + .../GUI/MDSServers/EditRouteForm.resx | 144 + .../GUI/MDSServers/EditServerForm.Designer.cs | 188 + .../GUI/MDSServers/EditServerForm.cs | 137 + .../GUI/MDSServers/EditServerForm.resx | 120 + .../GUI/MDSServers/RoutesForm.Designer.cs | 46 + .../Management/GUI/MDSServers/RoutesForm.cs | 38 + .../Management/GUI/MDSServers/RoutesForm.resx | 120 + .../MDSServers/ServerGraphForm.Designer.cs | 164 + .../GUI/MDSServers/ServerGraphForm.cs | 897 + .../GUI/MDSServers/ServerGraphForm.resx | 126 + .../Management/GUI/MainForm.Designer.cs | 122 + src/MDSManager/Management/GUI/MainForm.cs | 239 + src/MDSManager/Management/GUI/MainForm.resx | 123 + src/MDSManager/Management/GUI/Program.cs | 44 + .../GUI/Tools/DoubleBufferedPanel.cs | 41 + src/MDSManager/Properties/AssemblyInfo.cs | 37 + .../Properties/Resources.Designer.cs | 63 + src/MDSManager/Properties/Resources.resx | 117 + .../Properties/Settings.Designer.cs | 26 + src/MDSManager/Properties/Settings.settings | 7 + src/Tests/ServerTest/App.config | 22 + src/Tests/ServerTest/MDSSettings.design.xml | 6 + src/Tests/ServerTest/MDSSettings.xml | 19 + src/Tests/ServerTest/Program.cs | 28 + .../ServerTest/Properties/AssemblyInfo.cs | 37 + src/Tests/ServerTest/ServerTest.csproj | 87 + src/Tests/ServerTest/SqliteDB/MDS.s3db | Bin 0 -> 52224 bytes .../MDSServiceProxyGenerator.csproj | 96 + .../Properties/AssemblyInfo.cs | 36 + .../Properties/Resources.Designer.cs | 63 + .../Properties/Resources.resx | 117 + .../Properties/Settings.Designer.cs | 26 + .../Properties/Settings.settings | 7 + .../Tools/ProxyGenerator/Program.cs | 21 + .../ProxyGeneratorForm.Designer.cs | 269 + .../ProxyGenerator/ProxyGeneratorForm.cs | 151 + .../ProxyGenerator/ProxyGeneratorForm.resx | 126 + 308 files changed, 62626 insertions(+) create mode 100644 binaries/DotNetMQ.exe create mode 100644 binaries/DotNetMQ.exe.config create mode 100644 binaries/INSTALL_x64.bat create mode 100644 binaries/INSTALL_x86.bat create mode 100644 binaries/MDSCommonLib.XML create mode 100644 binaries/MDSCommonLib.dll create mode 100644 binaries/MDSCore.XmlSerializers.dll create mode 100644 binaries/MDSCore.dll create mode 100644 binaries/MDSManager.exe create mode 100644 binaries/MDSManager.exe.config create mode 100644 binaries/MDSServiceProxyGenerator.exe create mode 100644 binaries/MDSSettings.design.xml create mode 100644 binaries/MDSSettings.xml create mode 100644 binaries/MySql.Data.dll create mode 100644 binaries/Setup/Databases/MSSQL/DB-FILES.zip create mode 100644 binaries/Setup/Databases/MSSQL/ReadMe.txt create mode 100644 binaries/Setup/Databases/MSSQL/Tables.txt create mode 100644 binaries/Setup/Databases/MySQL/ReadMe.txt create mode 100644 binaries/Setup/Databases/MySQL/Tables.txt create mode 100644 binaries/SqliteDB/MDS.s3db create mode 100644 binaries/SqliteDB/ReadMe.txt create mode 100644 binaries/System.Data.SQLite.dll create mode 100644 binaries/UNINSTALL_x64.bat create mode 100644 binaries/UNINSTALL_x86.bat create mode 100644 binaries/log4net.dll create mode 100644 doc/Article-latest.htm create mode 100644 doc/Article.html create mode 100644 doc/Images/01_MessageQueue.gif create mode 100644 doc/Images/02_BadMessaging.gif create mode 100644 doc/Images/03_SimpleDotNetMQ.gif create mode 100644 doc/Images/04_CompleteMessaging.gif create mode 100644 doc/Images/05_AddApps.jpg create mode 100644 doc/Images/06_FirstApps.gif create mode 100644 doc/Images/07_ServerGraph1.gif create mode 100644 doc/Images/08_NetworkMessaging.gif create mode 100644 doc/Images/09_DistSmsSystem.gif create mode 100644 doc/Images/10_StockService.gif create mode 100644 doc/Images/11_ProxyGenerateTool.gif create mode 100644 doc/Sample.docx create mode 100644 samples/FirstApplication/Application1/Application1.csproj create mode 100644 samples/FirstApplication/Application1/Program.cs create mode 100644 samples/FirstApplication/Application1/Properties/AssemblyInfo.cs create mode 100644 samples/FirstApplication/Application2/Application2.csproj create mode 100644 samples/FirstApplication/Application2/Program.cs create mode 100644 samples/FirstApplication/Application2/Properties/AssemblyInfo.cs create mode 100644 samples/FirstApplication/Dependencies/MDSCommonLib.dll create mode 100644 samples/FirstApplication/Dependencies/log4net.dll create mode 100644 samples/FirstApplication/FirstApplication.sln create mode 100644 samples/SmsMailServerSystem/Dependencies/MDSCommonLib.dll create mode 100644 samples/SmsMailServerSystem/Dependencies/log4net.dll create mode 100644 samples/SmsMailServerSystem/SmsMailClient/MyMailSmsServiceProxy.cs create mode 100644 samples/SmsMailServerSystem/SmsMailClient/Program.cs create mode 100644 samples/SmsMailServerSystem/SmsMailClient/Properties/AssemblyInfo.cs create mode 100644 samples/SmsMailServerSystem/SmsMailClient/SmsMailClient.csproj create mode 100644 samples/SmsMailServerSystem/SmsMailServer/MyMailSmsService.cs create mode 100644 samples/SmsMailServerSystem/SmsMailServer/Program.cs create mode 100644 samples/SmsMailServerSystem/SmsMailServer/Properties/AssemblyInfo.cs create mode 100644 samples/SmsMailServerSystem/SmsMailServer/SmsMailServer.csproj create mode 100644 samples/SmsMailServerSystem/SmsMailServerSystem.sln create mode 100644 samples/StockApplication/Dependencies/MDSCommonLib.dll create mode 100644 samples/StockApplication/Dependencies/log4net.dll create mode 100644 samples/StockApplication/StockApplication.sln create mode 100644 samples/StockApplication/StockApplication/Program.cs create mode 100644 samples/StockApplication/StockApplication/Properties/AssemblyInfo.cs create mode 100644 samples/StockApplication/StockApplication/StockApplication.csproj create mode 100644 samples/StockApplication/StockCommonLib/Properties/AssemblyInfo.cs create mode 100644 samples/StockApplication/StockCommonLib/StockCommonLib.csproj create mode 100644 samples/StockApplication/StockCommonLib/StockQueryMessage.cs create mode 100644 samples/StockApplication/StockCommonLib/StockQueryResultMessage.cs create mode 100644 samples/StockApplication/StockServer/Program.cs create mode 100644 samples/StockApplication/StockServer/Properties/AssemblyInfo.cs create mode 100644 samples/StockApplication/StockServer/StockServer.csproj create mode 100644 samples/WebServiceSample/App_Code/MDSAppService.cs create mode 100644 samples/WebServiceSample/MDSAppService.asmx create mode 100644 samples/WebServiceSample/web.config create mode 100644 src/Dependencies/Databases/MSSQL/DB-FILES.zip create mode 100644 src/Dependencies/Databases/MSSQL/ReadMe.txt create mode 100644 src/Dependencies/Databases/MSSQL/Tables.txt create mode 100644 src/Dependencies/Databases/MySQL/ReadMe.txt create mode 100644 src/Dependencies/Databases/MySQL/Tables.txt create mode 100644 src/Dependencies/Databases/SQLite/MDS.s3db create mode 100644 src/Dependencies/Databases/SQLite/ReadMe.txt create mode 100644 src/Dependencies/Libraries/MySql.Data.dll create mode 100644 src/Dependencies/Libraries/System.Data.SQLite.dll create mode 100644 src/Dependencies/Libraries/log4net.dll create mode 100644 src/Dependencies/Libraries/log4net.xml create mode 100644 src/DotNetMQ.sln create mode 100644 src/DotNetMQ/App.config create mode 100644 src/DotNetMQ/DotNetMQ.csproj create mode 100644 src/DotNetMQ/DotNetMqService.Designer.cs create mode 100644 src/DotNetMQ/DotNetMqService.cs create mode 100644 src/DotNetMQ/Liscense.txt create mode 100644 src/DotNetMQ/MDSSettings.design.xml create mode 100644 src/DotNetMQ/MDSSettings.xml create mode 100644 src/DotNetMQ/Program.cs create mode 100644 src/DotNetMQ/ProjectInstaller.Designer.cs create mode 100644 src/DotNetMQ/ProjectInstaller.cs create mode 100644 src/DotNetMQ/ProjectInstaller.resx create mode 100644 src/DotNetMQ/Properties/AssemblyInfo.cs create mode 100644 src/DotNetMQ/SqliteDB/MDS.s3db create mode 100644 src/MDSCommonLib/Changes.txt create mode 100644 src/MDSCommonLib/Client/AppService/IMDSApplication.cs create mode 100644 src/MDSCommonLib/Client/AppService/IMDSServer.cs create mode 100644 src/MDSCommonLib/Client/AppService/MDSAppServiceBase.cs create mode 100644 src/MDSCommonLib/Client/AppService/MDSClientApplicationBase.cs create mode 100644 src/MDSCommonLib/Client/AppService/MDSMessageProcessor.cs create mode 100644 src/MDSCommonLib/Client/AppService/README.txt create mode 100644 src/MDSCommonLib/Client/IIncomingMessage.cs create mode 100644 src/MDSCommonLib/Client/IOutgoingMessage.cs create mode 100644 src/MDSCommonLib/Client/MDSClient.cs create mode 100644 src/MDSCommonLib/Client/MDSRemoteAppEndPoint.cs create mode 100644 src/MDSCommonLib/Client/MDSServices/MDSRemoteInvokeMessage.cs create mode 100644 src/MDSCommonLib/Client/MDSServices/MDSRemoteInvokeReturnMessage.cs create mode 100644 src/MDSCommonLib/Client/MDSServices/MDSService.cs create mode 100644 src/MDSCommonLib/Client/MDSServices/MDSServiceApplication.cs create mode 100644 src/MDSCommonLib/Client/MDSServices/MDSServiceAttribute.cs create mode 100644 src/MDSCommonLib/Client/MDSServices/MDSServiceConsumer.cs create mode 100644 src/MDSCommonLib/Client/MDSServices/MDSServiceMethodAttribute.cs create mode 100644 src/MDSCommonLib/Client/MDSServices/MDSServiceMethodParameterAttribute.cs create mode 100644 src/MDSCommonLib/Client/MDSServices/MDSServiceProxyBase.cs create mode 100644 src/MDSCommonLib/Client/MessageAckStates.cs create mode 100644 src/MDSCommonLib/Client/MessageReceivedEventArgs.cs create mode 100644 src/MDSCommonLib/Client/WebServices/IWebServiceIncomingMessage.cs create mode 100644 src/MDSCommonLib/Client/WebServices/IWebServiceOperationResultMessage.cs create mode 100644 src/MDSCommonLib/Client/WebServices/IWebServiceOutgoingMessage.cs create mode 100644 src/MDSCommonLib/Client/WebServices/IWebServiceResponseMessage.cs create mode 100644 src/MDSCommonLib/Client/WebServices/WebServiceHelper.cs create mode 100644 src/MDSCommonLib/Communication/Channels/CommunicationStateChangedEventArgs.cs create mode 100644 src/MDSCommonLib/Communication/Channels/ICommunicationChannel.cs create mode 100644 src/MDSCommonLib/Communication/Channels/MessageReceivedEventArgs.cs create mode 100644 src/MDSCommonLib/Communication/Channels/TCPChannel.cs create mode 100644 src/MDSCommonLib/Communication/CommunicationConsts.cs create mode 100644 src/MDSCommonLib/Communication/CommunicationStates.cs create mode 100644 src/MDSCommonLib/Communication/CommunicationWays.cs create mode 100644 src/MDSCommonLib/Communication/CommunicatorTypes.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/AddNewApplicationMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/ApplicationWebServiceInfo.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/ClientApplicationRefreshEventMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/ClientApplicationRemovedEventMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/ControlMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/ControlMessageFactory.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/GetApplicationListMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/GetApplicationListResponseMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/GetApplicationWebServicesMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/GetApplicationWebServicesResponseMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/GetServerGraphMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/GetServerGraphResponseMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/OperationResultMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/RemoveApplicationMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/RemoveApplicationResponseMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/ServerGraphInfo.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/UpdateApplicationWebServicesMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ControllerMessages/UpdateServerGraphMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/MDSChangeCommunicationWayMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/MDSControllerMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/MDSDataTransferMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/MDSDataTransferResponseMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/MDSMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/MDSMessageFactory.cs create mode 100644 src/MDSCommonLib/Communication/Messages/MDSOperationResultMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/MDSPingMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/MDSRegisterMessage.cs create mode 100644 src/MDSCommonLib/Communication/Messages/MessageTransmitRules.cs create mode 100644 src/MDSCommonLib/Communication/Messages/ServerTransmitReport.cs create mode 100644 src/MDSCommonLib/Communication/Protocols/IMDSWireProtocol.cs create mode 100644 src/MDSCommonLib/Communication/Protocols/MDSDefaultWireProtocol.cs create mode 100644 src/MDSCommonLib/Exceptions/MDSDatabaseException.cs create mode 100644 src/MDSCommonLib/Exceptions/MDSException.cs create mode 100644 src/MDSCommonLib/Exceptions/MDSNoCommunicatorException.cs create mode 100644 src/MDSCommonLib/Exceptions/MDSRemoteException.cs create mode 100644 src/MDSCommonLib/Exceptions/MDSSerializationException.cs create mode 100644 src/MDSCommonLib/Exceptions/MDSTimeoutException.cs create mode 100644 src/MDSCommonLib/GUI/MDSGuiHelper.cs create mode 100644 src/MDSCommonLib/GeneralHelper.cs create mode 100644 src/MDSCommonLib/Liscense.txt create mode 100644 src/MDSCommonLib/MDSCommonLib.csproj create mode 100644 src/MDSCommonLib/Management/ControlMessageReceivedEventArgs.cs create mode 100644 src/MDSCommonLib/Management/MDSController.cs create mode 100644 src/MDSCommonLib/Properties/AssemblyInfo.cs create mode 100644 src/MDSCommonLib/Serialization/CreateSerializableObjectHandler.cs create mode 100644 src/MDSCommonLib/Serialization/IMDSDeserializer.cs create mode 100644 src/MDSCommonLib/Serialization/IMDSSerializable.cs create mode 100644 src/MDSCommonLib/Serialization/IMDSSerializer.cs create mode 100644 src/MDSCommonLib/Serialization/MDSDefaultDeserializer.cs create mode 100644 src/MDSCommonLib/Serialization/MDSDefaultSerializer.cs create mode 100644 src/MDSCommonLib/Serialization/MDSSerializationHelper.cs create mode 100644 src/MDSCommonLib/Threading/IRunnable.cs create mode 100644 src/MDSCommonLib/Threading/ProcessQueueItemHandler.cs create mode 100644 src/MDSCommonLib/Threading/QueueProcessorThread.cs create mode 100644 src/MDSCommonLib/Utils/MDSObjectCollection.cs create mode 100644 src/MDSCommonLib/Utils/RegistrySettings.cs create mode 100644 src/MDSCore/Changes.txt create mode 100644 src/MDSCore/Communication/CommunicationLayer.cs create mode 100644 src/MDSCore/Communication/CommunicationManagerBase.cs create mode 100644 src/MDSCore/Communication/CommunicatorBase.cs create mode 100644 src/MDSCore/Communication/Events/CommunicatorConnectedEventArgs.cs create mode 100644 src/MDSCore/Communication/Events/CommunicatorDisconnectedEventArgs.cs create mode 100644 src/MDSCore/Communication/Events/CommunicatorStateChangedEventArgs.cs create mode 100644 src/MDSCore/Communication/Events/MessageReceivedFromCommunicatorEventArgs.cs create mode 100644 src/MDSCore/Communication/Events/MessageReceivedFromRemoteApplicationEventArgs.cs create mode 100644 src/MDSCore/Communication/ICommunicationManager.cs create mode 100644 src/MDSCore/Communication/ICommunicator.cs create mode 100644 src/MDSCore/Communication/MDSRemoteApplication.SubClasses.cs create mode 100644 src/MDSCore/Communication/MDSRemoteApplication.cs create mode 100644 src/MDSCore/Communication/TCPCommunication/TCPClientConnectedEventArgs.cs create mode 100644 src/MDSCore/Communication/TCPCommunication/TCPCommunicationManager.cs create mode 100644 src/MDSCore/Communication/TCPCommunication/TCPCommunicator.cs create mode 100644 src/MDSCore/Communication/TCPCommunication/TCPConnectionListener.cs create mode 100644 src/MDSCore/Communication/WebServiceCommunication/WebServiceCommunicationManager.cs create mode 100644 src/MDSCore/Communication/WebServiceCommunication/WebServiceCommunicator.cs create mode 100644 src/MDSCore/Liscense.txt create mode 100644 src/MDSCore/MDSCore.csproj create mode 100644 src/MDSCore/MDSServer.cs create mode 100644 src/MDSCore/Organization/MDSAdjacentServer.cs create mode 100644 src/MDSCore/Organization/MDSClientApplication.cs create mode 100644 src/MDSCore/Organization/MDSClientApplicationList.cs create mode 100644 src/MDSCore/Organization/MDSController.cs create mode 100644 src/MDSCore/Organization/MDSPersistentRemoteApplicationBase.cs create mode 100644 src/MDSCore/Organization/MDSServerGraph.cs create mode 100644 src/MDSCore/Organization/MDSServerNode.cs create mode 100644 src/MDSCore/Organization/OrganizationLayer.cs create mode 100644 src/MDSCore/Organization/Routing/DistributionStrategyBase.cs create mode 100644 src/MDSCore/Organization/Routing/IDistributionStrategy.cs create mode 100644 src/MDSCore/Organization/Routing/RandomDistribution.cs create mode 100644 src/MDSCore/Organization/Routing/RoutingDestination.cs create mode 100644 src/MDSCore/Organization/Routing/RoutingFilter.cs create mode 100644 src/MDSCore/Organization/Routing/RoutingRule.cs create mode 100644 src/MDSCore/Organization/Routing/RoutingTable.cs create mode 100644 src/MDSCore/Organization/Routing/SequentialDistribution.cs create mode 100644 src/MDSCore/Properties/AssemblyInfo.cs create mode 100644 src/MDSCore/Properties/Settings.Designer.cs create mode 100644 src/MDSCore/Properties/Settings.settings create mode 100644 src/MDSCore/Settings/ApplicationInfoItem.cs create mode 100644 src/MDSCore/Settings/MDSDesignSettings.cs create mode 100644 src/MDSCore/Settings/MDSSettings.cs create mode 100644 src/MDSCore/Settings/RouteInfoItem.cs create mode 100644 src/MDSCore/Settings/ServerDesignItem.cs create mode 100644 src/MDSCore/Settings/ServerInfoItem.cs create mode 100644 src/MDSCore/Storage/FaultToleratedStorageManagerWrapper.cs create mode 100644 src/MDSCore/Storage/IStorageManager.cs create mode 100644 src/MDSCore/Storage/MDSMessageRecord.cs create mode 100644 src/MDSCore/Storage/MemoryStorage/MemoryStorageManager.cs create mode 100644 src/MDSCore/Storage/MsSqlStorage/MsSqlStorageManager.cs create mode 100644 src/MDSCore/Storage/MySqlStorage/MySqlNetStorageManager.cs create mode 100644 src/MDSCore/Storage/MySqlStorage/MySqlODBCStorageManager.cs create mode 100644 src/MDSCore/Storage/SQLiteStorage/SQLiteStorageManager.cs create mode 100644 src/MDSCore/Storage/StorageManagerFactory.cs create mode 100644 src/MDSCore/Storage/TableRecord.cs create mode 100644 src/MDSCore/Web References/MDSAppWebServiceRef/MDSAppService.disco create mode 100644 src/MDSCore/Web References/MDSAppWebServiceRef/MDSAppService.wsdl create mode 100644 src/MDSCore/Web References/MDSAppWebServiceRef/Reference.cs create mode 100644 src/MDSCore/Web References/MDSAppWebServiceRef/Reference.map create mode 100644 src/MDSCore/app.config create mode 100644 src/MDSManager/App.config create mode 100644 src/MDSManager/Changes.txt create mode 100644 src/MDSManager/Liscense.txt create mode 100644 src/MDSManager/MDSManager.csproj create mode 100644 src/MDSManager/Management/GUI/ClientApplications/AddNewApplicationForm.Designer.cs create mode 100644 src/MDSManager/Management/GUI/ClientApplications/AddNewApplicationForm.cs create mode 100644 src/MDSManager/Management/GUI/ClientApplications/AddNewApplicationForm.resx create mode 100644 src/MDSManager/Management/GUI/ClientApplications/ApplicationListForm.Designer.cs create mode 100644 src/MDSManager/Management/GUI/ClientApplications/ApplicationListForm.cs create mode 100644 src/MDSManager/Management/GUI/ClientApplications/ApplicationListForm.resx create mode 100644 src/MDSManager/Management/GUI/ClientApplications/EditApplicationWebServicesForm.Designer.cs create mode 100644 src/MDSManager/Management/GUI/ClientApplications/EditApplicationWebServicesForm.cs create mode 100644 src/MDSManager/Management/GUI/ClientApplications/EditApplicationWebServicesForm.resx create mode 100644 src/MDSManager/Management/GUI/ConnectToServerForm.Designer.cs create mode 100644 src/MDSManager/Management/GUI/ConnectToServerForm.cs create mode 100644 src/MDSManager/Management/GUI/ConnectToServerForm.resx create mode 100644 src/MDSManager/Management/GUI/MDSServers/EditRouteForm.Designer.cs create mode 100644 src/MDSManager/Management/GUI/MDSServers/EditRouteForm.cs create mode 100644 src/MDSManager/Management/GUI/MDSServers/EditRouteForm.resx create mode 100644 src/MDSManager/Management/GUI/MDSServers/EditServerForm.Designer.cs create mode 100644 src/MDSManager/Management/GUI/MDSServers/EditServerForm.cs create mode 100644 src/MDSManager/Management/GUI/MDSServers/EditServerForm.resx create mode 100644 src/MDSManager/Management/GUI/MDSServers/RoutesForm.Designer.cs create mode 100644 src/MDSManager/Management/GUI/MDSServers/RoutesForm.cs create mode 100644 src/MDSManager/Management/GUI/MDSServers/RoutesForm.resx create mode 100644 src/MDSManager/Management/GUI/MDSServers/ServerGraphForm.Designer.cs create mode 100644 src/MDSManager/Management/GUI/MDSServers/ServerGraphForm.cs create mode 100644 src/MDSManager/Management/GUI/MDSServers/ServerGraphForm.resx create mode 100644 src/MDSManager/Management/GUI/MainForm.Designer.cs create mode 100644 src/MDSManager/Management/GUI/MainForm.cs create mode 100644 src/MDSManager/Management/GUI/MainForm.resx create mode 100644 src/MDSManager/Management/GUI/Program.cs create mode 100644 src/MDSManager/Management/GUI/Tools/DoubleBufferedPanel.cs create mode 100644 src/MDSManager/Properties/AssemblyInfo.cs create mode 100644 src/MDSManager/Properties/Resources.Designer.cs create mode 100644 src/MDSManager/Properties/Resources.resx create mode 100644 src/MDSManager/Properties/Settings.Designer.cs create mode 100644 src/MDSManager/Properties/Settings.settings create mode 100644 src/Tests/ServerTest/App.config create mode 100644 src/Tests/ServerTest/MDSSettings.design.xml create mode 100644 src/Tests/ServerTest/MDSSettings.xml create mode 100644 src/Tests/ServerTest/Program.cs create mode 100644 src/Tests/ServerTest/Properties/AssemblyInfo.cs create mode 100644 src/Tests/ServerTest/ServerTest.csproj create mode 100644 src/Tests/ServerTest/SqliteDB/MDS.s3db create mode 100644 src/Tools/MDSServiceProxyGenerator/MDSServiceProxyGenerator.csproj create mode 100644 src/Tools/MDSServiceProxyGenerator/Properties/AssemblyInfo.cs create mode 100644 src/Tools/MDSServiceProxyGenerator/Properties/Resources.Designer.cs create mode 100644 src/Tools/MDSServiceProxyGenerator/Properties/Resources.resx create mode 100644 src/Tools/MDSServiceProxyGenerator/Properties/Settings.Designer.cs create mode 100644 src/Tools/MDSServiceProxyGenerator/Properties/Settings.settings create mode 100644 src/Tools/MDSServiceProxyGenerator/Tools/ProxyGenerator/Program.cs create mode 100644 src/Tools/MDSServiceProxyGenerator/Tools/ProxyGenerator/ProxyGeneratorForm.Designer.cs create mode 100644 src/Tools/MDSServiceProxyGenerator/Tools/ProxyGenerator/ProxyGeneratorForm.cs create mode 100644 src/Tools/MDSServiceProxyGenerator/Tools/ProxyGenerator/ProxyGeneratorForm.resx diff --git a/binaries/DotNetMQ.exe b/binaries/DotNetMQ.exe new file mode 100644 index 0000000000000000000000000000000000000000..db366af26e7671026d6daa8e8372fb5a0fb598b8 GIT binary patch literal 6656 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 HDMa8uDPsFQ literal 0 HcmV?d00001 diff --git a/binaries/DotNetMQ.exe.config b/binaries/DotNetMQ.exe.config new file mode 100644 index 0000000..c5fd44f --- /dev/null +++ b/binaries/DotNetMQ.exe.config @@ -0,0 +1,22 @@ + + + +
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/binaries/INSTALL_x64.bat b/binaries/INSTALL_x64.bat new file mode 100644 index 0000000..83074e1 --- /dev/null +++ b/binaries/INSTALL_x64.bat @@ -0,0 +1,2 @@ +C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil DotNetMQ.exe +net start DotNetMQ diff --git a/binaries/INSTALL_x86.bat b/binaries/INSTALL_x86.bat new file mode 100644 index 0000000..35eca6f --- /dev/null +++ b/binaries/INSTALL_x86.bat @@ -0,0 +1,2 @@ +C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil DotNetMQ.exe +net start DotNetMQ diff --git a/binaries/MDSCommonLib.XML b/binaries/MDSCommonLib.XML new file mode 100644 index 0000000..1a3512a --- /dev/null +++ b/binaries/MDSCommonLib.XML @@ -0,0 +1,3601 @@ + + + + MDSCommonLib + + + + + This message is used to acknowledge/reject a message and to send a MDSDataTransferMessage in same message object. + It is used in web services. + + + + + Abstract class of all message classes. + All messages transmiting on MDS must be derrived from this class. + + + + + This interface is implemented by all classes that can be serialized/deserialized by MDS Serialization. + + + + + This method serializes the object. + + Used to serialize object + + + + This method deserializes the object. + + Used to deserialize object + + + + Constructor. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + MessageTypeId of message. + It is used to serialize/deserialize message. + + + + + Unique ID for this message. + Thiss will be a GUID if it is not set. + + + + + If this message is a reply for another message then RepliedMessageId contains first message's MessageId + else RepliedMessageId is null default. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + MessageTypeId of message. + It is used to serialize/deserialize message. + + + + + This field is used to acknowledge/reject to an incoming message. + + + + + This field is used to send a new message. + + + + + This message is sent from MDS manager to MDS server to update server graph of MDS. + + + + + This is the base class for all messages that are being transmited between MDS server and Management (Controller) application. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + MessageTypeIf of message. + It is used to serialize/deserialize message. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + Gets MessageTypeId for UpdateServerGraphMessage. + + + + + The ServerGraphInfo object that stores all server and graph informations. + + + + + This class is used by MDS Web Services to serialize/deserialize/create messages. + + + + + Deserializes an incoming message for Web Service from MDS server. + + Message as byte array + Deserialized message + + + + Serializes a message to send to MDS server from Web Service. + + Message to serialize + Serialized message + + + + Checks a response message whether it is a valid response message + + Message to check + + + + Implements IWebServiceIncomingMessage to be used by MDS web service. + + + + + Represents a Data Transfer message. + Used to transfer real message data between client applications. + + + + + Creates a new MDSDataTransferMessage object. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + MessageTypeId of message. + It is used to serialize/deserialize message. + + + + + Name of the first source server of the message. + + + + + Name of the first source application of the message. + If the message is created by an MDS (source of message is not an application) + then SourceApplicationName must be set to null. + + + + + The source communication channel's (Communicator's) Id. + When more than one communicator of an application is connected same MDS server + at the same time, this field may be used to indicates a spesific communicator. + This field is set by MDS automatically. + + + + + Name of the final destination server of the message. + + + + + Name of the final destination application of the message. + If the message is sent to an MDS (destination of message is not an application), + then DestinationApplicationName must be set to null. + + + + + Destination communication channel's (Communicator's) Id. + This field is used by MDS to deliver message to a spesific communicator. + When more than one communicator of an application is connected same MDS server + at the same time, this field may be used to indicate a spesific communicator as receiver of message. + If it is set to 0 (zero), message may be delivered to any connected communicator. + If there is no communicator with DestinationCommunicatorId, message can not be delivered, so, + this field can only be used to send non-persistent messages. + + + + + Passed servers of message until now, includes source and destination servers. + + + + + Essential application message data to transfer. + + + + + Transmit rule of message. + This is important because it determines persistence and transmit time of message. + Default: StoreAndForward. + + + + + Represents an incoming data message to a MDS Web Service from MDS server. + + + + + Gets the unique identifier for this message. + + + + + Name of the first source server of the message. + + + + + Name of the sender application of the message. + + + + + The source communication channel's (Communicator's) unique Id. + When more than one communicator of an application is connected same MDS server + at the same time, this field may be used to indicate a spesific communicator. + This field is set by MDS automatically. + + + + + Name of the final destination server of the message. + + + + + Name of the final destination application of the message. + + + + + Passed servers of message until now, includes source and destination servers. + + + + + Essential application message data that is received. + + + + + Transmit rule of message. + This is important because it determines persistence and transmit time of message. + Default: StoreAndForward. + + + + + Creates a new IncomingDataMessage object from a MDSDataTransferMessage object. + + MDSDataTransferMessage object to create IncomingDataMessage + + + + Creates IWebServiceResponseMessage using this incoming message, to return from web service to MDS server. + + Response message to this message + + + + Creates IWebServiceOutgoingMessage using this incoming message, to return from web service to MDS server. + + Response message to this message + + + + Implements IWebServiceOutgoingMessage to be used by MDS web service. + + + + + Represents an outgoing data message from a MDS web service to MDS server. + + + + + Essential application message data to be sent. + + + + + Implements IWebServiceResponseMessage to be used by MDS web service. + + + + + Represents a response message to a IWebServiceIncomingMessage from a MDS web service. + + + + + Process result of IWebServiceIncomingMessage. + + + + + Response message to IWebServiceIncomingMessage. + This may be null to do not send a response to incoming message. + + + + + Implements IWebServiceOperationResultMessage to be used by MDS web service. + + + + + This message is sent to clients as a response to an operation. + It is generally used to send an ACK/Reject message for a message + or a response to register message. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + MessageTypeId of message. + It is used to serialize/deserialize message. + + + + + Operation result. + True, if operation is successful. + + + + + A text that may be used as a description for result of operation. + + + + + Represents a result message for an incoming message to MDS Web Service. + + + + + Operation result. + True, if operation is successful. + + + + + A text that may be used as a description for result of operation. + + + + + Any MDSService class must be inherited from this class. + + + + + This method generates client proxy class to use this service. + It is also a MDSServiceMethod, so, clients can update it's proxy classes via calling this method remotely. + + Namespace of generating proxy class + Proxy class code to use this service + + + + This method can be used to check if service is available. + + A string message + Reply to message as formatted: "RE:message". + + + + Normalizes some known primitive types. + + Type name + Normalized type name + + + + Checks if a method is predefined method (MDSService methods in MDSService class). + + Method name to check + True: Yes, it is.. + + + + When a method of a MDSService application is invoked, this field stores address of source application in MDS. + + + + + When a method of a MDSService application is invoked, this field stores the original message that is sent by MDS server. + + + + + This message is sent as return message of a MDSRemoteInvokeMessage. + It is used to send return value of method invocation. + It is sent by MDSServiceApplication class and received by MDSServiceProxyBase class. + + + + + Return value of remote method invocation. + + + + + If any exception occured during method invocation, this field contains Exception object. + If no exception occured, this field is null. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + Gets MessageTypeId for GetApplicationWebServicesMessage. + + + + + Name of the application to get web service information. + + + + + Web service communicators of application. + + + + + Represents a thread-safe string-key based object collection. + + + + + All objects are stored in this collection. + + + + + Contructor. + + + + + Removes an object from collection. + + Key of object to remove + + + + Rewmoves all keys/values from collection. + + + + + Gets the synchronization object that is used by + + + + + Gets/sets an object with given key. + + Key + Object with given key, or null if key does not exists + + + + This interface is used to serialize primitives and objects. + Only needed Write methods designed for MDS. + + + + + Serializes a byte. + + byte to serialize + + + + Writes a byte array to serialization stream. + Byte array may be null or empty. + + byte array to write + + + + Serializes an integer. + + integer to serialize + + + + Serializes an unsigned integer. + + unsigned integer to serialize + + + + Serializes a long. + + long to serialize + + + + Serializes a boolean. + + boolean to serialize + + + + Serializes a DateTime object. + + DateTime to serialize + + + + Serializes a char according to UTF8. + Char may be null or empty. + + char to serialize + + + + Serializes a string according to UTF8. + String may be null or empty. + + string to serialize + + + + Serializes an object that implements IMDSSerializable interface. + Object may be null. + + object to serialize + + + + Serializes an array that all items implements IMDSSerializable interface. + Object array may be null or empty. + + objects to serialize + + + + This class is used to store transmit informations of a message throught a server. + + + + + Creates a new ServerTransmitReport. + + + + + Serializes this object. + + Serializer used to serialize objects + + + + Deserializes this object. + + Deserializer used to deserialize objects + + + + Name of the server. + + + + + Message arriving time to server. + + + + + Message leaving time from server. + + + + + A delegate to create events when a data transfer message received from MDS server. + + The object which raises event + Event arguments + + + + Stores message informations. + + + + + Received message from MDS server. + + + + + Any MDSService class must has this attribute. + + + + + Creates a new MDSServiceAttribute object. + + + + + A brief description of Service. + + + + + Service Version. This property can be used to indicate the code version (especially the version of service methods). + This value is sent to user application on an exception, so, user/client application can know that service version is changed. + Default value: NO_VERSION. + + + + + Represents an Timeout exception. + + + + + Represents a MDS Exception. + This is the base class for exceptions that are thrown by MDS system. + + + + + Contstructor. + + + + + Contstructor. + + + + + Contstructor. + + Exception message + + + + Contstructor. + + Exception message + Inner exception + + + + Contstructor. + + + + + Contstructor. + + Exception message + + + + Contstructor. + + Exception message + Inner exception + + + + This interface is used to Write/Read messages according to a Wire/Communication Protocol. + + + + + Serializes and writes a MDSMessage according to the protocol rules. + + Serializer to serialize message + Message to be serialized + + + + Reads and constructs a MDSMessage according to the protocol rules. + + Deserializer to read message + MDSMessage object that is read + + + + This message is used to get web services informations of an application from MDS server. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + Gets MessageTypeId for GetApplicationWebServicesMessage. + + + + + Name of the application to get web service information. + + + + + This message is sent to all connected MDS managers/controllers by MDS Server to inform when a client application is removed. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + Gets MessageTypeId for ClientApplicationRemovedEventMessage. + + + + + Name of the new application. + + + + + This class stores some consts used in MDS. + + + + + Default IP address to connect to MDS server. + + + + + Default listening port of MDS server. + + + + + Maximum message data length. + + + + + Respesents states of an incoming message. + + + + + Message is waiting for Ack. + + + + + Message is acknowledged. + + + + + Message is rejected. + + + + + This is the base class for proxy classes that is used to make remote invocation to a MDSService. + + + + + Reference to the underlying MDSServiceConsumer object to send/receive MDS messages. + + + + + Name of the service class. + + + + + Initializes MDSServiceProxyBase. + + Reference to a MDSServiceConsumer object to send/receive MDS messages + Address of remote application + Name of the service class + + + + Sends remote method invocation message to the remote application and gets result. + This simplifies remove method invocation like calling a method locally. + It throws Exception if any Exception occured on remote application's method. + + Method name to invoke + Method parameters + Return value of remote method + + + + Sends remote method invocation message to the remote application and gets result. + This simplifies remove method invocation like calling a method locally. + It throws Exception if any Exception occured on remote application's method. + + Method name to invoke + Method parameters + + + + MDS Address of remote application. + + + + + Transmit rule of underlying messages. + Using this peoperty, connection between applications can be changes from tight coupled to loose coupled and vice versa. + Just methods whose return type is void, can use other transmit rule than DirectlySend. So, that methods may be loose coupled by setting transmit rule. + Methods that has return value always use DirectlySend transmit rule, even if it is set by user to another rule. So, that methods must be tight coupled. + Default value: DirectlySend. + + + + + Timeout for service method calls as milliseconds. + Default: 300000 (5 minutes). + + + + + This class is used as base class for classes that are processing messages of an application concurrently. Thus, + an application can process more than one message in a time. + MDS creates an instance of this class for every incoming message to process it. + Maximum limit of messages that are being processed at the same time is configurable for individual applications. + + + + + Base class for MDSMessageProcessor/MDSClientApplicationBase. + + + + + Reference to the MDS Server. + + + + + Reference to this Application. + + + + + This method is called by MDS server to process the message, when a message is sent to this application. + + Message to process + + + + Used to get/set if messages are auto acknowledged. + If AutoAcknowledgeMessages is true, then messages are automatically acknowledged after MessageReceived event, + if they are not acknowledged/rejected before by application. + Default: true. + + + + + A threaded queue that process only one item in a time and keeps others in a queue. + + Type of the processing item + + + + This interface is used for a class that can startable and stoppable. + + + + + This method is used to start running. + + + + + This method is used to stop running. + + Indicates that caller thread waits stopping of module + + + + Joins module's thread until it stops. + + + + + Queue object to store items. + + + + + Running thread. + + + + + Thread control flag. + + + + + Construnctor. + + + + + Starts the processing of items. Thread runs, listens and process items on queue. + + + + + Stops the processing of items and stops the thread. + + True, if caller method must wait until running stops. + + + + Waits stopping of thread, thus waits end of execution of currently processing item. + + + + + Adds given item to queue to process. + + + + + + Thread's running method. Listens queue and processes items. + + + + + This method is used to raise ProcessItem event. + + The item that must be processed + Waiting item count on queue except this one + + + + This event is used to process get and process an item from queue. When an item inserted this + queue, ProcessItem event is raised. + + + + + This exception is thrown when there is not a communicator of a remote application. + + + + + Contstructor. + + + + + Contstructor. + + Exception message + + + + Contstructor. + + Exception message + Inner exception + + + + A delegate to create events when a control message received from MDS server. + + The object which raises event + Event arguments + + + + Stores message informations. + + + + + Creates a ControlMessageReceivedEventArgs object. + + Received message from MDS server + + + + Received message from MDS server. + + + + + Represents states of a communication object. + + + + + Connecting now.. + + + + + Connection is established, communication can be made. + + + + + Closing connection.. + + + + + Connection is closed, so communication can not be made. + + + + + A delegate to create events for changing state of a communication channel. + Old state is passed with event arguments, new state can be get from communication channel object (sender). + + The communication channel object which raises event + Event arguments + + + + Stores informations about communication channel's state. + + + + + The state of the client before change. + + + + + Represents a MDS Application from MDSMessageProcessor perspective. + This class also provides a static collection that can be used as a cache, + thus, an MDSMessageProcessor/MDSClientApplicationBase can store/get application-wide objects. + + + + + Name of the application. + + + + + Gets/Sets application-wide object by a string key. + + Key of the object to access it + Object, that is related with given key + + + + This message is sent from MDS manager to MDS server to get list of all client applications. + + + + + Gets MessageTypeId for GetApplicationListMessage. + + + + + A delegate to create events by Communication Channels, when a MDSMessage received from MDS server. + + The object which raises event + Event arguments + + + + Stores message informations. + + + + + Received message from MDS server. + + + + + This interface is used to deserialize primitives and objects. + Only needed Read methods designed for MDS. + + + + + Deserializes and returns a serialized byte. + + Deserialized byte + + + + Reads a byte array from deserializing stream. + Created byte array may be null or empty. + + Deserialized string + + + + Deserializes and returns a serialized integer. + + Deserialized integer + + + + Deserializes and returns a serialized unsigned integer. + + Deserialized unsigned integer + + + + Deserializes and returns a serialized long. + + Deserialized long + + + + Deserializes and returns a serialized boolean. + + Deserialized boolean + + + + Deserializes and returns a serialized DateTime object. + + Deserialized DateTime object + + + + Deserializes and returns a serialized char using UTF8. + + Deserialized char + + + + Deserializes and returns a serialized string using UTF8. + Created string may be null or empty. + + Deserialized string + + + + Deserializes and returns an object that implements IMDSSerializable. + Object creation method is passed as parameter and used to create empty object. + Created object may be null. + + A class that implements IMDSSerializable + A function that creates an empty T object + Deserialized object + + + + Deserializes and returns an array of objects that implements IMDSSerializable. + Object creation method is passed as parameter and used to create empty object. + Created array may be null or empty. + + A class that implements IMDSSerializable + A function that creates an empty T object + Deserialized object + + + + This message is used to get an operation result message. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + Gets MessageTypeId for OperationResultMessage. + + + + + True, if operation is successfully executed. + + + + + If Success = True then "Success.", else error message. + + + + + Represents a web service communicator information for an application. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + Url of the web service. + + + + + This message is sent by MDS Manager to MDS Server to add a new Application to MDS. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + Gets MessageTypeId for AddNewApplicationMessage. + + + + + Name of the new application. + + + + + Plug-In applications may derive this class to perform some operations on starting/stopping of MDS. + + + + + This method is called on startup of MDS. + + + + + This method is called on stopping of MDS. + + + + + This class can be used to set/get settings to/from a registry key with caching capability. + + + + + Reference to logger. + + + + + Cached settings. + + + + + Creates a new RegistrySettings instance. + + + + + Gets an integer value from registry. It gets from cache if it is cached before and Caching enables. + + Value Name on the registry key + Default value, if no value exists on registry + Value for registryName + + + + Sets an integer value to registry. + + Value Name on the registry key + New value to set + + + + Gets an string value from registry. It gets from cache if it is cached before and Caching enables. + + Value Name on the registry key + Default value, if no value exists on registry + Value for registryName + + + + Sets a string value to registry. + + Value Name on the registry key + New value to set + + + + Sets a value to registry. + + Value Name on the registry key + New value to set + + + + Creates a registry key. + + Registry key to create + Created registry key + + + + Tries open a registry key and return it as writable/readable. + If key doesn't exists then creates and returns it. + + Registry key + Registry key + + + + Gets a value from registry. + + Name in registry key + Default value that is returned if name can not be found in registry key + Value of name entry in registry key + + + + Gets a value from registry. + + Name in registry key + Default value that is returned if name can not be found in registry key + If this is true and registryKey is not exists, then it is created + Value of name entry in registry key + + + + Sets a value on registry. + + Name in registry key + value to set + + + + Registry key to store settings of application. + + + + + Indicates that if RegistrySettings uses caching. + + + + + A delegate to used by QueueProcessorThread to raise processing event + + Type of the item to process + The object which raises event + Event arguments + + + + Stores processing item and some informations about queue. + + + + + + Constructor. + + The item to process + The item count waiting for processing on queue (after this one) + + + + The item to process. + + + + + The item count waiting for processing on queue (after this one). + + + + + Register Message. A MDSRegisterMessage object is used to register a MDS server as an Application or MDS server. + + + + + Creates a new MDSRegisterMessage object. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + MessageTypeId of message. + It is used to serialize/deserialize message. + + + + + Communicator type (MDS server, Application or Controller). + + + + + Communication way for this communicator (SEND, RECEIVE or BOTH) + + + + + Name of the communicator. + If CommunicatorType is a MDS, than this is server's name, + if CommunicatorType is an Application, than this is application's name, + if CommunicatorType is a Controller, than this is an arbitrary string represents controller. + + + + + Password to connect to MDS associated with Name and CommunicatorType. + + + + + This message is sent by MDS Manager to MDS Server to remove a Application from MDS. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + Gets MessageTypeId for RemoveApplicationMessage. + + + + + Name of the removing application. + + + + + This message is sent from MDS server to MDS manager as a response to GetApplicationListMessage message. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + Gets MessageTypeId for GetApplicationListResponseMessage. + + + + + List of client applications. + + + + + This class is used to transfer simple information about a MDS Client Application. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + Name of the client application + + + + + Currently connected (online) communicator count. + + + + + All Communication channels implements this interface. + It is used by MDSClient and MDSController classes to communicate with MDS server. + + + + + Connects to MDS server. + + + + + Disconnects from MDS server. + + + + + Sends a MDSMessage to the MDS server + + Message to be sent + + + + This event is raised when the state of the communication channel changes. + + + + + This event is raised when a MDSMessage object is received from MDS server. + + + + + Unique identifier for this communicator in connected MDS server. + This field is not set by communication channel, + it is set by another classes (MDSClient) that are using + communication channel. + + + + + Gets the state of communication channel. + + + + + Communication way for this channel. + This field is not set by communication channel, + it is set by another classes (MDSClient) that are using + communication channel. + + + + + This is the main class that is used by an client application to communicate with MDS server. + + + + + Reference to logger. + + + + + Communication channel that is used to communicate with MDS server. + + + + + This messages are waiting for a response. + Key: MessageID of waiting request message. + Value: A WaitingMessage instance. + + + + + This queue is used to queue and process sequentially messages that are received from MDS server. + + + + + This timer is used to reconnect to MDS server if it is disconnected. + + + + + Used to Start/Stop MDSClient, and indicates the state. + + + + + Creates a new MDSClient object using default IP address (127.0.0.1) and default TCP port. + + Name of the client application that connects to MDS server + + + + Creates a new MDSClient object using default TCP port. + + Name of the client application that connects to MDS server + Ip address of the MDS server + + + + Creates a new MDSClient object. + + Name of the client application that connects to MDS server + Ip address of the MDS server + Listening TCP Port of MDS server + + + + Connects to MDS server. + If ReConnectServerOnError is true, than does not throw any Exception. + Else, throws Exception if can not connect to the Server. + + + + + Disconnects from MDS server. + + + + + Creates an empty message to send. + + Created message + + + + Disposes this object. + + + + + Connects and registers to MDS server. + + + + + Changes communication way of this application. + So, a receiver may want to do not receive messages anymore by changing it's communication way to 'Send'. + + New communication way + + + + Sends a mssage to MDS server and waits a response for timeoutMilliseconds milliseconds. + + Message to send + What type of response is being waited + Maximum waiting time for response + Received message from server + + + + Sends a MDSMessage object to MDS server. + + + + + + This method handles StateChanged event of communication channel. + + The communication channel + Event arguments + + + + This event handles incoming messages from communication channel. + + Communication channel that received message + Event arguments + + + + This event handles processing messages when a message is added to queue (_incomingMessageQueue). + + Reference to message queue + Event arguments + + + + This method is called by _reconnectTimer_Tick to reconnect MDS server if disconnected. + + This argument is not used + + + + Sends a Ping message to MDS server if 60 seconds passed after last communication. + + + + + Closes communication channel, thus disconnects from MDS server if it is connected. + + + + + Checks if client application is connected to MDS server. + + True, if connected. + + + + This event is raised when a data transfer message received from MDS server. + + + + + Name of the client application. + + + + + Gets/Sets Communication Way between MDS server. + A receiver may want to do not receive messages anymore, by changing it's communication way to 'Send'. + Setting this property sends a MDSChangeCommunicationWayMessage message to MDS server. + Default value: CommunicationWays.SendAndReceive + + + + + Communicator Id of this instance of application in MDS. + This field is valid only if client application is connected and registered to the MDS server. + + + + + Gets/sets Reconnecting option on any error case. + If this is true, client application attempts to reconnect to MDS server until it is connected and + doesn't throw exceptions while connecting. + Default value: True. + + + + + Used to get/set if messages are auto acknowledged. + If AutoAcknowledgeMessages is true, then messages are automatically acknowledged after MessageReceived event, + if they are not acknowledged/rejected before by application. + Default: false. + + + + + Timeout value for outgoing data messages. + Default value: 300000 (5 minutes). + + + + + Time of last message received from MDS server. + + + + + Time of last message sent to MDS server. + + + + + MessageId of last received and acknowledged message's Id. + This field is used to do not receive/accept same message again. + If a message is send by MDS server with same MessageId, + message is discarded and ACK message is sent to server. + + + + + Implements IIncomingMessage to send Ack/Reject via MDSClient. + + + + + Represents an incoming data message for a MDS client. + + + + + Used to Acknowledge this message. + Confirms that the message is received safely by client application. + A message must be acknowledged by client application to remove message from message queue. + MDS server doesn't send next message to the client application until the message is acknowledged. + Also, MDS server sends same message again if the message is not acknowledged in a certain time. + + + + + Used to reject (to not acknowledge) this message. + Indicates that the message can not received correctly or can not handled the message, and the message + must be sent to client application later again. + If MDS server gets reject for a message, + it doesn't send any message to the client application instance for a while. + If message is persistent, than it is sent to another instance of application or to same application instance again. + If message is not persistent, it is deleted. + + + + + Used to reject (to not acknowledge) this message. + Indicates that the message can not received correctly or can not handled the message, and the message + must be sent to client application later again. + If MDS server gets reject for a message, + it doesn't send any message to the client application instance for a while. + If message is persistent, than it is sent to another instance of application or to same application instance again. + If message is not persistent, it is deleted. + + Reject reason + + + + Creates a empty response message for this message. + + Response message object + + + + Acknowledgment state of the message. + + + + + Gets the unique identifier for this message. + + + + + If this message is a reply for another message then RepliedMessageId contains first message's MessageId + else RepliedMessageId is null as default. + + + + + Name of the first source server of the message. + + + + + Name of the sender application of the message. + + + + + The source communication channel's (Communicator's) unique Id. + When more than one communicator of an application is connected same MDS server + at the same time, this field may be used to indicate a spesific communicator. + This field is set by MDS automatically. + + + + + Name of the final destination server of the message. + + + + + Name of the final destination application of the message. + + + + + Destination communication channel's (Communicator's) Id. + This field is used by MDS to deliver message to a spesific communicator. + When more than one communicator of an application is connected same MDS server + at the same time, this field may be used to indicate a spesific communicator as receiver of message. + If it is set to 0 (zero), message may be delivered to any connected communicator. + + + + + Passed servers of message until now, includes source and destination servers. + + + + + Essential application message data that is received. + + + + + Transmit rule of message. + This is important because it determines persistence and transmit time of message. + Default: StoreAndForward. + + + + + Reference to the MDSClient object. + + + + + Creates a new IncomingDataMessage object from a MDSDataTransferMessage object. + + Reference to the MDSClient object + MDSDataTransferMessage object to create IncomingDataMessage + + + + Used to Acknowledge this message. + Confirms that the message is received safely by client application. + A message must be acknowledged by client application to remove message from message queue. + MDS server doesn't send next message to the client application until the message is acknowledged. + Also, MDS server sends same message again if the message is not acknowledged in a certain time. + + + + + Used to reject (to not acknowledge) this message. + Indicates that the message can not received correctly or can not handled the message, and the message + must be sent to client application later again. + If MDS server gets reject for a message, + it doesn't send any message to the client application instance for a while. + If message is persistent, than it is sent to another instance of application or to same application instance again. + If message is not persistent, it is deleted. + + + + + Used to reject (to not acknowledge) this message. + Indicates that the message can not received correctly or can not handled the message, and the message + must be sent to client application later again. + If MDS server gets reject for a message, + it doesn't send any message to the client application instance for a while. + If message is persistent, than it is sent to another instance of application or to same application instance again. + If message is not persistent, it is deleted. + + Reject reason + + + + Creates a empty response message for this message. + + Response message object + + + + Acknowledgment state of the message. + + + + + Implements IOutgoingMessage to send message via MDSClient. + + + + + Represents an outgoing data message for a MDS client. + + + + + Sends the message to the MDS server. + If this method does not throw an exception, + message is correctly delivered to MDS server (persistent message) + or to the destination application (non persistent message). + + + + + Sends the message to the MDS server. + If this method does not throw an exception, + message is correctly delivered to MDS server (persistent message) + or to the destination application (non persistent message). + + Timeout to send message as milliseconds + + + + Sends the message and waits for an incoming message for that message. + MDS can be used for Request/Response type messaging with this method. + Default timeout value: 5 minutes. + + Response message + + + + Sends the message and waits for an incoming message for that message. + MDS can be used for Request/Response type messaging with this method. + + Timeout to get response message + Response message + + + + Unique ID for this message. + This will be a GUID if it is not set. + It is recommended to leave this field as default. + + + + + If this message is a reply for another message then RepliedMessageId contains first message's MessageId + else RepliedMessageId is null default. + + + + + Name of the first source server of the message. + If this field is leaved null/empty, it is set by MDS server automatically. + + + + + Name of the first sender application of the message. + If this field is leaved null/empty, it is set by MDS server as sender application's name automatically. + + + + + Name of the final destination server of the message. + If this field is leaved null/empty, it is set by MDS server as + sender application's server's name automatically. + It may be leaved null to send a message to an application on the same server. + + + + + Name of the final destination application of the message. + If this field is leaved null/empty, it is set by MDS server as sender application's name automatically. + It may be leaved null to send a message to same application. + + + + + Destination communication channel's (Communicator's) Id. + This field is used by MDS to deliver message to a spesific communicator. + When more than one communicator of an application is connected same MDS server + at the same time, this field may be used to indicates a spesific communicator as receiver of message. + If it is set to 0 (zero), message may be delivered to any connected communicator. + If there is no communicator with DestinationCommunicatorId, message can not be delivered, so, + this field can only be used to send non-persistent messages (Syncronous messages). + + + + + Essential application message data to be sent. + + + + + Transmit rule of message. + This is important because it determines persistence and transmit time of message. + Default: StoreAndForward. + + + + + Reference to the MDSClient object. + + + + + Creates a new OutgoingDataMessage object. + + Reference to the MDSClient object + + + + Sends the message to the MDS server. + If this method does not throw an exception, + message is correctly delivered to MDS server (persistent message) + or to the destination application (non persistent message). + + + + + Sends the message to the MDS server. + If this method does not throw an exception, + message is correctly delivered to MDS server (persistent message) + or to the destination application (non persistent message). + + Timeout to send message as milliseconds + + + + Sends the message and waits for an incoming message for that message. + MDS can be used for Request/Response type messaging with this method. + Default timeout value: 5 minutes. + + Response message + + + + Sends the message and waits for an incoming message for that message. + MDS can be used for Request/Response type messaging with this method. + + Timeout to get response message as milliseconds + Response message + + + + This class is used as item in _waitingMessages collection. + Key: Message ID to wait response. + Value: ManualResetEvent to wait thread until response received. + + + + + Creates a new WaitingMessage. + + + + + What type of message is being waited. + For MDSOperationResultMessage, it is MDSMessageFactory.MessageTypeIdMDSOperationResultMessage. + For MDSDataTransferMessage, it is MDSMessageFactory.MessageTypeIdMDSDataTransferMessage. + + + + + Response message received for sent message + This message may be MDSOperationResultMessage + or MDSDataTransferMessage according to WaitingResponseType. + + + + + ManualResetEvent to wait thread until response received. + + + + + State of the message. + + + + + This message is response to MDS Manager for GetApplicationWebServicesMessage. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + Gets MessageTypeId for GetApplicationWebServicesMessage. + + + + + True, if operation is success and no error occured. + + + + + Detailed information about operation result. Error text, if any error occured. + + + + + Web service communicators of application. + + + + + Communication ways. + A client application may just send messages from communication channel or it can send and receive messages. + + + + + Application can only send messages to MDS server. + + + + + Application can send and receive messages to/from MDS server. + + + + + This class is the default deserializer of MDS. + The deserializing object must be serialized by MDSDefaultSerializer. + Only needed deserializers designed for MDS. + + + + + The stream that is used to read serialized items for deserializing. + + + + + Creates a new MDSDefaultDeserializer object. + + The stream that is used to read serialized items for deserializing + + + + Deserializes and returns a serialized byte. + + Deserialized byte + + + + Reads a byte array from deserializing stream. + Created byte array may be null or empty. + + Deserialized string + + + + Deserializes and returns a serialized integer. + + Deserialized integer + + + + Deserializes and returns a serialized unsigned integer. + + Deserialized unsigned integer + + + + Deserializes and returns a serialized long. + + Deserialized long + + + + Deserializes and returns a serialized boolean. + + Deserialized boolean + + + + Deserializes and returns a serialized DateTime object. + + Deserialized DateTime object + + + + Deserializes and returns a serialized char using UTF8. + Note: A better way may be found. + + Deserialized char + + + + Deserializes and returns a serialized string using UTF8. + Created string may be null or empty. + + Deserialized string + + + + Deserializes and returns an object that implements IMDSSerializable. + Object creation method is passed as parameter and used to create empty object. + Created object may be null. + + A class that implements IMDSSerializable + A function that creates an empty T object + Deserialized object + + + + Deserializes and returns an array of objects that implements IMDSSerializable. + Object creation method is passed as parameter and used to create empty object. + Created array may be null or empty. + + A class that implements IMDSSerializable + A function that creates an empty T object + Deserialized object + + + + Reads a byte array with spesified length. + + Length of the byte array to read + Read byte array + + + + Throws an exception for + + + + + This class is used to connect to and communicate with MDS server from MDS Manager (Controller). + + + + + Reference to logger. + + + + + Communication channel that is used to communicate with MDS server. + + + + + This queue is used to queue MDSMessage objects received from MDS server and process them sequentially. + + + + + This collection is used to send message and get response in SendMessageAndGetResponse method. + SendMessageAndGetResponse method must wait until response received. It waits using this collection. + Key: Message ID to wait response. + Value: ManualResetEvent to wait thread until response received. + + + + + This timer is used to reconnect to MDS server if it is disconnected. + + + + + Used to Start/Stop MDSController, and indicates the state. + + + + + Creates a new MDSClient object. + + Ip address of the MDS server + Listening TCP Port of MDS server + + + + Connects to MDS server. + + + + + Disconnects from MDS server. + + + + + Disposes MDSController object. + It also disconnects from server if it is connected. + + + + + Sends a ControlMessage to MDS server. + + Message to send + + + + Sends a ControlMessage to MDS server and gets it's response message. + + Message to send + Response message from server + + + + Connects and registers to MDS server. + + + + + Sends a MDSMessage object to MDS server. + + + + + + This event handles incoming messages from communication channel. + + Communication channel that received message + Event arguments + + + + This event handles processing messages when a message is added to queue (_incomingMessageQueue). + + Reference to message queue + Event arguments + + + + This method is called by _reconnectTimer_Tick to reconnect MDS server if disconnected. + + This argument is not used + + + + Sends a Ping message to MDS server if 60 seconds passed after last communication. + + + + + Closes communication channel, thus disconnects from MDS server if it is connected. + + + + + Checks if client application is connected to MDS server. + + True, if connected. + + + + Deserializes a ControlMessage from a MDSControllerMessage. + + MDSControllerMessage that includes ControlMessage + Deserialized ControlMessage object. + + + + This event is raised when a data transfer message received from MDS server. + + + + + Gets sets Reconnecting option on any error case. + If this is true, controller application attempts to reconnec to MDS server until it is connected, + MDSController doesn't throw exceptions while connecting. + Default value: True. + + + + + Time of last message received from MDS server. + + + + + Time of last message sent to MDS server. + + + + + + Creates a new WaitingMessage. + + + + + ManualResetEvent to wait thread until response received. + + + + + Response message received for sent message + + + + + This message is sent from MDS server to MDS manager as a response to GetServerGraphMessage message. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + Gets MessageTypeId for GetServerGraphMessage. + + + + + The ServerGraphInfo object that stores all server and graph informations. + + + + + This class is used to simplify serialization/deserialization with MDS serialization classes. + + + + + Serializes an object that implements IMDSSerializable and returns serialized byte array. + + Object to serialize + Serialized object as byte array + + + + Serializes an object that implements IMDSSerializable to a Stream. + + Stream to write serialized object + Object to serialize + + + + Deserializes an object from a byte array. + + Type of object. This type must implement IMDSSerializable interface + A function that creates an instance of that object (T) + Byte array + Deserialized object + + + + Deserializes an object via reading from a stream. + + Type of object. This type must implement IMDSSerializable interface + A function that creates an instance of that object (T) + Deserialized object + Deserialized object + + + + This class is used to perform common tasks that is used in both client and server side. + + + + + This code is used to connect to a TCP socket with timeout option. + + IP endpoint of remote server + Timeout to wait until connect + Socket object connected to server + + + + Gets the current directory of executing assembly. + + Directory path + + + + Represents a MDS Remote Exception. + This exception is used to send an exception from an application to another application. + + + + + Contstructor. + + + + + Contstructor. + + + + + Contstructor. + + Exception message + + + + Contstructor. + + Exception message + Inner exception + + + + This message is used to change Communication Way of a communicator while it is connected to the MDS server. + Thus, for example, a receiver may change it's communication way to only Send and it does not get messages + anymore but can send messages. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + MessageTypeId of message. + It is used to serialize/deserialize message. + + + + + New communication way. + + + + + This message is sent by MDS Server to MDS Manager as a response to a RemoveApplicationMessage. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + Gets MessageTypeId for RemoveApplicationResponseMessage. + + + + + Name of the new application. + + + + + True, if application is successfully removed. + + + + + If Removed = True then "Success", else error message. + + + + + This message is sent from MDS manager to MDS server to get graph of MDS servers. + + + + + Gets MessageTypeId for GetServerGraphMessage. + + + + + This class is used to connect to MDS server via TCP sockets. + + + + + Reference to logger. + + + + + IP address of MDS server + + + + + TCP port of MDS server + + + + + The TCP socket to the remote application. + + + + + The main stream wraps socket to send/receive data. + + + + + This object is used to send/receive messages as byte array. + + + + + The thread that listens incoming data. + + + + + Used to send only one message in a time by locking. + + + + + Creates a new TCPChannel object. + + IP address of MDS server + TCP port of MDS server + + + + Connects to MDS server. + + + + + Disconnects from MDS server. + + + + + Sends a MDSMessage to the MDS server + + Message to send + + + + Entrance point of the thread. + This method run by thread to listen incoming data from communicator. + + + + + Sends MDSMessage object to the socket. + + Message to be sent + + + + Changes the state of the client and raises StateChanged event. + + New state + + + + When a MDSMessage received from MDS server, this method is called to raise MessageReceived event. + + Incoming message from server + + + + This event is raised when the state of the client changes. + + + + + This event is raised when a MDSMessage received. + + + + + Unique identifier for this communicator in connected MDS server. + This field is not set by communication channel, + it is set by another classes (MDSClient) that are using + communication channel. + + + + + Gets the connection state of communicator. + + + + + Communication way for this channel. + This field is not set by communication channel, + it is set by another classes (MDSClient) that are using + communication channel. + + + + + Creates a new MDSServiceApplication object with default values to connect to MDS server. + + Name of the application + + + + Creates a new MDSServiceApplication object with default port to connect to MDS server. + + Name of the application + IP address of MDS server + + + + Creates a new MDSServiceApplication object. + + Name of the application + IP address of MDS server + TCP port of MDS server + + + + This method connects to MDS server using underlying MDSClient object. + + + + + This method disconnects from MDS server using underlying MDSClient object. + + + + + Disposes this object, disposes/closes underlying MDSClient object. + + + + + Initializes this object. + + + + + Underlying MDSClient object to send/receive MDS messages. + + + + + This class is the default serializer of MDS. + The serialized object must be deserialized by MDSDefaultDeserializer. + Only needed serializers designed for MDS. + + + + + The stream that is used to write serialized items. + + + + + Creates a new MDSDefaultSerializer object. + + The stream that is used to write serialized items + + + + Serializes a byte. + + byte to serialize + + + + Writes a byte array to serialization stream. + Byte array may be null or empty. + + byte array to write + + + + Serializes a integer. + + integer to serialize + + + + Serializes an unsigned integer. + + unsigned integer to serialize + + + + Serializes a long. + + long to serialize + + + + Serializes a boolean. + + boolean to serialize + + + + Serializes a DateTime object. + + DateTime to serialize + + + + Serializes a char according to UTF8. + Char may be null or empty. + Note: A better way may be found. + + char to serialize + + + + Serializes a string according to UTF8. + String may be null or empty. + + string to serialize + + + + Serializes an object that implements IMDSSerializable interface. + Object may be null. + + object to serialize + + + + Serializes an array that all items implements IMDSSerializable interface. + Object array may be null or empty. + + objects to serialize + + + + This class is used to send Ping messages to check if remote application is connected and working. + MDS Servers send Ping messages to other MDS servers and gets response. + Client applications send Ping messages to MDS servers and gets response. + If there is no Ping message from a remote application for a while, connection is closed and + reconnected if needed. + + + + + MessageTypeId of message. + It is used to serialize/deserialize message. + + + + + This class is created to make easy common GUI tasks. + + + + + Show a message box that show an error. + + Message to show + + + + Show a message box that show an error. + + Message to show + Caption of message box + + + + Show a message box that show an warning. + + Message to show + + + + Show a message box that show an warning. + + Message to show + Caption of message box + + + + Shows a messagebox to ask a question to user. + + Message to show + Caption of message box + User's choice + + + + Shows a messagebox to ask a question to user. + + Message to show + Caption of message box + Default selected button + User's choice + + + + Shows a messagebox that shows an information. + + Message to show + Caption of message box + + + + This interface is used by MDSMessageProcessor/MDSClientApplicationBase to perform operations on MDSServer, + for example; creating messages to send. + + + + + Creates an empty message to send. + + Created message + + + + Message transmit rules. + All messages are persistent except 'DirectlySend'. + If a server doesn't stores message and transmiting it directly, + it transmits this message before than a stored (persistent) message. + + + + + Not persistent message. + Message may be lost in an error. + Message is not stored on any server. + Message is not guarantied to be delivered. + This rule may be used if both of source and destination applications must be run at the same time. + If no exception received while sending message, + that means message delivered to and acknowledged by destination application correctly. + This rule blocks sender application until destination application sends ACK for message. + + + + + Persistent Message. + Message can not be lost and it is being stored in all passing servers. + Message is guarantied to be delivered and it will be delivered as ordered (FIFO). + This is the slowest but most reliable rule. + This rule blocks sender application until source (first) MDS server stores message. + + + + + Non-persistent message. + Message will be lost if MDS server which has message shuts down. + Message is not guarantied to be delivered. + + + + + This class represents a message that is being transmitted between MDS server and a Controller (MDS Manager). + + + + + MessageTypeId for MDSControllerMessage. + + + + + MessageTypeId of ControllerMessage. + This field is used to deserialize MessageData. + All types defined in ControlMessageFactory class. + + + + + Essential message data. + This is a serialized object of a class in MDS.Communication.Messages.ControllerMessages namespace. + + + + + Stores all MDS server's and server graph's informations. + + + + + Serializes this object. + + Serializer used to serialize objects + + + + Deserializes this object. + + Deserializer used to deserialize objects + + + + Reference to this server on graph (This server is also in Servers list). + + + + + All servers on graph. + + + + + Serializes this object. + + Serializer used to serialize objects + + + + Deserializes this object. + + Deserializer used to deserialize objects + + + + Name of this server. + + + + + IP address of this server. + + + + + TCP Port number that is listened by this server. + + + + + List of adjacent servers of this server that are splitted by , or ; + + + + + Location of server (Left (X) and Top (Y) properties in design area, seperated by comma (,)). + + + + + This message is sent to all connected MDS managers/controllers by MDS Server to inform about latest informations/state of a client application. + + + + + Serializes this message. + + Serializer used to serialize objects + + + + Deserializes this message. + + Deserializer used to deserialize objects + + + + Gets MessageTypeId for GetApplicationListResponseMessage. + + + + + Name of the client application + + + + + Currently connected (online) communicator count. + + + + + This delegate is used with IMDSDeserializer to deserialize an object. + It is used by IMDSDeserializer to create an instance of deserializing object. + So, user of MDS serialization must supply a method that creates an empty T object. + This is needed for performance reasons. Because it is slower to create object by reflection. + + Type of the object to be deserialized + An object from type T + + + + Represents types of communicatiors. + + + + + An undefined remote application. + + + + + A MDS server. + + + + + A client application. + + + + + A controller application. + + + + + This attribute is used to add information to a parameter or return value of a MDSServiceMethod. + + + + + Creates a new MDSServiceMethodParameterAttribute. + + + + + + A brief description of parameter. + + + + + This class is the Default Protocol that is used by MDS to communicate with other applications. + A message frame is sent and received by MDSDefaultWireProtocol: + + - Protocol type: 4 bytes unsigned integer. + Must be MDSDefaultProtocolType for MDSDefaultWireProtocol. + - Message type: 4 bytes integer. + Must be defined in MDSMessageFactory class. + - Serialized bytes of a MDSMessage object. + + + + + Specific number that a message must start with. + + + + + Serializes and writes a MDSMessage according to the protocol rules. + + Serializer to serialize message + Message to be serialized + + + + Reads and constructs a MDSMessage according to the protocol rules. + + Deserializer to read message + MDSMessage object that is read + + + + Represents a Database exception. + + + + + Contstructor. + + + + + Contstructor. + + Exception message + + + + Contstructor. + + Exception message + Inner exception + + + + Executed query text + + + + + This class ensures to use a class that is derived from MDSService class, as a service on MDS. + + + + + Underlying MDSClient object to send/receive MDS messages. + + + + + Reference to logger. + + + + + The service object that handles all method invokes. + + + + + Creates a new MDSServiceApplication object with default values to connect to MDS server. + + Name of the application + + + + Creates a new MDSServiceApplication object with default port to connect to MDS server. + + Name of the application + IP address of MDS server + + + + Creates a new MDSServiceApplication object. + + Name of the application + IP address of MDS server + TCP port of MDS server + + + + This method connects to MDS server using underlying MDSClient object. + + + + + This method disconnects from MDS server using underlying MDSClient object. + + + + + Adds a new MDSService for this service application. + + Service to add + + + + Removes a MDSService from this service application. + + Service to add + + + + Disposes this object, disposes/closes underlying MDSClient object. + + + + + Initializes this object. + + + + + This method handles all incoming messages from MDS server. + + Creator object of method (MDSClient object) + Message event arguments + + + + Sends an Exception to the remote application that invoked a service method + + Incoming invoke message from remote application + Exception to send + + + + Sends return value to the remote application that invoked a service method. + + Incoming invoke message from remote application + Return value to send + + + + Acknowledges a message. + + Message to acknowledge + + + + Represents a MDSService object. + + + + + Name of the Service object's class. + + + + + This collection stores a list of all methods of T, if that can be invoked from remote applications or not. + Key: Method name + Value: True, if it can be invoked from remote application. + + + + + Creates a new ServiceObject. + + The service object that is used to invoke methods on + MDSService attribute of service object's class + + + + Invokes a method of Service object. + + Name of the method to invoke + Parameters of method + Return value of method + + + + Rejects a message. + + Message to reject + Reject reason + + + + The service object that is used to invoke methods on. + + + + + MDSService attribute of Service object's class. + + + + + Represents an Serialization / Deserialization exception. + + + + + Contstructor. + + + + + Contstructor. + + Exception message + + + + Contstructor. + + Exception message + Inner exception + + + + Any MDSService class must use this attribute on it's remote methods. + If a method has not MDSServiceMethod attribute, it can not be invoked by remote applications. + + + + + A brief description (and may be usage) of method. + + + + + This message is sent to invoke a method of an application that implements MDSService API. + It is sent by MDSServiceProxyBase class and received by MDSServiceApplication class. + + + + + Name of the target service class. + + + + + Method of remote application to invoke. + + + + + Parameters of method. + + + + diff --git a/binaries/MDSCommonLib.dll b/binaries/MDSCommonLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..dac104802fcb0e63fd57ad6333b2961f18dc92c3 GIT binary patch literal 72192 zcmce<2Ygjk);7NOzP%;6=?M@L62j#sp%c1>Dhdb+BKFW#l#4fD0fUJGHY_NjqG({m zv5Q?46~w`=*y}`42XV$Wj=kXjS!?fea{=|6|NDNw?`od2p0(TBEWqWe=;dFP2R@@uY^*dCA1=dL}QhUF0FrOoRiuP(q$p#C(2etUZZ`y zC*)Gdb-1#1ENf#oB(a~b)C70v`RAg#r9@fsf7{hk3PZQO zhobiTy8Rh1B|;8TKR@{B6eH?3f99Ftw(lNA6Z{lbG zWHbjO$7g9*;ubLR=g2-N;=#f=QblE&R7HRS(HMmY=W16hVB$oXc@sw(IfG?RE6yH* z5D@ixTw)O;OOl!Fp+v|0eC7Wjb3Wo39YdTpOgBl100qo83K2MJWSH|)h>MeUG0Um6 zQ3k2Bi;OI3w}Z^-<=blkr(3CAZjLL+3Yh<40&|z!4H!eH zXHHMscKfI473q8@wKk(-Ft{ylSG8Bis-THGX>{&q(g@+cMOD!1t^kFE|j8T+lD~%2W26KxR#@7woB9?nzZ8D+cGX!$ENbWPQG2#0zE=U`!9ol z`zDX0$`7T*(>ZL4-Q>9&63Oq`(YkjBThAe!gxNV%m0oMH9#B=b`uwK!y<%&&%On&K z7Q?+7tnq8FFVPEnF^hKEXT`pLY7pv!%tzDO%BoeOqJ+rL8e6U0<`-KIr z9xghEOP^NQQKNr#0jUt0LOvT^*YZ@7{tbK`&ZFug}qO2e{+LP+q+sB~y z;r>2YkQfFG`*9=m@Fvl-&Wro=SI=knh&M4DZpnMOE=EAgaW{v$ftZjIDCOxa=mUxG6oyNVETvx$ee58P*PrcAzQSxY*xsIggxU#_IM^nubel5S zA)O3OBPs8VP`dVx_R2JW$*a@JqaZf_IWCxVNXq0u;v3Eb7jI1=GT#NxR<~EarbF+T zoV*Yu>P|kkcT@=duXJDEr<3mPwD3dI$*CZS>``3O>_TKur2G0jowRz=B3t7%#^ADd z_``jvOg|2BZ^x&gN#*D5bnB|Y^=LD-NqJd~| zb&fY`8`e2!p!Ds;Y>+2|pKTfy)_bu|}gz|I3NGB8xug>vB zebV$}oK7{T<1^`mkxn=oj)s0Oo#)b{elv~8lr`Qf`7U&(0dimDp^q^Ez+@%r+Kz^k zeme%ed^@VR7k45%g6!PUx912x_ z&j{Mj$86$w(8{Pg>P!9;6hS6HVQRxTdBmUNAT8WDq?g4dI@#7jb@B^DKuR6zkO0$Q5*(Sasphb`8^NS?JmLip>i^# znfb|Kh;dysvmojhdm$DkPdB=vXaJ?gu_UU|7sIJIdA4zi9gYZX6V5BIc*T>fx>g0tffA1I>%=sL;u4;5QmfPbB#i2XE^lbcajOwX2-0XjXob@3wW( ztO7rvP)Zp>kxMEQQgQNKu`a7!)D7A`*=lI)h?KE9*>>+)Q+a5t9*#1RbfVE{e)2;J z7cFpNjus{>f}C`;DCz+gC$VHX_9q8F}iQyaB1^ z$FSmpd<*0PD?bdm(8^CjF0%4=$i-HEA96b@e+Id|m4ATT!OH#+%`35TF652@ODdQI zE$PK1WXT97VM`8Y60u|klMG9eOfrS+$!X%8*$jHKRcs0}GyrQf@{Q!x0PcL*0>F}z zFr3RWq7+xGa%75vIWwWT6Gj=rokM6_ggcW^MszIxs_Lc5#*<5sXgqnT;5C9b3*IaE zq~LRcZwl@Z{6g>-!Hh7+P%Ic1?9ZsMdug8R4XVvfuabuRt6UrB8)e29GEw8JkW+Sp^Pug;!Vt$bOzURY_k3!%BRY~ zREY{v1D$kY7a#4~$K^Ad!^R82{ z3M)@0vE>Mf#M+s}M3>yXPl_&gVg|y5u(VIigz&!4S=%2-p+nl%xFt3pdqs`Fvk)c~ z7Pgu7aTsHs2|Jl5_rb)8fY?cZCT==ByDsJ{c0n3Nz*2GuTrrPd#n}xOv6ps^7ZIRn z?sZE+Vs?%4AUGRRtBt%4m)P~}!C3{c86B)$_WFmrG{N?48j8bM zF9H-D9fb%`lsXC#?rmGW+=G-ITkm5TeJ}4mJ>cl$>^a?TEC@Ic>v4(QZ)Egr-q?eH zR34CICnre}PIoqkxZ{XD%HbO3Kx`~yZ`_7zQKwj2Vc+i&xONWNJqmVrB~F3Y8dq*r zST8b)Q=vdr`|KV>s;(ncTGQ4}DiEh`i_>m5nJCP}mYP^8$T&wHV0sIp$wL2toPBQab2)1jj(-ta3|LPNIT zRlFE&C>Pv<*;u^cQNbqGBr_to<)t5uod!!9h9b;D-t z;7daiId7~%8oV|652zX%pvle4Ynab2-PxsK0gK&OTqL;1`!V}G9qPmx0PXfP3_t}m zav_u}wkytCdwdSMqejY+iNH#s$WlwP{La^Pa7XIbd#TFvy-Yl^Qs!G!j6NM<+p7J%C zE8nwq2o&M_OJZ@hb9qx$QWkAqUgB(yA$6zd*e9F?DW8HwBi!s>V1$Y)P1`Tg4JF)G z4=_c+d$8|uUU?rGeFtSon$pf<&`To^`_o!pq6B5^FHE%Oi;iuBr$i~svbU7z#9~l; z3rl;T!eTq%yugj(3;Ak7$-~iT%I_Bhj9@Kj-PZz-3?XjTQA}!oZ13r;z}Uz2!9TY zPHpR=_3spI7liU8nz#zRiLM}#z(^P3L>u6`Ck&xfRhB$9!^vLqITocqNgkK!h~7kJ zghlbbvyUp&idq(%a@@AhZ!;>D-uUKbmf( zF5AsxHcj2>l`EfhMFaXX@;g4RUXPyIF<|O(3#Fy<)RbN9<#aqn7nW|;ZC4u@+MGQ zXhJg#TTqIiL2vaDUa55*djqaA%dZ}$W#kB9^2H4z;RE;z5)r;656r@T0ote6C+(s& zH@vtC8THG&+n>0I&84_a(F=dFM>de})?Dn)N(tq7(keL3tEuGz<11Z%F=CCNsy(Kv z1J#K@q8z1X{cy&5mj*1WghQZ6$~cf##*R(wxv+OP<5}+Z9Cy@R-2uBIa+l`@3il6d zdMTU0a#({lfqEbsL^UUxd9|i>)blmd*0_JdT#hiwL9~~^zbSlfB!)}zH{d}K--)PJ zcTL2boXKVDg|2m`QR;?Qz_=o|e!3O3kS@IIsvOuXK-$?Py`|7bnu#e>)VV?uz&03imz#>gt@jm`;7JcKQG;m?zW0 z?9Tll=KGX~Jjv~W2g*A33T)?9Ofa0Sc_rlxe23QcDP#B79QR1JYae&iX9Lf#?7a|@ zeEQ^G@HzJa(&ITH(LofMWb9)*IzbbVvgQ6K(G`jC3NF2%E{82?&koVgMojowrqim< zw8Mc64trEQKfd3}hU1F|d9A((OH4CS5&?< zC=PHGB0zDVqYwd#I!7S_7Fm97JO!~|aEW6sre!|>#X}f;P(-{A`4=wE`sDL8`Ae23 z8$bU})Bh(;{x;3e_beX^K%76aJkiKMvwS!JPjAMeLfH-vtzaYYgB|E=Q%knb(&R6U zd=oCQuhR5ir^(->`T0)d#TXXN6Cs>&@HQZwU=yoEpTH1P75l*iT8m5UCnLA8ETx1} z9PX5&2t0??bcI+8dt<*!h{j>?gdT@WBPLe36I>cGvBI6;5{rqY?gW>HNyshTzBx7F zPH>4CW84Yp&v`gNoLmbr$-O(lwP14ZPH;`dq=eiFE>&Bt^4tvtkDV4Co45}v;0cUK zg}p<`uG!8MK`#=s&8dzz5rt96pcF)(k{XmSl1AX{P3&Y(1u>0CvBWUX4Y?mh$13Tf zV$;$sOr=|Zbf@l+O;TC%=s`juwfcI&XRU1 zPb-YhE8`pXeZ=w?k!&@_Fdm+K+#QYNjPWLi2vCf26e2)zkfRU*iqVcjgk{dAVhjV8 zSLZie39DlP~ zD{uCrAKbS**>Bu?3133_;i_z(A7c-utW`I$%3m-g?DzKiC$>Woj|VFnC=riK>LHjP zszU4GYV`VCzM~S?!i2CtzlW(ypMOfo=jzq!jdx4Ba?sgMz&IycJ;xw~-Rj9lWi&FE ztsdjh0nyBFb3hW)*aP3XB0w?SQHTJ=3`ZdX@2}hpTlr@jXhCcmij22V&|UAdg;I~e zx?wevZ9GB51uP!V;v&I4-qSeH=}?>96dVka-IU|Rk01_Pu%CG-ce8D>$g1bDx^0ui z?550s(r&EGf{60ndq0JfZQDnF_(~r?89JPvK0IbB6y{`ziH^C4E0d zQeMQ`-`P*W={$^;Z0aBEryQWA5O~6V66ccl8!BO7dv1%eEr?x&*d1_6JPg2&LJk+- zgDl79atO3Hgn1QV&?=%5Bp{QFc<*17CWbw^~}uD(wDdnRoJ$M$4$nm z_!4IVP2n|7Hk(n2>*2G~mskiF>>kYK1}r0)QN>P&KEhiFCM{=$*_Kvf4I{N1i~#t}uHDTn-o*sD#T-ij_|zVttSz4w%6=s81pu+X0ro=%@c07d#$id8EEvDJ?A+48=7Vz52eUM`o7D41}0jN zdSWdgT$STbtYcf!ld~Hx|JZxOg`-LQ1%6XYOKuOiIe5RN<3VlvEe9R%*yEP-fn~5K zZJpn~cMrXY`_Af^UF~z8F(cEhHO2uAof~We#u9G=lPxU$LW?n*b31EC6oy&)*|lTa z+LqhhWhev8e9`Xe5yt5Wc>O(+q2yoprdTDe%_`d1zaQPlv6t4iDi`IkLF# zI((+%zW+KswGQX*!<-CFTXSQZg%qFDjf!=s3v<89n%f@FO_ej&*y0~+Y`)2Ojm=lt z<>SdjKF?s#Ee7MG^rAP})x#A@JOFCSQ4&6#)vgeWMWJP&<^`i7$@U@#^(gv?jKJZNcK7pIt>4pMrpL z0I><48qf^{n^+}!%`3gCptoT;M}TmO=QPxr+gI!y==A(rzGYWJ40>gB;P`p|b_TBe z(=}Pif1!sIEDKJ@q(NAwsAUu*d6o{cD?7(J$y{{C}V3zXtxR3pF2r z_Acma+{ffO@tM7Xi;W4XHE-Ht*Oj)|b)_wKU1^J5vzhF?BJe#Da#r46mSwT)N?Yu@ z(iXd}w8gF~eX+}Bk3NCN)@Z|3Qf>{aa0&U+Rlv+liJo%k|yRWZG=(3fM5e6a}8Zc}ZTT zUd{@nhMt=hse1tTLN=0&U+Szo+McyFyaR{E1|+9rHzIg^vE#=)eA~}`Zpz)WpBo+= za!iSLIWdR4$Ass>%TU(ndT^dMlw8a0~kpMSg03a zhKV`JaQNp}MuOGtlI8iSvx)s6rmdaReY<@2oNU9b$YSDFgvHIlWjYu(p@aE-o6@6@ z1m%o-ni01lqRLc8|IQh`R5#oXZ6o_KrGd$F3sP-(o|Arx{UA-=dp-ai9%PJ3FSFAC zIK}RTG#?F82U{yb#v%3>=!}>=0eSQ_bVcRH)A8QX-BL*GB^fJl z3MuA9f% z$P2pR;JT=%AaVH0Y>(D?+Bu%uC&wC39sCI#J@d-hWB8O~fOr^| z%JJV1#Y+h$*+6U^e4+r&{y6qI3aLVa5_Z@sAEvWd=5cs5${T%JRP!lxZ?%dyoQb?+ zLYz1QS3FrvVBqKd``A64bOFGZCoQ|6IiHH}>tf+swguoBWzL;BA?#IT{5mYzag*tD~g~|IxF4BwG&UJy}x98G6qY*uDSbe-O$%P4zj1%>nh#tB09Pt@dS7c&Q-HMd3B*PAhpFne(r~``NMZ; zQ70NU8I_hL9(b$tv^7#Nwb?}D)J{sE!6^|yt zhQ9&$%tSEpG$4rOW$YOd(B1zVwkDnhs|gz-XS;)5Td&wtXm6gCo1^KLK%ni8LIiBwbEP8FukgjqC%O2& z;0$iKmpbu_0L5jFLIl1~Y!h^0^mlUQVHvANZjQG=j(?XbQjF#oMCwj^iyI&l2;$nnPypIy*C0vxr zL2yq*0gmEeR^+59#;_uf75RxGzNAkBbu5o#=>R<@#XRlur_Iyrk?%+#aXP$I`^SnVi8Xgf#1Xa3?J;tsHVeml0C`+W2TctJ2FcVyZ23pj3X+cF1C9~b!Opfg5r z%ucsankMr(LcVJbl1hcPm%oYJ=b59PRH5>__yuBVC?Bkd? z+Cd}pG=~oGK7VhAHEkiXIRtYFVH_kxn*(h4D|>)>jUrU?4&e=~f)n~g<0Qft&h)&o z1$ymnT+5dtoa|)(x-izCi=p8fVB<}!Y2dE2@n(oHk=LTA9O{Yt4fo@L>~|4I#7FEf z$pqv08r}day#OI&8*o1~qASK-$(VQ(F1(4vcRd#+Cey4hNW29HlogYPw;?zFg#%$l zJOqiPeJo%-s~0iy_B@WmiWRNFN?jxpZIT0Y*%Wupo0g^(WB9b90}7Hq5*St#g@ z({iblPz2Yt6#-uBg^$$6t2v*ju_GL}-z4C2pMtn?14OIJP)t%ai@1nnGMlJE_*flB zg6&T%!6e0QZyKTcB^?{YZdeE2h#<~75JLs_q>(c&O?!4sQ%R}WFC{!P@eg+9;~sh5 z*Ngkv2N4W~!zP$nIi6b}b}#Sc1WU1*?>f0>D4AJ|8pfO!@0-ZO(qykYlF9myD zhx*|)X|q}Kj5}>TDsho)y3xS)D6SXPWfEkQ0~_gLx6}v+WSCU`$(Pg%_sXh zENFgODTj0y;Ob4B2INhDF5vw({hj%K`_6x`&gM{jv);;AzK=zK;x1biDf&#nFTriu4BVQv0?FD2rd(wqre+5P6wMO=<$rAZF@iSL6Pm5e4@+soFPB6fjd=Iztes8Xr$;4JC|01O2AIC8MApi3? zPG{naB7EA3LIfzDaTFprEy+xgpLN_sfam8Ng$U=i%|#Zn0mmRmXe?(tGG^`BoXOO~ z8$Nq@G)j|ysp-gK%o9u_Z$`j|zjGsJmFN=zZsfc-k7+)ZdB)?p>=C_nu!&WoPXyT` z@9J}IacekBW~}qf9VkLtnJt0e-)}QZZ7kAeuqs5^fnUrG`;q|Q{7$4dQO32H{eb`$8?^W1W_)M-ByGk#) zqe3N)fF7?5x^OXfsM{>;of^i&2Fx|wyt5*GJdYFOQ7;%Pq7AnrYP^?^ffZf5#MiA| zvZfuL94w!OA>VwRp%oQiCNDl$g74))_kziq?p{_%);`9qnJh%?grLqBkqZ8{v?CBfaj}C_*iaxCuT?gQ|66UvC5Dpe*7< z!zLbr0akJIm+zIG-m6=WZhd?7>(!4n*sldXgS)7FF~(YC=iwocC(civGd1}{1_J17=qJ^i4~uf@ zs6(2AKhzhYuINQ5;Y6r1-Y=%P;AjWjPs&5?198Q8LO5N-=VK%eH?G`c;=aRMQ^p@N zjvs|g9|qnFcZQ!=U!y^C<@}tTLGhf-94}p!vot4zUe9AWqln`di5K()(A$xks>FAC?CSP82*v@O;5_z#u)> z=g~f1(tSSy<_lKzB`*L132)-xyU0+TyT+7%=a9k~0dyL?Q zTF%{*qTenU@5ere3C`-rsoW*FQLw&0=l9zF?B_^W$0Rt8NR#N|0v@D!kzmJRx- zPX^sAng>Pm?VxRgyyO|osh1Dt8mtx^EjUB)jKQ4BWx#A|8O-%^yWnHM40>g7d!({c z5KAD)B|tCTJ>)%%45lSADq0KHPR46y%~+8ffcxJA*@eF>ngJGu91^$1bP3!%c$0@~&*qUrZ25XO z&U)ZLg7~Zf%LAJ)IU1!8(;kF8L)=c(XMyFzg~Oev*Xk(dH7mqz16Ur|Rl>GwPOlwZ zBbI%u*|HAQB02K9I7c1mcJbNH#Xd`DgRsFaPN9q*p=M0$C%Cw*%V~?mGR?(h7N;l0 zXQOKr@*bzBgq;tcVa%ugiMq(58!$dK(J)xK7U|v#pZrM(Kfa5ZMO(#f1eFMT3(P|! zsa$FJ*##CsX;v$)ho4=X_d~(B-m~2mZV%3|^%gb|?0USx-(M-%InnKg&xte$jA*u- z%X2dNHLiyX!1BQA#FpFLoQET6xVXLO<~$rp2MPPo%{6v3>Yu~?=w6FBkHH&iY_+j- zCY>oM_&i*Hv#C*WDYf&IAeK|W)*`pnV1)PWnkAemiBoBLTHa5k%Y+?-j@SdAmkT=* zEQ=DfN>Z5V8Koj%SBovDd$=STz}S}M67FmuwtdRAh|*P~RF&ZFnWtp+R)>}6p?yoc!y zw1i%jydUYUzyPw8-cVeBv%TETmeSi|*}2}!ydJRkr2ejk&+EZHlvr+;^p?>s#d{7f zdbwOKpwGqaBT3;R`bKQ|-g_}@Sx!HSThw#^#f|)&zw4>HxP|q%h9UDcnKh#cj5qd#O93*86xn>|u|JeZT*j&Lo(F6b>D6&xHI1o?;%Ym9u0$elAkr7}7- z^H=DXXL6-Kk?B!obXnF|$PZ;rNBw_W`?b&O-H|m{O>WwqbsF$%!CwUZ(bM2_OmrRa zpzL>nCue^Ed@-BT`Z{|McKG}`-y_a`IX{cf!(dxgF1rrR<$CCl$MU&?f5~Gz*|swJ zB#%q2Oa6^|a?`l{qk*RhUL$zF;Om0AfL$wqiq?c**G`JB6z9gcH3@*^dj$_FJ}V$^XNT-$ZL$i*ehxtIWXa?^Cd z(*>6S75&eCXznk45%@ystMLCD^pl&i$~cCOWj{kdx~#yh==w7DZ_4)J zvVO3^)a(Z`*+R89FGQ8~er-g-H8Zj*Oaa%mjdg=_rIE*E>)!r_s@5X)(6+BJwdch|JcM0ZpXFrDkO<8$uACglt!85sOQFktrSG#jAzU+Pl@>N`Z z7jR7UURWC+62^aB`=rud z*mjfOHcxfXSy>Tn^V9~jWY>xvw?&5G^FJ<{P|9pqU{bIcY>H*mg7|zaO|@(u+}w1M zWlQ1aruo8_6t2dxWDm6n+om`@4?SWTr{|^D4fAt)K6*>ou7Eex3+w~SvO~3CyDcjT z6_cO7vaBXl0`{Y@ZNw=AsJM*q+eVy1kOm1`CbsaJl7A+DAsTLcie(`hX&HwL(?P;a z9wIc}xQU$+nka0UpY4p$F_y8N5t?Dy64;qRr&zWMc4p85VaCo(T4fohmqia5pJHcJ ztSp6{Pltxtli1AO2E*PLspz!f&?AY*(Hs(1kT#ogN`EB!@wHI3wp3~+Qc`e*5U$roCwuaA7W1ogEl@mC| z?c4B`X)G&plkANeH*ROeCOKHfEvt=nh@`V#d$F;R@o7G1?&WsQUhIawd~S-|mKN@% z$USMSHS%B^^L!a8Ph&st!%EWJbjBvEe4a?F&35#3ioFZBS5mA5>!5d2>_e=BK2EW6 zDy7d-tOV@a6#Edpq4{m|WM-CAd5Yy_)~2yyxK+?^@LWpE{5>6le3 zZ}KtS=INW&NA)mHV8gQps-7u!SXK%3O0lU~2ddsFc52p0)rU5Sot*axsxLhuY?op? zYw1PH*v@|Ri)CzQe>$!+N3=_^odf7Z%h=9=)Ri~*;l_3jq5~{rI|tJ^%h=8#bfRT! z=K*w^Wo+kxwB0hcvyS{-IL>X-_Y9@5ux0+MvnH#dglQvw%lv=MIu;DmFZL<@;4m6s z8TT*4X^!zJ{mTgIC2R$KRQs841P4No&Lz>P9JWp6M9)*BtlKu#H+r!eonk|ySF5qq zVB++D8eXHu5r1Z$ZTS{G!#G-!mfoSX+`7$(-mVU%mBP;RFO1#;w#K?$9(`Dir}ftD zrs!i}8;l!09NnrW(4o>~meKQIhtsjbR#0*FGinlzl}56HDzmq%$@E)ywq*tN$$mo} ziD!+>OkX~Q%7rcS-E~8U(^7K@?z_PP*+Ue=EUDyg*n^UG|l1m!w z3c4L^7PS-BOpoSt(X%O*Vm10Cy2i3s5X&j_x(QeKb^osJxt!HhZ90r=vyYx<-MBUf z>12v=ZJtj5lvtLbHb?0*=xfWq4UYl)*)ZgNj6Rcsax0k@c@{;4E%Se#Q%q-3o@L+V zlz^33_FGOqb^AKvy5jROX*e1c;q3s6*R&!p4(hO<19P9U_4z(M_YDbK`*drmfciP3pU5HC*Zb{ z8Z3JcZY$|*%f2tj$DZdB%Q6b%>MFX#vd)Dw^(wkbShIg0g*}9zt zx2x%H>vmOPF?LQLvTpYkmVj+GZqoN$ORuF^o?cBKr`S*Wdb&lP`z#}#yWL2o*c;)J z=egUBbhc#`MVr8u2-~H46|vh&Va+s9*eL@zTr-U;ngO?`ESpiJTrKoEc39Z$%%VB; z7s?%E*z%&F>n6Ixvb&1TQ#Vr|?7pzi*NSpnx6lukeN%LmzKvcuz_|H~%drC}^pR60tBkv+z2g9%iDsNu`7P5?Im3LE)WkcY0H?_Bn=a?I) z!m?u#=LV{=jAxwpP+wuo{0rO1T=&oc){XCgdufzqd~|w=PO%cO(&5G@&wd|a5x;E_p3k>2UN^Qep4~rcJi;fh z8`~Jy=BAVz*Jc~z+I%eK#uH)SY?;5RB%hw4f8Xts4breuwJmJ*gF zO6Fj%_DsuGmdtfMM@=@|x{?O43$5Fb@L8_sX@zAQO3ndWZ5XVMs~2dKb-TJ_F?M{P zvh0qIC15XFwgql4(HoX+hucfkYS{-JZ*;v(yDa;n<4s^+8io|gX*+#y-4>VL=h{xc zS$1LRMlk(-5DRxbCODaJFacd4(5#ow)L3cf8l#IiwUS?>2}R9Xt}OE|uB zcxR!F@ytqPrB& z-F8#eD9*+%#dEjaG{G{SyX~eamhs$eH$7|_&)s&@R?B$qwwtzF#&fsbw8JurMcS8!6@!aiGx<*(tEy*o+|C3%5h80m+SNFf@12CR>;!WjywOL2=7??Eiv#TgGGmmo&&S9{azf5r(0x1Ntla!7v%azovNy za~{kX{x!WI%#7M!)BDzK31;bEQ`RBI=eSNo-T$G&G0e<}{taDV8IRiE&@-0tIQ=ax zA8UN_82&xAA7>bk+CS3emhq_lGfg_wxbdj{3q4~QkJ`V`50>$${R>r(XP+x*cBj$q zUuc?PGKT+3X9~leir(f|Y7*A$=icU5y3o2EQ!>H5hgMjYD47hl+AwL6ztO|OR?+%S zC%S*5uPl4G(>yn+!U-nzXFHwYR_ZQsTR{&EtPW#)Reol4YGXX+v@srK+8ECg+8B>A zZH&j2Hpb(78{@H~jqzxaVji8*=x$@Jo$%yPT`yL1Z*wl(`W(iF;;AHjy3`EI*r!X~ zFU<5yF15+H1$YMay^>&aK|CjCbMOYKO38^h2i$-5!;HIHzag^r(`( zSY?WpkVhSoVtLxDPEN6(v|lYVOxkWpU1=H5KSQd;aVuZv4yis9B|SPDEUeBJX4-W` zT_~)XE-Ejlh}vM;Rpqz1BdYKS4!45tF5lqJRA*cESoubGRPC_r#q!PW9MyiZ_>@+c zt9l7r=HF4i&7G?T3TyU%hSYP_aO?I%`Sb2PHO9I{DqaDbWZY0IJKXtdhha3N;!}5_ zI&q4z<&cW6+{Nl9VXNqlijb$hde*Wn71^E+>TSzjt0?w#RM<|yZxwx3(bZF?vMlS- zxxc4et+Z@R=Q>YkwaKz$I*;;Hs*f!@wewg{7gcvO$71HfUDR-4%lvnA&ZjPFjAhSs zj;k(el4aZ?W9nGTcs3JLGliL%V^_7zGM+ic)nAQIx#OzT-NsFJqN>!r#?9Zk@_4FJ zk61ROat7E|<5PB`s@2<;ahx^kbK_Iu?54goZW3oV^`mi<-K}m)9mDxEyIb8WxoHp{JU@mrsu0+4;g-Ou~3Xzs21<#rj5%@bpbF z9?=J=IVKkDl{~Blss_ux4L=5Uc3KL9)Dr77*5Elrd5&c}SJCJ$vpnNewy-6BUL}uL#g_3ZdAyS&&%7>= zsR^pwxJexyrg{l8ZTB$MSJ*QDIbF{79Hxd?wyMi{V55vrX-kKzX_j%lPgE<7Plab-i(ueW^+6Cd+tVYLdFsGTxUuLOoy^?@Jw_9v8Mto(fG?Z(GLc9jU%H zJ|(>=>L(kH>voFbjX!R!T(?tH$g+>S6w^^E$Fi@wlz_E2Okz3Owk+;<8X8X&JMBrJ=0Y`%W7glHC@$NHYAo$Gt_9y4#TG&XQ;yrLwZ?i zrkX9x)Wd8w$NJ<2srdnWKI-KIPt=qxKk|vZpggd5>>PeU8c$W>PpsRanL;oT>&GpOV5{ zHPnXVz2>>1t{{GgF>tsu{wT`Oob7t>;X2ie;B{{RwP=WxPvu zmTI(&cd5=&%PiwP)rIO(%ed_>R99QJu4^$ZQa4(5ch?fITMUzuI9oj=%#_*L>MP5* z%oy?H8+_DfTWcR)bOudzETLieax(aVX@^(056jdEhQYEDIzJVTccLy(bKzEs9SMHgd4W3LGJe{5p=z;=pLSlPHd@9{J1BfzpeO|8a7uHPc;^nkL^_jtL&Gc}54%lwXUWjM8uTa%9joaIByHYI? zX7;o2p(y;E5y)YD_uucqSCGVw*OWcIZER?CfcF};T4Gt|=M~?zYMo`g;=5MeZdtHu zre3Y?v#ecJAGKO-vaA|z*Quv08w|JW)Qg5m>$zV2OPJ{guUFAoY|Spkt!ItuC(N{- z8`Oa*Rzf$Z(JA&J-KY*X%->Q~Ol#HAmfcrX0yf>UZB=#Nb!v`fuT~udHeZ-Y{V(b& z%Q*F$)Ck+z{(AMkWqjwXSO2iATXiwrtUkAFaCHgTca|Me zosWNaZI5LWt1$;szS*4jW&UFk?iQ74*~tiZiz>A2Ot{^uN-bLow_852zAh#nbKMWB;lfN`_mG-z8C(6Zde``r^fsy)!nnQoGB&C?mK`>v zI=oSRXu`>Ov{C)Tgp*R*s6MxhOKGF}&iIs4dPIdzmeQ3cDvzpCVdn1Gq+-TR;@qUF z_Hyej>^y&Uk0-sG)F5Ha{((JCbZt^2Qa-WAsZLC>JpH&jH^qL^o7FXj$(n1cT5lQm zSzFb;!pypAt9nA1SyydUFA6gyzg2BF;iQzds<&-8?&r6vtT~*&U5fkpzo|LGO#Zeh z{zs{tmbFctVcg_w%r%r2f+LyVh$NsnTjA0BDh@*X8%hYBH+-KhWSnBJz@+iqT|5bw$W?+hg1z@c z<2q3E!v#kQ9wK<0;Aw*Y`*@7C=_Pq4V%Bty#J^1BOZJiR%}{9E#6A^WBbc6Rmd#Jm zjc|2jQ-*g!>HX^!sgQZ~cYh|9@uT{$+9*V$)>G)7-iLvzSdT404>x=F4dQC{8Ycz3=+{ zeg1FS)&8-iYfOEuk`mZgcF|g~&GZ%NEpWqsVKdjhwl&_?R+TO1|Gt(V+ApnVMe}wV zn)vt6*Ppk;-4cVrbbG#nUdzW96d9S%<2aV5r@~=1<%=u#LYlgyd}=an$@IEhhWNKR zq{rZr#5X;}r;$wwPl86%aiX6sX#Aw7xPR;YbIt$0MwAJSCjb(Gh@^n9K8cqAk zE^0{mcU(<=)9ZBqJQ_cLr2pUNx*1k!xwZyuB*=sOTBr#c6xCf$>9}r|0*5udAGt7gOJT6K!}=hM_j z(Sq7?I*b<9UZoGCb8GVudTfgG4N^X3dEMB!o+*SrxBl2K8;#xpYxrB zlVs!R9<{OdRo_O%`MO6vUHi6gi+ZcJ)mM#B*zXg|x2X30-cSMR-tT7rv#MXeJAjk= z-Rplxo!0MBAn!MBQA_(h<-bt;Ur5XQJ?B4(uI{%T=&IeSSo4OT{k-d6K{q0vo$Bd+ z;{uPrVKgv>b|D=Chp8wRWn&Y-^yxHEVPy*A)}ym|ZO z0GveDzX5v^pVS*GR$WW}fiEHy+dN55;m;?24sa4h2Kqu>b^gH2(6!VBe$EyPITwe7 zwm`0>(`XUSTbu-WB62rp;4z_l)PjNaq2*{-_oH2%Gw}S-O1PHeoTFpsdT7|rm15^g zNq41Kd%akDlUTb_Y`a5JykGDnlvti-pgY4mu{(NSI7%gh9tk(Y6?eBjV9-6l)xiqf5u*l8#EGWW!I#2# z2X#;_Qr zAb$4py0}JN?+v~oQsi14TpxiwgL}cAp9a^`r*OR!n!F(!Bd6g$8V`L=$>zxW66#|? zuE$OppNZ_jcheUr57p5bz!7+A;K5h67b!nZ+}^JJbUAGRuA~Qm*U%%t>*)z#3q1wA z2|4uRS@3F?AMd!c{~n6{_fZe%4D`((K|eu#=L+Cy*&fI(;`1i)d5ieG13vwn!wUgIzCp%Wz`%cHIr{sc+5bhEZlb@M8K9 zm_tK=6X{~$BH9j|PS*m@qj!Mq#Amr+6&(RhZ}C5fW9+C9fDJ}_z_$yNG{ft3f2h@6|5JWD%dP|o@=5j7+fpz7Qvl@ z%FQth6)f|LEI3uLS#Yi37Qvl@%Evy-1cwSv6>Jt-eqpx_&M6Q7Rvv;V-BOq7!W&kJq&I?ZT zUKQCQ`kjI*BsK^R#d((7^;E%T!L@>01j{4rS|>PMuwHPwV6)&_!7YM21e-EAREyva zLCR!}5-b%g6RZ=g&s>)g@;3n~uthXG1yvS@Dia(kI90G&aEsthK@}CBfUSihsd6!Fs_aK`Iqj!8*Z;@(|*$uMisq zTLd=??hvHT5=yX6ut~5*aI@eJL8=s=g7tz;f-QoZ1t}(e1a}BhSJ4R83DyfX8GSXo z)(O@NHVL)}ZWg?$8|UIrzmg@xT1$PW)4Gj_hf-QoZ1$PM20pcpyBDh&_htV9! zuA2pS2vQwu>IItwTLd=?)(w@|1X~14hq0zkuwJl9utjjQ(GQnUf-QoZ1$PM22zD(M ztP^Y+$(k0yrcojb?hvGdShIOF;|@VOnB`KzI>CA)AHw>2!6v~L!O}6TuM?~nY!Yk{ z+$^|5kj6^Pf^~xRf;3L_f;$B1P}VdFwg_$(+#y&uo?Yt&n*>_~ODC|tPOwR^MX>%b ziA}I>qJ$M}5^NFNEVx6kevSuG?_=L?-%kImz=QZ!**^o{1=KXN9eiG_Rv=$Z#W}d86FcpEPQ0RKAZ@j z5pE1$5?&X6BK%DF)9{kWeUaxQZ%1}UYBPM;LBT)9g;lv5D{&82++IAExIBCda7}nL zurt2C#j+pIrGCXZ^mJGLnw1;>@zQR$T)Sh{-yc4PQ76osDzH+iqzUjf5#PBw0=_2WJ8)Cr>lo}H z98bNe9{U6*(Lg*jI{@DyIuKu=s-q+g#kZ%1(*n$APp6Ui^3-U&MR+jY9XteY1&+b@ zgT_%4zRGkizALyCv7e8%@JV8%?_YNDu4p44($v z6kY&)GQ0?=BG&@_ksE=98BYS!V=lv-5?}um9G$^oj}y5;@KVv-lJN}m4`#d!d@_UI zEHLT5o^>MX&L6oMcyabez%|*Q0D7_#Imp8$Gpgfduxe9yCGf~nw(3N|hSIyB`Ly&c;4fK!2Tm*FT1&6xx69bS z$$NUP({pO#Kgcu9?bPg_=Xd|wOm87qR^Xnc1zQ#+AL&Wp*N(JZXwc9q@+jO>qa z?LS}HX0xe5Q%ALU=3iQxy)=o(JNSHrGR!E_7L z<*XjudfWH78Zj8XiaZ3_AK8@Bm|Pgw={=rK>5V464Vb*&+M^qKz>e5G&Z1JFM&HU` zKkI~E(vLpQ4Gs5~3V$Bx50QTJV4y

4U2mm_>hsZ$G}1<%cGO{?v~zx&@)H2Xc=c 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 x`L_KW=0Oafzi&vJWri|Bz=Di!q)D&hXVH#6&9 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 literal 0 HcmV?d00001 diff --git a/binaries/MDSManager.exe b/binaries/MDSManager.exe new file mode 100644 index 0000000000000000000000000000000000000000..6821ed255dcc3ba9e4c06dce334dcfd9f5d09b0b GIT binary patch literal 58368 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 + + +

+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/binaries/MDSServiceProxyGenerator.exe b/binaries/MDSServiceProxyGenerator.exe new file mode 100644 index 0000000000000000000000000000000000000000..91792a8d01b107195f18a499bbff4dec559710d6 GIT binary patch literal 15872 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 + + + + + \ No newline at end of file diff --git a/binaries/MDSSettings.xml b/binaries/MDSSettings.xml new file mode 100644 index 0000000..9b73fda --- /dev/null +++ b/binaries/MDSSettings.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/binaries/MySql.Data.dll b/binaries/MySql.Data.dll new file mode 100644 index 0000000000000000000000000000000000000000..7aa95ec345a5d23b2cb6a7da21c534328e65da90 GIT binary patch literal 335872 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