diff --git a/ipc.sln b/ipc.sln index 0ac205d..564dc24 100644 --- a/ipc.sln +++ b/ipc.sln @@ -1,9 +1,9 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.32002.261 +# Visual Studio Version 17 +VisualStudioVersion = 17.12.35521.163 d17.12 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ipc", "ipc\ipc.vcxproj", "{439884C2-9C07-434F-8B84-B51378F4A83E}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ipc", "ipc\ipc.vcxproj", "{DD8845F5-6D92-41D8-992A-593BC8DB9FF5}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -13,14 +13,14 @@ Global Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {439884C2-9C07-434F-8B84-B51378F4A83E}.Debug|x64.ActiveCfg = Debug|x64 - {439884C2-9C07-434F-8B84-B51378F4A83E}.Debug|x64.Build.0 = Debug|x64 - {439884C2-9C07-434F-8B84-B51378F4A83E}.Debug|x86.ActiveCfg = Debug|Win32 - {439884C2-9C07-434F-8B84-B51378F4A83E}.Debug|x86.Build.0 = Debug|Win32 - {439884C2-9C07-434F-8B84-B51378F4A83E}.Release|x64.ActiveCfg = Release|x64 - {439884C2-9C07-434F-8B84-B51378F4A83E}.Release|x64.Build.0 = Release|x64 - {439884C2-9C07-434F-8B84-B51378F4A83E}.Release|x86.ActiveCfg = Release|Win32 - {439884C2-9C07-434F-8B84-B51378F4A83E}.Release|x86.Build.0 = Release|Win32 + {DD8845F5-6D92-41D8-992A-593BC8DB9FF5}.Debug|x64.ActiveCfg = Debug|x64 + {DD8845F5-6D92-41D8-992A-593BC8DB9FF5}.Debug|x64.Build.0 = Debug|x64 + {DD8845F5-6D92-41D8-992A-593BC8DB9FF5}.Debug|x86.ActiveCfg = Debug|Win32 + {DD8845F5-6D92-41D8-992A-593BC8DB9FF5}.Debug|x86.Build.0 = Debug|Win32 + {DD8845F5-6D92-41D8-992A-593BC8DB9FF5}.Release|x64.ActiveCfg = Release|x64 + {DD8845F5-6D92-41D8-992A-593BC8DB9FF5}.Release|x64.Build.0 = Release|x64 + {DD8845F5-6D92-41D8-992A-593BC8DB9FF5}.Release|x86.ActiveCfg = Release|Win32 + {DD8845F5-6D92-41D8-992A-593BC8DB9FF5}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ipc/3rdparty/lib/ipc.lib b/ipc/3rdparty/lib/ipc.lib index 08b5007..e02ca1e 100644 Binary files a/ipc/3rdparty/lib/ipc.lib and b/ipc/3rdparty/lib/ipc.lib differ diff --git a/ipc/3rdparty/lib/ipc_o.lib b/ipc/3rdparty/lib/ipc_o.lib deleted file mode 100644 index aaf8557..0000000 Binary files a/ipc/3rdparty/lib/ipc_o.lib and /dev/null differ diff --git a/ipc/3rdparty/lib/ipcd.lib b/ipc/3rdparty/lib/ipcd.lib index 3b74f95..7db619a 100644 Binary files a/ipc/3rdparty/lib/ipcd.lib and b/ipc/3rdparty/lib/ipcd.lib differ diff --git a/ipc/3rdparty/lib/ipcd.pdb b/ipc/3rdparty/lib/ipcd.pdb index 0b17c10..ae32c7d 100644 Binary files a/ipc/3rdparty/lib/ipcd.pdb and b/ipc/3rdparty/lib/ipcd.pdb differ diff --git a/ipc/Ipc.cpp b/ipc/Ipc.cpp index 59a995d..8286694 100644 --- a/ipc/Ipc.cpp +++ b/ipc/Ipc.cpp @@ -16,7 +16,7 @@ Ipc::Ipc(const char* reader_name, const char* writer_name) noexcept : reader_name_(reader_name) , writer_name_(writer_name) { sender_ = std::make_unique(reader_name_.c_str(), ipc::sender); - printf("%s, %s", reader_name, writer_name); + fprintf(stderr, "%s, %s\n", reader_name, writer_name); } Ipc::~Ipc() { @@ -58,6 +58,14 @@ bool Ipc::send(const char* data, unsigned int size) { return sender_->send(data, size); } +void Ipc::reConnect() { + sender_->reconnect(ipc::sender); + if (receiver_) { + receiver_->disconnect(); + receiver_->reconnect(ipc::receiver); + } +} + void Ipc::registReadCallback(const std::shared_ptr& reader) { std::lock_guard lock(mutex_); diff --git a/ipc/Ipc.h b/ipc/Ipc.h index 08c50da..16775ff 100644 --- a/ipc/Ipc.h +++ b/ipc/Ipc.h @@ -18,6 +18,7 @@ public: bool listen(); void stop(); bool send(const char* data, unsigned int size); + void reConnect(); void registReadCallback(const std::shared_ptr& reader); void unregistReadCallback(const std::shared_ptr& reader); diff --git a/ipc/include/ipclib.h b/ipc/include/ipclib.h index 5ea7033..b268d70 100644 --- a/ipc/include/ipclib.h +++ b/ipc/include/ipclib.h @@ -12,6 +12,7 @@ extern "C" { IPC_EXPORT bool __stdcall initialize(const char* sender_name, const char* receiver_name); IPC_EXPORT void __stdcall uninitialize(); + IPC_EXPORT void __stdcall reConnect(); IPC_EXPORT bool __stdcall listen(); IPC_EXPORT bool __stdcall send(const char* data, unsigned int size); IPC_EXPORT bool __stdcall setReaderCallback(ReaderCallbackFunc callback); diff --git a/ipc/ipc.vcxproj b/ipc/ipc.vcxproj new file mode 100644 index 0000000..78aa121 --- /dev/null +++ b/ipc/ipc.vcxproj @@ -0,0 +1,149 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {dd8845f5-6d92-41d8-992a-593bc8db9ff5} + ipc + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;WIN32;_IPC_EXPORT_;%(PreprocessorDefinitions) + true + D:\Learn\ipc\ipc\3rdparty\include;%(AdditionalIncludeDirectories) + + + Console + true + D:\Learn\ipc\ipc\3rdparty\lib;%(AdditionalLibraryDirectories) + ipcd.lib;%(AdditionalDependencies) + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;WIN32;_IPC_EXPORT_;%(PreprocessorDefinitions) + true + D:\Learn\ipc\ipc\3rdparty\include;%(AdditionalIncludeDirectories) + MultiThreadedDLL + + + Console + true + true + true + D:\Learn\ipc\ipc\3rdparty\lib;%(AdditionalLibraryDirectories) + ipc.lib;%(AdditionalDependencies) + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ipc/ipclib.cpp b/ipc/ipclib.cpp index 69de21f..e357b15 100644 --- a/ipc/ipclib.cpp +++ b/ipc/ipclib.cpp @@ -48,6 +48,11 @@ bool __stdcall initialize(const char* sender_name, const char* receiver_name) { g_ipc.reset(); } + void __stdcall reConnect() { + assert(g_ipc); + return g_ipc->reConnect(); + } + bool __stdcall listen() { assert(g_ipc); return g_ipc->listen(); diff --git a/x64/Debug/ipc.dll b/x64/Debug/ipc.dll deleted file mode 100644 index c04cef6..0000000 Binary files a/x64/Debug/ipc.dll and /dev/null differ diff --git a/x64/Debug/ipc.exp b/x64/Debug/ipc.exp deleted file mode 100644 index 965c02b..0000000 Binary files a/x64/Debug/ipc.exp and /dev/null differ diff --git a/x64/Debug/ipc.lib b/x64/Debug/ipc.lib deleted file mode 100644 index af8ae14..0000000 Binary files a/x64/Debug/ipc.lib and /dev/null differ diff --git a/x64/Debug/ipc.pdb b/x64/Debug/ipc.pdb deleted file mode 100644 index 8846633..0000000 Binary files a/x64/Debug/ipc.pdb and /dev/null differ diff --git a/x64/Debug/ipcd.dll b/x64/Debug/ipcd.dll deleted file mode 100644 index 35593b9..0000000 Binary files a/x64/Debug/ipcd.dll and /dev/null differ diff --git a/x64/Debug/ipcd.exp b/x64/Debug/ipcd.exp deleted file mode 100644 index a613c34..0000000 Binary files a/x64/Debug/ipcd.exp and /dev/null differ diff --git a/x64/Debug/ipcd.lib b/x64/Debug/ipcd.lib deleted file mode 100644 index 203a7c9..0000000 Binary files a/x64/Debug/ipcd.lib and /dev/null differ diff --git a/x64/Debug/ipcd.pdb b/x64/Debug/ipcd.pdb deleted file mode 100644 index f069380..0000000 Binary files a/x64/Debug/ipcd.pdb and /dev/null differ diff --git a/x64/Release/ipc.dll b/x64/Release/ipc.dll index 5318977..a12ee07 100644 Binary files a/x64/Release/ipc.dll and b/x64/Release/ipc.dll differ diff --git a/x64/Release/ipc.exp b/x64/Release/ipc.exp index 5ac184f..433ba89 100644 Binary files a/x64/Release/ipc.exp and b/x64/Release/ipc.exp differ diff --git a/x64/Release/ipc.lib b/x64/Release/ipc.lib index e32c382..0816970 100644 Binary files a/x64/Release/ipc.lib and b/x64/Release/ipc.lib differ diff --git a/x64/Release/ipc.pdb b/x64/Release/ipc.pdb index 241f78b..83c7e03 100644 Binary files a/x64/Release/ipc.pdb and b/x64/Release/ipc.pdb differ diff --git a/x64/Release/ipc_test.dll b/x64/Release/ipc_test.dll deleted file mode 100644 index 278db89..0000000 Binary files a/x64/Release/ipc_test.dll and /dev/null differ diff --git a/x64/Release/ipc_test.exp b/x64/Release/ipc_test.exp deleted file mode 100644 index e479e09..0000000 Binary files a/x64/Release/ipc_test.exp and /dev/null differ diff --git a/x64/Release/ipc_test.lib b/x64/Release/ipc_test.lib deleted file mode 100644 index bc0413c..0000000 Binary files a/x64/Release/ipc_test.lib and /dev/null differ diff --git a/x64/Release/ipc_test.pdb b/x64/Release/ipc_test.pdb deleted file mode 100644 index fbbdd6b..0000000 Binary files a/x64/Release/ipc_test.pdb and /dev/null differ