vcpkg Mac: rpclib libraries

#rnx
#rb trivial
#preflight 61f03c7cbe0f0e0a620a7772

[CL 18725608 by Joe Kirchoff in ue5-main branch]
This commit is contained in:
Joe Kirchoff
2022-01-25 13:35:41 -05:00
parent 2d49f890ea
commit 4947ce36c9
697 changed files with 96612 additions and 22 deletions
+24 -17
View File
@@ -84786,7 +84786,7 @@
<File Name="Engine/Source/ThirdParty/vcpkg/LinuxArm64/aarch64-unknown-linux-gnueabi/rpclib_aarch64-unknown-linux-gnueabi/lib/pkgconfig/rpclib.pc" Hash="9073c26a780c2371804cc08f688f604f57ebbdbd" />
<File Name="Engine/Source/ThirdParty/vcpkg/LinuxArm64/aarch64-unknown-linux-gnueabi/rpclib_aarch64-unknown-linux-gnueabi/share/rpclib/copyright" Hash="72e316696fa4cf6255f81282dd876cc6a3134846" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/BUILD_INFO" Hash="3f8d433dc8cc8e2aaac1538e69d044e218273a87" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/CONTROL" Hash="08a0c5f7e6666935b0200d7b68d611a364bb92aa" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/CONTROL" Hash="f66d7758fec665866bba4050b1c19da95e348f8f" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/include/google/protobuf/any.proto" Hash="a210a3dd1c85b2b252a03f34789d82d4ab840873" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/include/google/protobuf/api.proto" Hash="68d8bad06a3fba48bf639cf800501048bf4289c0" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/include/google/protobuf/compiler/plugin.proto" Hash="2d84b3bdf167dce9d1c82d30fa6f5ff9d4ca90a0" />
@@ -84799,18 +84799,23 @@
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/include/google/protobuf/timestamp.proto" Hash="869c10ca7ceb09cfe965c4da5d09c4fd1fcb9f6d" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/include/google/protobuf/type.proto" Hash="e2b34b908bbc906200c28d2ed2f78fe28db8c955" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/include/google/protobuf/wrappers.proto" Hash="89a42d15511e65db631a35172161c38fab038b9b" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/lib/libprotobuf-lite.a" Hash="18959c06fb700ec682b406a030c9aef909b2252c" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/lib/libprotobuf.a" Hash="d14ae0a304a21479f7f42cd80497356110bddd2c" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/lib/libprotoc.a" Hash="046abdc66f5c5a582bcc8548ee040517179bc7ef" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/lib/libprotobuf-lite.a" Hash="0ddbd63a476819f62f338a72623d7d7201799225" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/lib/libprotobuf.a" Hash="14f7e086a60e5f4d6168a64b2650c0aad5ba15e8" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/lib/libprotoc.a" Hash="17b7996fe3a7fa8480b290a421d21e24d74c56d3" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/lib/pkgconfig/protobuf-lite.pc" Hash="66dcaa3749f0be7c570f6f2d1c900a08b15935b5" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/lib/pkgconfig/protobuf.pc" Hash="58b99c8cc318290ff884b4ebbb26f7d0defdfa55" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/share/protobuf/copyright" Hash="57919d5bf210193d05ba496a870832582f475559" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/tools/protobuf/protoc" Hash="df7be8020b5371b49379e2e0824af03853aff4a1" IsExecutable="true" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/protobuf_x86_64-osx/tools/protobuf/protoc-3.15.8.0" Hash="df7be8020b5371b49379e2e0824af03853aff4a1" IsExecutable="true" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/re2_x86_64-osx/BUILD_INFO" Hash="3f8d433dc8cc8e2aaac1538e69d044e218273a87" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/re2_x86_64-osx/CONTROL" Hash="d20b3321ca7565a311b199e57b0e031bfd58f605" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/re2_x86_64-osx/lib/libre2.a" Hash="481219488a213c367e9840d0ed5d00a539437418" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/re2_x86_64-osx/CONTROL" Hash="e4626471d7636020505aac68c5c2d45213762900" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/re2_x86_64-osx/lib/libre2.a" Hash="0246733a6884f5dfeb4695f05943f346ce63c543" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/re2_x86_64-osx/share/re2/copyright" Hash="63c3223a2f6e1235b376ffaeb298c5faaf52b7c2" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/rpclib_x86_64-osx/BUILD_INFO" Hash="3f8d433dc8cc8e2aaac1538e69d044e218273a87" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/rpclib_x86_64-osx/CONTROL" Hash="0178da8ca9b1360cc6cbf5a1be610f50098819be" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/rpclib_x86_64-osx/lib/librpc.a" Hash="f266fc59c4cadb39015777a12ddceddd5187ca8d" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/rpclib_x86_64-osx/lib/pkgconfig/rpclib.pc" Hash="565b53cce0808c68eefae3481a58f3ff07643939" />
<File Name="Engine/Source/ThirdParty/vcpkg/Mac/x86_64-osx/rpclib_x86_64-osx/share/rpclib/copyright" Hash="72e316696fa4cf6255f81282dd876cc6a3134846" />
<File Name="Engine/Source/ThirdParty/vcpkg/Win64/x64-windows-static-md-v142/protobuf_x64-windows-static-md-v142/BUILD_INFO" Hash="3f8d433dc8cc8e2aaac1538e69d044e218273a87" />
<File Name="Engine/Source/ThirdParty/vcpkg/Win64/x64-windows-static-md-v142/protobuf_x64-windows-static-md-v142/CONTROL" Hash="f71698fc2a196f482e54fd8535a61658320df122" />
<File Name="Engine/Source/ThirdParty/vcpkg/Win64/x64-windows-static-md-v142/protobuf_x64-windows-static-md-v142/include/google/protobuf/any.proto" Hash="a210a3dd1c85b2b252a03f34789d82d4ab840873" />
@@ -86946,6 +86951,7 @@
<Blob Hash="017272262a89d9e2899ccf4c86c5a9b6731e6fe7" Size="147" PackHash="bf6ccb8b8cb10a5dfa1a4c6e7c988496d81ee69d" PackOffset="1590623" />
<Blob Hash="0173e6e889ac8f08fd1766bd4af10e85992870ea" Size="5068966" PackHash="9320016c7c1419a5621e462af7b3e27a1f60d6a3" PackOffset="8" />
<Blob Hash="0175c8659b958ad14b8a0913514f5c87a85fc4c0" Size="3099" PackHash="13b9f0b3ca06fc507e76eba3f12d38772586851a" PackOffset="575640" />
<Blob Hash="0178da8ca9b1360cc6cbf5a1be610f50098819be" Size="273" PackHash="754d9febd28de888d44e4c967264e993f23e575f" PackOffset="1694493" />
<Blob Hash="0178f24611094f5d3f501e7febe1cec6f2ab6300" Size="24357" PackHash="35e7e010a4560e318ff4e936f34f06532233119b" PackOffset="1576516" />
<Blob Hash="0178fc6d6458d137b111e3b04affe63127b99958" Size="508080" PackHash="808a3d30e8871dd5196b17b0772eb7b612ab6383" PackOffset="255611" />
<Blob Hash="01791f9c0f95f16bfb84f1c183284a9600b68275" Size="21523" PackHash="a05e5449e479953c4c8e016760f4275a502057fd" PackOffset="2066877" />
@@ -87127,6 +87133,7 @@
<Blob Hash="0241a845b8e88e4bb8125377d5044818da798eea" Size="712" PackHash="fd51251121c1174363a68b1c2ad0b6f966bf9029" PackOffset="8" />
<Blob Hash="024297bdcfdeebf7594eeb202d5809f7cc9da1e9" Size="1095590" PackHash="f9120573f3609bb14ae9a758762c56dbd6fed948" PackOffset="8" />
<Blob Hash="0244f4635a36dc99cdcf65c024ea2c23175c83e0" Size="44089" PackHash="cbafcbe19329c889151577a995439d8c09b69f61" PackOffset="1118256" />
<Blob Hash="0246733a6884f5dfeb4695f05943f346ce63c543" Size="801664" PackHash="754d9febd28de888d44e4c967264e993f23e575f" PackOffset="892829" />
<Blob Hash="0247700b483d00db602295e167b613c9f06c739f" Size="27037764" PackHash="5f7234baa16f3e63d04ff6b333c8963b4ee2593f" PackOffset="8" />
<Blob Hash="0247f036ffdeb5b746370db08558d7b919722e47" Size="244698" PackHash="801295549915c66473e6cd436dc1623ad50a6868" PackOffset="544932" />
<Blob Hash="024946ba925b107efaa0788a1428c5f05e267eb3" Size="47724" PackHash="b2546cec9ff42b47632d72e5a083295011c8037f" PackOffset="8" />
@@ -87575,7 +87582,6 @@
<Blob Hash="04696bbefdc04f33fe00fd18a9117a7f84bf4d40" Size="16" PackHash="35ae7eab1d3f546036975961c0d140c650072f63" PackOffset="2096772" />
<Blob Hash="0469f805f5e0062fcfcd4c674554fd04c2fa60c8" Size="33608" PackHash="1356646e356a511f7a00dbedbbd67d1d541c3006" PackOffset="1286514" />
<Blob Hash="046a194d9182012e4b8ddd849c92eea6db9a601b" Size="16329" PackHash="e4792e44f96d7c87a9ecaa4118e61ac91e60b9a6" PackOffset="511358" />
<Blob Hash="046abdc66f5c5a582bcc8548ee040517179bc7ef" Size="4394768" PackHash="320701264189aa64ea69242571e54cc7fe0fb377" PackOffset="8" />
<Blob Hash="046b091eb926f99f65be418cc917e9dd204962bc" Size="7168" PackHash="f07de1bbf2cdb527d64b70ebbf6b56e2cc684fd0" PackOffset="2018464" />
<Blob Hash="046d48e466805f063167594e2812a1a2a89357ca" Size="6564" PackHash="2bdc4647ddd822ea2758f782f98d692d70a9cb0c" PackOffset="1661351" />
<Blob Hash="046e551577029ad2d98208628f79b7c6963a1ebf" Size="831" PackHash="c7a410dea128511415ba77d4b599d33e0e01ea2f" PackOffset="1299736" />
@@ -88498,7 +88504,6 @@
<Blob Hash="089c8d961dd410dcd87c05c593f12d2ecf4a5993" Size="6156" PackHash="1a516c559dc42691267538ebc20032ea3d16c528" PackOffset="201437" />
<Blob Hash="089d7512d2e628eacc73f600e79a1ffebcaf18f6" Size="1361" PackHash="bf6ccb8b8cb10a5dfa1a4c6e7c988496d81ee69d" PackOffset="762490" />
<Blob Hash="089e81793292485075c360cb7206b35abe44a19d" Size="100" PackHash="a44dc4b35972b9dad88e2ad3e0a47c8db7399c27" PackOffset="594056" />
<Blob Hash="08a0c5f7e6666935b0200d7b68d611a364bb92aa" Size="249" PackHash="0726293a09e7b63cfa7a765d98eec95a5f94f5b9" PackOffset="1643545" />
<Blob Hash="08a0d5b97018ca83c464e4376350a8e6dc62e5fd" Size="50452" PackHash="d5d7b9a0d4bfafd9d9e63488fbc7e75209699fd9" PackOffset="1451080" />
<Blob Hash="08a0fb71f715b7cb1bc5f8a63f1913adb4e98feb" Size="164701" PackHash="84e9c61cffc9ff452fea92700437fd1f3c829ec8" PackOffset="547306" />
<Blob Hash="08a11240a3d2da942ab9eed08e60ea7a75a32bb2" Size="56631" PackHash="d4dc876e9592d37f8d9500f144a7e1b82d30a952" PackOffset="384267" />
@@ -89637,6 +89642,7 @@
<Blob Hash="0dda24e081d41023627790d123e7e1817d34ee53" Size="12800" PackHash="fe6078495c852c69d53e6d83466c7cb7ba20a43b" PackOffset="2057080" />
<Blob Hash="0ddac67bb3788ec18a629e47fa71688fcae4de49" Size="1580" PackHash="0a79b68fc843ff09e7eeffe5fafe58c90b6ece69" PackOffset="191188" />
<Blob Hash="0ddb9a49cb83ddf2396b2eca85093260710496c2" Size="847" PackHash="f25f5da5b49f7c1000f7e4195d4038bda16e5c38" PackOffset="1670693" />
<Blob Hash="0ddbd63a476819f62f338a72623d7d7201799225" Size="892264" PackHash="754d9febd28de888d44e4c967264e993f23e575f" PackOffset="257" />
<Blob Hash="0ddc40da95a07489c132905032b6078b8bc72446" Size="971" PackHash="6abf50a703ca3a21c3a9b72e26e2e254a3796b2f" PackOffset="1743101" />
<Blob Hash="0dde31e563ec5771542319449401ec0442297033" Size="39544" PackHash="6b6ea1539e3e10b995b117a201cd14188d7361cf" PackOffset="548019" />
<Blob Hash="0dded9e3aaf49f1f1c428cc1f24263937f511b01" Size="1200" PackHash="642c1881a26196aef2a8440b10c79fc89ef891ef" PackOffset="451860" />
@@ -91152,6 +91158,7 @@
<Blob Hash="14f6a099843170c1cf485a54ea1abec71d6d8b6c" Size="2688" PackHash="165dd84e92205b44c324acdc0b7686b756e1916c" PackOffset="21031" />
<Blob Hash="14f6fe1e6c2eb990c84134ec9e43a3df29f51f6b" Size="112" PackHash="6052368b140ef09eef836a223997cdd9799c5f54" PackOffset="628737" />
<Blob Hash="14f7b816d15b205ec05b8b4cade124841b18b625" Size="426413" PackHash="529198f2ee46d987aeed3fff1a66a0ba7ab79765" PackOffset="943166" />
<Blob Hash="14f7e086a60e5f4d6168a64b2650c0aad5ba15e8" Size="4335472" PackHash="11141128e3b05bf6e8be2a076605db09cfc35325" PackOffset="8" />
<Blob Hash="14fbb5b437f8b99ae41a28d6e9004e2a0038c59b" Size="4366" PackHash="8cc6c4610b9b93d7ae65c41f512334bab8529cd0" PackOffset="2050456" />
<Blob Hash="14ff2242eb58ded4ae8da0315f21ad1894cc848d" Size="80" PackHash="375fc7daadf4e7c57ed3fb499492997b710a6201" PackOffset="1609376" />
<Blob Hash="14ffe2790eed1923f68583bfa2a52eae290a383a" Size="22384" PackHash="a44dc4b35972b9dad88e2ad3e0a47c8db7399c27" PackOffset="2038052" />
@@ -91708,6 +91715,7 @@
<Blob Hash="17b18bdb26b8a5850b81f03fc307fe847a577355" Size="30786" PackHash="d92803ee7914ca9b640df5b531045316c15e6a5a" PackOffset="2065416" />
<Blob Hash="17b1e78815e794f9f7886d24c69020f40fea814f" Size="21800" PackHash="0b0354a144c42e198af8c663b25efc247ab05985" PackOffset="1268304" />
<Blob Hash="17b62db1306e5efd8c55e6ee3d45f8da08c84aea" Size="48" PackHash="328be60319f9e08c3c125c4aea08b49af1c5d794" PackOffset="2043433" />
<Blob Hash="17b7996fe3a7fa8480b290a421d21e24d74c56d3" Size="4394768" PackHash="95b2b38b099eedc577bcb19648c3fa6cac02f244" PackOffset="8" />
<Blob Hash="17b84ba26622905c1132006498e7fb25af46a857" Size="66120" PackHash="84bf691606771eee36059b19cfd6ba40df0b3148" PackOffset="1570732" />
<Blob Hash="17b8c91e1149ed971963a51cb4e93e20603f34fc" Size="92" PackHash="16e421c9204b08586edd8de93b93b19fb10644ea" PackOffset="2026376" />
<Blob Hash="17ba9884816009663d2b482a7035f9bccf388c29" Size="76288" PackHash="bcdb28c5a19a8d3ac18665c8085232556e5c4f77" PackOffset="890376" />
@@ -91872,7 +91880,6 @@
<Blob Hash="18945d0d724dffb6a1175b88e14a8445669fea52" Size="37498" PackHash="721ae0e68b5b71aea53f439df77593a377d1587e" PackOffset="455036" />
<Blob Hash="1894bc5df9a681c48a5e79f5089e02f5be1680ff" Size="30233" PackHash="02b7d31ac32c2f3c4c7a387ddf6bce216cf1a0c4" PackOffset="2050112" />
<Blob Hash="1895388a7ca2c0ccf1b323d006fd39319773481d" Size="325" PackHash="5baa89044410bbe3f334f24d20d3897a716352b8" PackOffset="6407" />
<Blob Hash="18959c06fb700ec682b406a030c9aef909b2252c" Size="892264" PackHash="1287d278238b3a9843be1c0445a5fb606b44b14b" PackOffset="982112" />
<Blob Hash="18960a240d8f39bc18c6f650e8654cf3d7453a71" Size="6525" PackHash="ee7b63b8d77d78606fc9cf192a1572a60298e256" PackOffset="8" />
<Blob Hash="18961dd7399166616e15a83a496b1837130dd5ae" Size="1098" PackHash="b127bfae1b1e0cda9df90f4b3d71b7d1cceb3363" PackOffset="205694" />
<Blob Hash="18978b88eca4eb1717b1735e5a57c76934c1944a" Size="144811" PackHash="2ead84d47ec7a9474d3627560e9cc0c8f6e70503" PackOffset="711843" />
@@ -102259,7 +102266,6 @@
<Blob Hash="480ef1260747baf4011ea225a081db0cafd6000c" Size="142208" PackHash="4ed22fa695e8c72a39e83797d490149ce44b900d" PackOffset="1069912" />
<Blob Hash="480fac02fc608304435d0b4a4b858374145b80cf" Size="2858538" PackHash="4de19ef682be73fd5616348eafabda7e5b5c2614" PackOffset="8" />
<Blob Hash="481215485f76d6252010a21493872ad8af540aaa" Size="623" PackHash="c9141a8706b7eb2ff946f0351d5d52064ac8ba83" PackOffset="118538" />
<Blob Hash="481219488a213c367e9840d0ed5d00a539437418" Size="801664" PackHash="62f315668ce54f5ad1accd7675abaa7cc00bc6ee" PackOffset="8" />
<Blob Hash="4813f7c2dcbbf3f4fbcb7d81629a7f3f7464776d" Size="106151" PackHash="8e9f4f064b2f6f45f646dd4cf70c44afbf5623e6" PackOffset="1293296" />
<Blob Hash="48144183673be85b1b7582bdf03360187fc570a1" Size="3264" PackHash="cca5a69a24718ef21c5a46099acf07d223f787fd" PackOffset="969174" />
<Blob Hash="481492854be56206034b8f09ea4fec3565802779" Size="1358543" PackHash="5a4c5b85fb81b291e8fb6f7c37c0b152f8aeb1bb" PackOffset="626365" />
@@ -105351,6 +105357,7 @@
<Blob Hash="56590b91827a6fd5a09c54b6a8aff4f1b1c40bad" Size="5531" PackHash="89550f66a2a48a9f1b9089703e9b33eb14a23ae5" PackOffset="1450402" />
<Blob Hash="5659f236f56d05c86a6bae27b71011b66a46466b" Size="51712" PackHash="66fce169b160f3c4cb868bda8653b37692b5692b" PackOffset="1655816" />
<Blob Hash="565a055bbfdb156ee4178d2bb96c2548a433f731" Size="17224" PackHash="59a22d89e715263368cd4cef014c11cb8f400878" PackOffset="145328" />
<Blob Hash="565b53cce0808c68eefae3481a58f3ff07643939" Size="630" PackHash="754d9febd28de888d44e4c967264e993f23e575f" PackOffset="1694766" />
<Blob Hash="565f0a59f857f2ef273f4c61958e4e6ef5c292f0" Size="128278" PackHash="a79ebc6089dc5dd99e914926e7b225163b6c83e2" PackOffset="1901381" />
<Blob Hash="565fb70fe8dc9cfcdda961ce59ea666a05c6c518" Size="5454" PackHash="60268517ce102b3ab96039800667a78e6d6c5f5e" PackOffset="1418747" />
<Blob Hash="5660a205d6c75e33f2136ba653a74a117d758ccd" Size="18896" PackHash="2f143d8520d94bbf2cb250b35a8f79e3d3e8572c" PackOffset="1474528" />
@@ -132336,7 +132343,6 @@
<Blob Hash="d146a0d718fabab053f9f54a8dcb21a3ddf6d3dc" Size="1341" PackHash="e231285551c0d996e9eadb28ed5cf32e68b8e87f" PackOffset="8" />
<Blob Hash="d147f2b05e2ba4dd26bf45700ee89658c84f218b" Size="7954770" PackHash="5c1ba1c4308f53972cd260f2a5bdb00deb04384b" PackOffset="8" />
<Blob Hash="d1491922db394b3b0fdbd18c813c918451ec472d" Size="1580" PackHash="5cb17f3f8319e59e99cf89cdd430848948628eee" PackOffset="377272" />
<Blob Hash="d14ae0a304a21479f7f42cd80497356110bddd2c" Size="4335472" PackHash="3b00750b34d269cdb809201eb3ad1eb5466eee76" PackOffset="8" />
<Blob Hash="d14aea84998986c3bf80efeb19958715cd301709" Size="4036" PackHash="cca5a69a24718ef21c5a46099acf07d223f787fd" PackOffset="1007630" />
<Blob Hash="d14b180a4cc3c85e9f5285652d5080b7c8c860e7" Size="237" PackHash="d652e29bbcdfe5ceb4bacd6a4a6407e10c463129" PackOffset="754845" />
<Blob Hash="d14d7a07334d47a19590ff30df2e729be52007bd" Size="12114" PackHash="80aba82ae1c5a511f4ec1924f8f568af0c128b27" PackOffset="1099085" />
@@ -132494,7 +132500,6 @@
<Blob Hash="d2067610d89477411deec02c1f19649b8f9a34bc" Size="5294" PackHash="6b990f3e47bfc2ed0ca6a8c68c9188a6788110bd" PackOffset="1424940" />
<Blob Hash="d208795a5962074963fce5ae1b265f9a2c5b0ed7" Size="8574733" PackHash="7a12a37e6e28c87b8ede0c6c4406770a3f5d1787" PackOffset="8" />
<Blob Hash="d20a7bf98f8654e8f730b561e1a2a4e46dff1aa5" Size="366038" PackHash="c31dad3d31a5149cdda3ad8c50cf5d61872f2d61" PackOffset="479699" />
<Blob Hash="d20b3321ca7565a311b199e57b0e031bfd58f605" Size="308" PackHash="0726293a09e7b63cfa7a765d98eec95a5f94f5b9" PackOffset="1643794" />
<Blob Hash="d20de2103a2d2553e14c1c03410df5d4dd369b81" Size="3596" PackHash="c9141a8706b7eb2ff946f0351d5d52064ac8ba83" PackOffset="91471" />
<Blob Hash="d2110514c346bf8b85bd64487f9b5303b39949fe" Size="8695" PackHash="cdd5590c60fc38763cdfd13c7119aee837955280" PackOffset="2077608" />
<Blob Hash="d2113a64f57075b3ed37f115212cf3fe935618db" Size="29184" PackHash="0cc085b29c8c84e99545e15d162a4a317aec5cae" PackOffset="68104" />
@@ -136536,6 +136541,7 @@
<Blob Hash="e46093a5ce363477250555eb33f2e585709f7820" Size="6416" PackHash="80aba82ae1c5a511f4ec1924f8f568af0c128b27" PackOffset="409839" />
<Blob Hash="e46165d6b96aa73747452ec82588a0b6ea337b6b" Size="272" PackHash="740468294ff5dc113d230e62ae67c145d10bfb6c" PackOffset="823933" />
<Blob Hash="e46209af4b9378f43ccfc9a6b8a308a7356f9221" Size="549" PackHash="cd7b779a4de3c2a568bb9409c695d617db1bfc8a" PackOffset="107760" />
<Blob Hash="e4626471d7636020505aac68c5c2d45213762900" Size="308" PackHash="754d9febd28de888d44e4c967264e993f23e575f" PackOffset="892521" />
<Blob Hash="e46265e28426fa1d256e1c1f4a092ba0a02ea1cc" Size="371" PackHash="e6244a09453241c5b5088aacb26fd5deb2e63d5d" PackOffset="8" />
<Blob Hash="e462b35e070bcd1525794401b7544c62e1693734" Size="1820" PackHash="ff5dc842a06fb1fd8568383d211bb331bcfd0e04" PackOffset="1624852" />
<Blob Hash="e466ce9edafc0442dbc3c6e22decd34ea51289f0" Size="925808" PackHash="a90107e741690b356d1d1efa633448b63a4603f1" PackOffset="739616" />
@@ -139621,6 +139627,7 @@
<Blob Hash="f2629b64e5e25d87d124c5c98788fa5f1f16b3a6" Size="6227" PackHash="a53ace70829094b1d9b28362c5064e1dad0adf72" PackOffset="72755" />
<Blob Hash="f2642b4a401bdf0ff17bbfe7e43ddddac1992def" Size="28127" PackHash="0bed7915ec1a064ed5f5263ac2f7e5b8a9dfd775" PackOffset="8" />
<Blob Hash="f265ceb16c6352bbb4f880d5fd63dcd9b8519ca6" Size="14108" PackHash="6a15e6e47a10c1dc80c27a80b5ac376ca60794c5" PackOffset="1851561" />
<Blob Hash="f266fc59c4cadb39015777a12ddceddd5187ca8d" Size="738728" PackHash="67c4f245e51691e7f5270b1a54e36c051c2aa071" PackOffset="8" />
<Blob Hash="f267671bf7a61ae8553cdbe5623d702bdc5e8ff8" Size="107464" PackHash="b2bf92f98dd94cf11348ae2d0835fa0d517dc1b6" PackOffset="980526" />
<Blob Hash="f26858e3d2fb928f39ca87cbb8446af099570cad" Size="1111" PackHash="7bef3b4a940848d82dfd45a21576016bcc3de743" PackOffset="1868858" />
<Blob Hash="f26b2332fa1037cb9b9e327e224f2559ab69991f" Size="5381" PackHash="740468294ff5dc113d230e62ae67c145d10bfb6c" PackOffset="806123" />
@@ -140443,6 +140450,7 @@
<Blob Hash="f6696bda3e049dd2726f0939001af455d27e67a1" Size="61128" PackHash="5435cf07dad1155ea3ddbd5178f3dd6013a507d8" PackOffset="565042" />
<Blob Hash="f66bfd5c902c4eec631bae66a6feb509ff0cd6ee" Size="34587" PackHash="6b990f3e47bfc2ed0ca6a8c68c9188a6788110bd" PackOffset="1037026" />
<Blob Hash="f66d211f1b9c8dc146627bd3eab63a7cc9d08eab" Size="168720" PackHash="450df66007edaad42f41b2818bc6316a4c4063a1" PackOffset="1669536" />
<Blob Hash="f66d7758fec665866bba4050b1c19da95e348f8f" Size="249" PackHash="754d9febd28de888d44e4c967264e993f23e575f" PackOffset="8" />
<Blob Hash="f66e4d5951b53d81dd0410e304df0d4ad5ea7253" Size="7400" PackHash="35e7e010a4560e318ff4e936f34f06532233119b" PackOffset="2006036" />
<Blob Hash="f66e8f8c806aa1e502da5571a6b5b88a320092a8" Size="589" PackHash="dd3879c8412ca5655fecfb160744dc2f1032689a" PackOffset="686842" />
<Blob Hash="f66fcac3870928eb088f64dae02d5199eee56699" Size="956" PackHash="c5ed1a3846b000e5b7e3701674ea0fd7cffe0c44" PackOffset="3575" />
@@ -142693,7 +142701,6 @@
<Pack Hash="070808461825eec7222431e9b3ea81fb7e43b80e" Size="86111106" CompressedSize="24397292" RemotePath="UnrealEngine-16920875" />
<Pack Hash="070a584ba2b07b0b82237724942cd64c4b915c0e" Size="1793316" CompressedSize="638694" RemotePath="UnrealEngine-12516944-91b9d7a76a79459f9ff20125ce42b4a9" />
<Pack Hash="07151427bab30bbe8a898fc3f58b207768ef5646" Size="724259" CompressedSize="335660" RemotePath="UnrealEngine-18197663" />
<Pack Hash="0726293a09e7b63cfa7a765d98eec95a5f94f5b9" Size="1931587" CompressedSize="639496" RemotePath="UnrealEngine-17545504" />
<Pack Hash="0730e40463c3bd9f97065b23c83a34134498d12b" Size="5547974" CompressedSize="1321317" RemotePath="UnrealEngine-18714465" />
<Pack Hash="073735d46c91cfe78e6839f2c9d919e57ffcf1a7" Size="7675838" CompressedSize="1350498" RemotePath="UnrealEngine-15805898" />
<Pack Hash="073acfa46d2d40e7c48aa38205f5f42d1e5d3cd6" Size="10551568" CompressedSize="1696234" RemotePath="UnrealEngine-17982379" />
@@ -142927,6 +142934,7 @@
<Pack Hash="1101044817de105d2acc04e5d4055ce48569b4d6" Size="762885" CompressedSize="457084" RemotePath="UnrealEngine-15418774" />
<Pack Hash="1105a88cab58d6c7ee304e842734086ca72fc6c2" Size="9217012" CompressedSize="6274239" RemotePath="UnrealEngine-9758241-387429607f4644429267bbf1cb567cb5" />
<Pack Hash="1111ec0a9830779550f1523f0b7ccf3dc84a0505" Size="17177728" CompressedSize="5435732" RemotePath="UnrealEngine-6550419-5b15c7c1f0a44c4f83c440737d93b283" />
<Pack Hash="11141128e3b05bf6e8be2a076605db09cfc35325" Size="4335480" CompressedSize="1221951" RemotePath="UnrealEngine-18725608" />
<Pack Hash="11154bca44b8892bf5ef39923d8a4bdee69d6b8e" Size="7566310" CompressedSize="1959415" RemotePath="UnrealEngine-6960242-9676469577454cfb88111175cb9c2bf5" />
<Pack Hash="111732cec55effd8d38eb846a42e46295a5d1bd0" Size="2089048" CompressedSize="348074" RemotePath="UnrealEngine-14538334-355ec935ee754c769e3ad8ffa5140ad9" />
<Pack Hash="1121f3877e4e87da7ef5991fba005f968fd1b459" Size="13500" CompressedSize="1845" RemotePath="UnrealEngine-16552922" />
@@ -142961,7 +142969,6 @@
<Pack Hash="126c1e4def384e0df01aa0f5564c7d86b3de6746" Size="2086948" CompressedSize="582406" RemotePath="UnrealEngine-14735479-9fa8b5ee734445f0a804316d62925c07" />
<Pack Hash="1276b9b77889117d6a6cd91c3196c89c546509e3" Size="2083216" CompressedSize="330079" RemotePath="UnrealEngine-17982379" />
<Pack Hash="12839381463da87a45cec5d858b806c67a30891f" Size="2074270" CompressedSize="916662" RemotePath="UnrealEngine-14621151-4bf56d823bda4ecfa033b926dd755e51" />
<Pack Hash="1287d278238b3a9843be1c0445a5fb606b44b14b" Size="1874376" CompressedSize="464405" RemotePath="UnrealEngine-17545504" />
<Pack Hash="1288a53ecd80c72ab1b2007cebb250cdc8e5b552" Size="2087546" CompressedSize="1871032" RemotePath="UnrealEngine-14323288-84477a83e8cd4032a90f54c441aeba9b" />
<Pack Hash="1299a5b03c50576726773a163638448674cf40a7" Size="2097158" CompressedSize="451436" RemotePath="UnrealEngine-14885582-734c7ec6587a42c8bca0afdbc35f8ef0" />
<Pack Hash="12ba38f03d99bc623fc57b344f61a5c54afbf8c3" Size="258568" CompressedSize="102338" RemotePath="UnrealEngine-17625701" />
@@ -143636,7 +143643,6 @@
<Pack Hash="31edcf3e1818598290696942183bac688c58e96d" Size="3126280" CompressedSize="1295906" RemotePath="UnrealEngine-15635368" />
<Pack Hash="3200a4e24a1534e06b0cf5396cbf93f392a1d395" Size="138038" CompressedSize="24145" RemotePath="UnrealEngine-16883769" />
<Pack Hash="3203b6518cbc950864cb16f3ef9a880c2001829d" Size="7204972" CompressedSize="2191085" RemotePath="UnrealEngine-7463552-c722bc60b8b24c9783f788a982f674de" />
<Pack Hash="320701264189aa64ea69242571e54cc7fe0fb377" Size="4394776" CompressedSize="1257260" RemotePath="UnrealEngine-17545504" />
<Pack Hash="321569d25fb51dd851c3659fddefc5c347722ce7" Size="728" CompressedSize="387" RemotePath="UnrealEngine-18417753" />
<Pack Hash="32241c05b742379b9b4dae59a4336e2c5702c951" Size="22375000" CompressedSize="3279779" RemotePath="UnrealEngine-17827394" />
<Pack Hash="323bbc5bb8cd11c7fdfaf4ca9ba94d645f82c969" Size="1670872" CompressedSize="1465025" RemotePath="UnrealEngine-16552645" />
@@ -143832,7 +143838,6 @@
<Pack Hash="3ac2318e60044a0702505ced96fc85465a45658a" Size="2096610" CompressedSize="1413451" RemotePath="UnrealEngine-18662557" />
<Pack Hash="3ac86c52d6917f734750e37ba4506f004709a31d" Size="36278" CompressedSize="6961" RemotePath="UnrealEngine-4266621-29c6db74509a4a439aa0fbb5d48738c5" />
<Pack Hash="3adcf0f9d343eda225c5833e0b4ed67415bb71d0" Size="420" CompressedSize="363" RemotePath="UnrealEngine-10496648-15797a6da48540a996893d8f82be9e95" />
<Pack Hash="3b00750b34d269cdb809201eb3ad1eb5466eee76" Size="4335480" CompressedSize="1221933" RemotePath="UnrealEngine-17545504" />
<Pack Hash="3b0e0c4bd52690f4741e854022821b13dce84e59" Size="2073640" CompressedSize="1955592" RemotePath="3121752-deea2c76617f4d9a81789452fc9e8bc9" />
<Pack Hash="3b139788d271a561268a0db10d6da1b0f54ab426" Size="102745244" CompressedSize="17852791" RemotePath="UnrealEngine-5711189-90391b3014da455db2b422c11a5e1a10" />
<Pack Hash="3b27ae3a4ec9b51755ba53dc0ef129e142083149" Size="5442188" CompressedSize="2069462" RemotePath="UnrealEngine-16305249" />
@@ -144764,7 +144769,6 @@
<Pack Hash="62e18e2b34d9ca5872cacacfd6eb9e94afd0eb2e" Size="2097147" CompressedSize="855123" RemotePath="2369826-2acd3c361c9d4a858bd63938a2ab980e" />
<Pack Hash="62e87936a6e239ad7b6aa49c650f2fb376e67e1c" Size="30948" CompressedSize="7780" RemotePath="UnrealEngine-16117130" />
<Pack Hash="62ecea64724cec248d7c9a6d60ca1493dcf76b98" Size="19243" CompressedSize="5646" RemotePath="UnrealEngine-4974556-04c30edd7588447ea3047761b8aa89e3" />
<Pack Hash="62f315668ce54f5ad1accd7675abaa7cc00bc6ee" Size="801672" CompressedSize="289277" RemotePath="UnrealEngine-17545504" />
<Pack Hash="63018425ff667731200cad0f49ac9bc311c54501" Size="2094838" CompressedSize="472899" RemotePath="UnrealEngine-16488106" />
<Pack Hash="6310106cdcf8e52eb32c40cea9fd3d310d7a19b9" Size="2105352" CompressedSize="865000" RemotePath="UnrealEngine-7235308-3ea1d61ea5264fd9a0aba5ac630f4e2a" />
<Pack Hash="6312b07a45ab64323f3504b1e4f16a7353d57913" Size="13275" CompressedSize="12888" RemotePath="UnrealEngine-6722146-99f7da088e3645be9fe781661794baa6" />
@@ -144860,6 +144864,7 @@
<Pack Hash="67891403a1fd05ecf48a6dcaa0ca2ce833fbfed6" Size="11041" CompressedSize="3197" RemotePath="UnrealEngine-16487752" />
<Pack Hash="67a88cc58134cd6f718cec10f6c24be5e7a300a5" Size="1357579" CompressedSize="247839" RemotePath="UnrealEngine-18286636" />
<Pack Hash="67b4bbec824e16518eda563856b2e9227f4ac096" Size="1977746" CompressedSize="558891" RemotePath="UnrealEngine-15635368" />
<Pack Hash="67c4f245e51691e7f5270b1a54e36c051c2aa071" Size="738736" CompressedSize="217687" RemotePath="UnrealEngine-18725608" />
<Pack Hash="67de6f6451471ad3bc9820bf8dba273692ed7052" Size="479833" CompressedSize="139364" RemotePath="UnrealEngine-7438705-71588ecffc0842b3aee8df2f7775d0b5" />
<Pack Hash="67e4696a66a655b1b0add1978ece76e426d71899" Size="2090398" CompressedSize="1704297" RemotePath="UnrealEngine-14070440-e8b86cad8dd646dbb8f5974769bae04b" />
<Pack Hash="67e8ce1ed5691ec4a3962083746efea1e4d90e8b" Size="8925192" CompressedSize="1872839" RemotePath="UnrealEngine-16494712" />
@@ -145172,6 +145177,7 @@
<Pack Hash="752095278cb199daa4f81cc8ed3a1c538853ec16" Size="4186" CompressedSize="943" RemotePath="UnrealEngine-15073394" />
<Pack Hash="752c76bf53e77123075ce47dc305647e0600cf72" Size="57298418" CompressedSize="13746136" RemotePath="UnrealEngine-8631456-1fddf7b3313a4cd884d511cd3e262db1" />
<Pack Hash="7548afc4c2883b199f6966a5a05442230505e1c6" Size="2096120" CompressedSize="932569" RemotePath="UnrealEngine-14689227" />
<Pack Hash="754d9febd28de888d44e4c967264e993f23e575f" Size="1695396" CompressedSize="514648" RemotePath="UnrealEngine-18725608" />
<Pack Hash="75531423ce0cc73fa66fcf79458c718cf4800c00" Size="15728" CompressedSize="1695" RemotePath="UnrealEngine-3932287-cd207d677fc84180862e5bc225ba7aa3" />
<Pack Hash="7574df8f60273f7e7be27c2d105bd1e5419cff6b" Size="10129" CompressedSize="4198" RemotePath="UnrealEngine-17887569" />
<Pack Hash="7580364e8379fdb2874a7f467c8cb7035c0d5fbf" Size="2097157" CompressedSize="531575" RemotePath="UnrealEngine-14687334" />
@@ -145915,6 +145921,7 @@
<Pack Hash="95a4a8214a3a1b8c9119b702530977dfceaa1972" Size="79747" CompressedSize="11638" RemotePath="UnrealEngine-15684147" />
<Pack Hash="95af043b1801335ad47167e3296191746282e7a7" Size="5592588" CompressedSize="1670210" RemotePath="UnrealEngine-6654056-657e01ec03a04bd4b0894946198ba2e1" />
<Pack Hash="95b0536ab3b1363ba1a78084b09438ceaf5e9b0e" Size="52583" CompressedSize="12159" RemotePath="UnrealEngine-12549885-3ea40b5981584b64a13234401ed709e7" />
<Pack Hash="95b2b38b099eedc577bcb19648c3fa6cac02f244" Size="4394776" CompressedSize="1257240" RemotePath="UnrealEngine-18725608" />
<Pack Hash="95ba4e8c79ab8077610e2cde76be6b82f2a8df7f" Size="33808866" CompressedSize="1644268" RemotePath="UnrealEngine-18719857" />
<Pack Hash="95c9f70b2a087fabde73d50408cdf43f650b8559" Size="2096654" CompressedSize="195460" RemotePath="UnrealEngine-4034515-6e277ad8b80c41eebf3eee96fcb8b44d" />
<Pack Hash="95d0963a2c6162d5e8d1131d4c5176f5452dcac5" Size="1046382" CompressedSize="962921" RemotePath="UnrealEngine-14343905-961034fe00ab4c338e5c4c075ebe0c42" />
@@ -9,7 +9,7 @@ post_build_checks 2
protobuf 91a23e5585671faee361a7fdc0bcbaf2a26b7af4
protobuf-targets-vcpkg-protoc.cmake 94d9a9ba775ef72a16d405adfbb18ab443d028b2
triplet x86_64-osx
triplet_abi 8e22c48540bc291e6a26de0af050e9a22201852a-e451ca57a4cf06ad4ff9f344057d3b1b21b1de70-e189ed6203a70f0b5c0bda99725cce063c1e8003
triplet_abi f4b834cdeb44d799af1808aa6c16ab7c22dbe4c3-e451ca57a4cf06ad4ff9f344057d3b1b21b1de70-e189ed6203a70f0b5c0bda99725cce063c1e8003
vcpkg-cmake-wrapper.cmake 03620a476676c9f9e7a1c8e3009bc26bacf23b2d
vcpkg.json 831e59c188d6d314ed484a6e852a6bf9778975bc
vcpkg_check_features b2db34f9bab33ea48dd361ac7e5110aeaaf57d1f
@@ -5,7 +5,7 @@ portfile.cmake 30c603cea3e99f0e29a9b5d697907632a37162ec
ports.cmake c969892a7210e71589dca21c1563c85b195a04bf
post_build_checks 2
triplet x86_64-osx
triplet_abi 8e22c48540bc291e6a26de0af050e9a22201852a-e451ca57a4cf06ad4ff9f344057d3b1b21b1de70-e189ed6203a70f0b5c0bda99725cce063c1e8003
triplet_abi f4b834cdeb44d799af1808aa6c16ab7c22dbe4c3-e451ca57a4cf06ad4ff9f344057d3b1b21b1de70-e189ed6203a70f0b5c0bda99725cce063c1e8003
vcpkg_configure_cmake 180d1983420a821c2c67715327ce3412f729df0f
vcpkg_copy_pdbs 0cb0d2876f7c892295cc0858271888bee1ebf0d2
vcpkg_fixup_cmake_targets c79f53b8dc6210dd530128359be5ec075ebe0c9b
@@ -0,0 +1,147 @@
#pragma once
#include <future>
#include <memory>
#include "nonstd/optional.hpp"
#include "rpc/config.h"
#include "rpc/detail/log.h"
#include "rpc/detail/pimpl.h"
#include "rpc/msgpack.hpp"
namespace rpc {
//! \brief Implements a client that connects to a msgpack-rpc server and is
//! able to call functions synchronously or asynchronously. This is the main
//! interfacing point for implementing client applications.
//!
//! Use this class to connect to msgpack-rpc servers and call their exposed
//! functions. This class supports calling functions synchronously and
//! asynchronously. When the client object is created, it initiates connecting
//! to the given server asynchronically and disconnects when it is destroyed.
class client {
public:
//! \brief Constructs a client.
//!
//! When a client is constructed, it initiates a connection
//! asynchronically. This means that it will not block while the connection
//! is established. However, when the first call is performed, it *might*
//! block if the connection was not already established.
//!
//! \param addr The address of the server to connect to. This might be an
//! IP address or a host name, too.
//! \param port The port on the server to connect to.
client(std::string const &addr, uint16_t port);
//! \cond DOXYGEN_SKIP
client(client const &) = delete;
//! \endcond
//! \brief Destructor.
//!
//! During destruction, the connection to the server is gracefully closed.
//! This means that any outstanding reads and writes are completed first.
~client();
//! \brief Calls a function with the given name and arguments (if any).
//!
//! \param func_name The name of the function to call on the server.
//! \param args A variable number of arguments to pass to the called
//! function.
//!
//! \tparam Args The types of the arguments. Each type in this parameter
//! pack have to be serializable by msgpack.
//!
//! \returns A RPCLIB_MSGPACK::object containing the result of the function (if
//! any). To obtain a typed value, use the msgpack API.
//!
//! \throws rpc::rpc_error if the server responds with an error.
template <typename... Args>
RPCLIB_MSGPACK::object_handle call(std::string const &func_name, Args... args);
//! \brief Calls a function asynchronously with the given name and
//! arguments.
//!
//! A call is performed asynchronously in the context of the client, i.e.
//! this is not to be confused with parallel execution on the server.
//! This function differs from `call` in that it does not wait for the
//! result of the function. Instead, it returns a std::future that
//! can be used to retrieve the result later.
//!
//! \param func_name The name of the function to call.
//! \param args The arguments to pass to the function.
//!
//! \tparam Args The types of the arguments.
//!
//! \returns A std::future, possibly holding a future result
//! (which is a RPCLIB_MSGPACK::object).
template <typename... Args>
std::future<RPCLIB_MSGPACK::object_handle> async_call(std::string const &func_name,
Args... args);
//! \brief Sends a notification with the given name and arguments (if any).
//!
//! Notifications are a special kind of calls. They can be used to notify
//! the server, while not expecting a response. In `rpclib` terminology,
//! a notification is like an `async_call` without a return value.
//!
//! \param func_name The name of the notification to call.
//! \param args The arguments to pass to the function.
//! \tparam Args THe types of the arguments.
//!
//! \note This function returns immediately (possibly before the
//! notification is written to the socket).
template <typename... Args>
void send(std::string const &func_name, Args... args);
//! \brief Returns the timeout setting of this client in milliseconds.
//!
//! The timeout is applied to synchronous calls. If the timeout expires
//! without receiving a response from the server, rpc::timeout exception
//! will be thrown.
//!
//! \note The timeout has no effect on async calls. For those,
//! the preferred timeout mechanism remains using std::future.
//!
//! The default value for timeout is 5000ms (5 seconds).
nonstd::optional<int64_t> get_timeout() const;
//! \brief Sets the timeout for synchronous calls. For more information,
//! see get_timeout().
void set_timeout(int64_t value);
//! \brief Clears the timeout for synchronous calls. For more information,
//! see get_timeout().
void clear_timeout();
//! \brief Enum representing the connection states of the client.
enum class connection_state { initial, connected, disconnected, reset };
//! \brief Returns the current connection state.
connection_state get_connection_state() const;
//! \brief Waits for the completion of all ongoing calls.
void wait_all_responses();
private:
//! \brief Type of a promise holding a future response.
using rsp_promise = std::promise<RPCLIB_MSGPACK::object_handle>;
enum class request_type { call = 0, notification = 2 };
void wait_conn();
void post(std::shared_ptr<RPCLIB_MSGPACK::sbuffer> buffer, int idx,
std::string const& func_name,
std::shared_ptr<rsp_promise> p);
void post(RPCLIB_MSGPACK::sbuffer *buffer);
int get_next_call_idx();
RPCLIB_NORETURN void throw_timeout(std::string const& func_name);
private:
static constexpr double buffer_grow_factor = 1.8;
RPCLIB_DECLARE_PIMPL()
};
}
#include "rpc/client.inl"
@@ -0,0 +1,66 @@
namespace rpc {
template <typename... Args>
RPCLIB_MSGPACK::object_handle client::call(std::string const &func_name,
Args... args) {
RPCLIB_CREATE_LOG_CHANNEL(client)
auto future = async_call(func_name, std::forward<Args>(args)...);
if (auto timeout = get_timeout()) {
auto wait_result = future.wait_for(std::chrono::milliseconds(*timeout));
if (wait_result == std::future_status::timeout) {
throw_timeout(func_name);
}
}
return future.get();
}
template <typename... Args>
std::future<RPCLIB_MSGPACK::object_handle>
client::async_call(std::string const &func_name, Args... args) {
RPCLIB_CREATE_LOG_CHANNEL(client)
wait_conn();
using RPCLIB_MSGPACK::object;
LOG_DEBUG("Calling {}", func_name);
auto args_obj = std::make_tuple(args...);
const int idx = get_next_call_idx();
auto call_obj =
std::make_tuple(static_cast<uint8_t>(client::request_type::call), idx,
func_name, args_obj);
auto buffer = std::make_shared<RPCLIB_MSGPACK::sbuffer>();
RPCLIB_MSGPACK::pack(*buffer, call_obj);
// TODO: Change to move semantics when asio starts supporting move-only
// handlers in post(). [sztomi, 2016-02-14]
auto p = std::make_shared<std::promise<RPCLIB_MSGPACK::object_handle>>();
auto ft = p->get_future();
post(buffer, idx, func_name, p);
return ft;
}
//! \brief Sends a notification with the given name and arguments (if any).
//! \param func_name The name of the notification to call.
//! \param args The arguments to pass to the function.
//! \note This function returns when the notification is written to the
//! socket.
//! \tparam Args THe types of the arguments.
template <typename... Args>
void client::send(std::string const &func_name, Args... args) {
RPCLIB_CREATE_LOG_CHANNEL(client)
LOG_DEBUG("Sending notification {}", func_name);
auto args_obj = std::make_tuple(args...);
auto call_obj = std::make_tuple(
static_cast<uint8_t>(client::request_type::notification), func_name,
args_obj);
auto buffer = new RPCLIB_MSGPACK::sbuffer;
RPCLIB_MSGPACK::pack(*buffer, call_obj);
post(buffer);
}
}
@@ -0,0 +1,20 @@
#pragma once
#ifndef COMPATIBILITY_H_PODKJ3
#define COMPATIBILITY_H_PODKJ3
#ifndef _MSC_VER
#define RPCLIB_NORETURN [[noreturn]]
#define RPCLIB_CONSTEXPR constexpr
#define RPCLIB_FINAL final
#else
#define RPCLIB_NORETURN __declspec(noreturn)
#define RPCLIB_CONSTEXPR const // bad replacement, but gets the job done
#define RPCLIB_FINAL
#endif // !_MSC_VER
#endif // COMPATIBILITY_H_PODKJ3
@@ -0,0 +1,38 @@
#pragma once
#ifndef CONFIG_H_L7IVDSPZ
#define CONFIG_H_L7IVDSPZ
#include <cstddef>
#include <cstdint>
#include "rpc/compatibility.h"
namespace rpc
{
using session_id_t = std::intptr_t;
//! \brief Constants used in the library
struct constants RPCLIB_FINAL {
static RPCLIB_CONSTEXPR std::size_t DEFAULT_BUFFER_SIZE = 1024 << 10;
static RPCLIB_CONSTEXPR std::uint16_t DEFAULT_PORT = 8080;
};
} /* rpc */
// This define allows the end user to replace the msgpack dependency.
// To do so, one has to delete the msgpack headers that are
// in the rpclib directory. The other messagepack headers don't
// need to be stored in place of the others. Finally, the RPCLIB_MSGPACK
// macro has to be changed to the namespace name that this new
// msgpack uses (usually "msgpack", unless it is changed manually)
#ifndef RPCLIB_MSGPACK
#define RPCLIB_MSGPACK clmdep_msgpack
#endif /* ifndef RPCLIB_MSGPACK */
#ifndef RPCLIB_CXX_STANDARD
#define RPCLIB_CXX_STANDARD 11
#endif
#endif /* end of include guard: CONFIG_H_L7IVDSPZ */
@@ -0,0 +1,26 @@
#pragma once
#ifndef ALL_H_H8MAAYCG
#define ALL_H_H8MAAYCG
#include "rpc/detail/invoke.h"
#include "rpc/detail/if.h"
#include "rpc/detail/bool.h"
namespace rpc {
namespace detail {
//! \brief This type can be used to check multiple conditions.
//! It will be true_type if all its arguments are true.
template <typename... T> struct all : true_ {};
template <typename H, typename... T>
struct all<H, T...>
: if_<H, all<T...>, false_> {};
}
}
#endif /* end of include guard: ALL_H_H8MAAYCG */
@@ -0,0 +1,21 @@
#pragma once
#ifndef ANY_H_4G3QUOAN
#define ANY_H_4G3QUOAN
#include "rpc/detail/invoke.h"
#include "rpc/detail/if.h"
#include "rpc/detail/bool.h"
namespace rpc {
namespace detail {
//! \brief Evaluates to true_type if any of its arguments is true_type.
template <typename... T> struct any : false_ {};
template <typename H, typename... T>
struct any<H, T...> : if_<H, true_, any<T...>> {};
}
}
#endif /* end of include guard: ANY_H_4G3QUOAN */
@@ -0,0 +1,99 @@
#pragma once
#ifndef ASYNC_WRITER_H_HQIRH28I
#define ASYNC_WRITER_H_HQIRH28I
#include "asio.hpp"
#include "rpc/msgpack.hpp"
#include <condition_variable>
#include <deque>
#include <memory>
#include <thread>
namespace rpc {
class client;
namespace detail {
//! \brief Common logic for classes that have a write queue with async writing.
class async_writer : public std::enable_shared_from_this<async_writer> {
public:
async_writer(RPCLIB_ASIO::io_service *io,
RPCLIB_ASIO::ip::tcp::socket socket)
: socket_(std::move(socket)), write_strand_(*io), exit_(false) {}
void do_write() {
if (exit_) {
return;
}
auto self(shared_from_this());
auto &item = write_queue_.front();
// the data in item remains valid until the handler is called
// since it will still be in the queue physically until then.
RPCLIB_ASIO::async_write(
socket_, RPCLIB_ASIO::buffer(item.data(), item.size()),
write_strand_.wrap(
[this, self](std::error_code ec, std::size_t transferred) {
(void)transferred;
if (!ec) {
write_queue_.pop_front();
if (write_queue_.size() > 0) {
if (!exit_) {
do_write();
}
}
} else {
LOG_ERROR("Error while writing to socket: {}", ec);
}
if (exit_) {
LOG_INFO("Closing socket");
try {
socket_.shutdown(
RPCLIB_ASIO::ip::tcp::socket::shutdown_both);
}
catch (std::system_error &e) {
(void)e;
LOG_WARN("std::system_error during socket shutdown. "
"Code: {}. Message: {}", e.code(), e.what());
}
socket_.close();
}
}));
}
void write(RPCLIB_MSGPACK::sbuffer &&data) {
write_queue_.push_back(std::move(data));
if (write_queue_.size() > 1) {
return; // there is an ongoing write chain so don't start another
}
do_write();
}
friend class rpc::client;
protected:
template <typename Derived>
std::shared_ptr<Derived> shared_from_base() {
return std::static_pointer_cast<Derived>(shared_from_this());
}
protected:
RPCLIB_ASIO::ip::tcp::socket socket_;
RPCLIB_ASIO::strand write_strand_;
std::atomic_bool exit_{false};
bool exited_ = false;
std::mutex m_exit_;
std::condition_variable cv_exit_;
private:
std::deque<RPCLIB_MSGPACK::sbuffer> write_queue_;
RPCLIB_CREATE_LOG_CHANNEL(async_writer)
};
} /* detail */
} /* rpc */
#endif /* end of include guard: ASYNC_WRITER_H_HQIRH28I */
@@ -0,0 +1,21 @@
#pragma once
#ifndef BOOL_H_QLG6S5XZ
#define BOOL_H_QLG6S5XZ
#include "rpc/detail/constant.h"
namespace rpc {
namespace detail {
template<bool B>
using bool_ = constant<bool, B>;
using true_ = bool_<true>;
using false_ = bool_<false>;
}
}
#endif /* end of include guard: BOOL_H_QLG6S5XZ */
@@ -0,0 +1,92 @@
#pragma once
#ifndef CALL_H_ZXFACADH
#define CALL_H_ZXFACADH
#include <tuple>
#include "rpc/detail/func_tools.h"
#include "rpc/detail/invoke.h"
#include "rpc/detail/is_specialization_of.h"
namespace rpc {
namespace detail {
//! \brief Calls a functor with argument provided directly
template <typename Functor, typename Arg>
auto call(Functor f, Arg &&arg)
-> decltype(f(std::forward<Arg>(arg)))
{
return f(std::forward<Arg>(arg));
}
// Default behaviour is to assume C++11, overriding RPCLIB_CXX_STANDARD can use
// newer standards:
#if RPCLIB_CXX_STANDARD >= 14
template <typename Functor, typename... Args, std::size_t... I>
decltype(auto) call_helper(Functor func, std::tuple<Args...> &&params,
std::index_sequence<I...>) {
return func(std::get<I>(params)...);
}
//! \brief Calls a functor with arguments provided as a tuple
template <typename Functor, typename... Args>
decltype(auto) call(Functor f, std::tuple<Args...> &args) {
return call_helper(f, std::forward<std::tuple<Args...>>(args),
std::index_sequence_for<Args...>{});
}
#else
// N is number of arguments left in tuple to unpack
template <size_t N>
struct call_helper
{
template <typename Functor, typename... ArgsT, typename... ArgsF>
static auto call(
Functor f,
std::tuple<ArgsT...>& args_t,
ArgsF&&... args_f)
-> decltype(call_helper<N-1>::call(
f, args_t, std::get<N-1>(args_t),
std::forward<ArgsF>(args_f)...))
{
return call_helper<N-1>::call(
f,
args_t,
std::get<N-1>(args_t),
std::forward<ArgsF>(args_f)...
);
}
};
template <>
struct call_helper<0>
{
template <typename Functor, typename... ArgsT, typename... ArgsF>
static auto call(
Functor f,
std::tuple<ArgsT...>&,
ArgsF&&... args_f)
-> decltype(f(std::forward<ArgsF>(args_f)...))
{
return f(std::forward<ArgsF>(args_f)...);
}
};
//! \brief Calls a functor with arguments provided as a tuple
template <typename Functor, typename... ArgsT>
auto call(Functor f, std::tuple<ArgsT...>& args_t)
-> decltype(call_helper<sizeof...(ArgsT)>::call(f, args_t))
{
return call_helper<sizeof...(ArgsT)>::call(f, args_t);
}
#endif
}
}
#endif /* end of include guard: CALL_H_ZXFACADH */
@@ -0,0 +1,39 @@
#pragma once
#ifndef RPC_CLIENT_ERROR_H
#define RPC_CLIENT_ERROR_H
#include <stdexcept>
#include <cstdint>
namespace rpc {
namespace detail {
//! \brief Describes an error that is the result of a connected client
//! doing something unexpected (e.g. calling a function that does not exist,
//! wrong number of arguments, etc.)
class client_error : public std::exception {
public:
//! \brief Error codes used for signaling back to clients. These are used
//! to produce google-able error messages (since the msgpack-rpc protocol
//! does not define error handling in any more detail than sending an
//! object).
//! \note Care must be taken to keep these codes stable even between major
//! versions.
enum class code : uint16_t {
no_such_function = 1,
wrong_arity = 2,
protocol_error = 4
};
client_error(code c, const std::string &msg);
const char *what() const noexcept;
private:
std::string what_;
};
}
}
#endif // RPC_CLIENT_ERROR_H
@@ -0,0 +1,17 @@
#pragma once
#ifndef CONSTANT_H_5CXUYJEW
#define CONSTANT_H_5CXUYJEW
#include <type_traits>
namespace rpc {
namespace detail {
template<typename T, T I>
struct constant : std::integral_constant<T, I> {};
}
}
#endif /* end of include guard: CONSTANT_H_5CXUYJEW */
@@ -0,0 +1,21 @@
#pragma once
#ifndef DEV_UTILS_H_JQSWE2OS
#define DEV_UTILS_H_JQSWE2OS
#ifdef RPCLIB_LINUX
#include "pthread.h"
#endif
namespace rpc {
namespace detail {
inline void name_thread(std::string const &name) {
(void)name;
#ifdef RPCLIB_LINUX
pthread_setname_np(pthread_self(), name.c_str());
#endif
}
} /* detail */
} /* rpc */
#endif /* end of include guard: DEV_UTILS_H_JQSWE2OS */
@@ -0,0 +1,26 @@
#pragma once
#ifndef FUNC_TOOLS_H_9FNRD4G2
#define FUNC_TOOLS_H_9FNRD4G2
#include "rpc/detail/invoke.h"
#include "rpc/detail/all.h"
#include "rpc/detail/any.h"
namespace rpc {
namespace detail {
enum class enabled {};
template <typename... C>
using enable_if = invoke<std::enable_if<all<C...>::value, enabled>>;
template <typename... C>
using disable_if = invoke<std::enable_if<!any<C...>::value, enabled>>;
}
}
#endif /* end of include guard: FUNC_TOOLS_H_9FNRD4G2 */
@@ -0,0 +1,77 @@
#pragma once
#ifndef FUNC_TRAITS_H_HWIWA6G0
#define FUNC_TRAITS_H_HWIWA6G0
#include "rpc/detail/bool.h"
namespace rpc {
namespace detail {
template <int N>
using is_zero = invoke<std::conditional<(N == 0), true_, false_>>;
template <int N, typename... Ts>
using nth_type = invoke<std::tuple_element<N, std::tuple<Ts...>>>;
namespace tags {
// tags for the function traits, used for tag dispatching
struct zero_arg {};
struct nonzero_arg {};
struct void_result {};
struct nonvoid_result {};
template <int N> struct arg_count_trait { typedef nonzero_arg type; };
template <> struct arg_count_trait<0> { typedef zero_arg type; };
template <typename T> struct result_trait { typedef nonvoid_result type; };
template <> struct result_trait<void> { typedef void_result type; };
}
//! \brief Provides a small function traits implementation that
//! works with a reasonably large set of functors.
template <typename T>
struct func_traits : func_traits<decltype(&T::operator())> {};
template <typename C, typename R, typename... Args>
struct func_traits<R (C::*)(Args...)> : func_traits<R (*)(Args...)> {};
template <typename C, typename R, typename... Args>
struct func_traits<R (C::*)(Args...) const> : func_traits<R (*)(Args...)> {};
template <typename R, typename... Args> struct func_traits<R (*)(Args...)> {
using result_type = R;
using arg_count = std::integral_constant<std::size_t, sizeof...(Args)>;
using args_type = std::tuple<typename std::decay<Args>::type...>;
};
template <typename T>
struct func_kind_info : func_kind_info<decltype(&T::operator())> {};
template <typename C, typename R, typename... Args>
struct func_kind_info<R (C::*)(Args...)> : func_kind_info<R (*)(Args...)> {};
template <typename C, typename R, typename... Args>
struct func_kind_info<R (C::*)(Args...) const>
: func_kind_info<R (*)(Args...)> {};
template <typename R, typename... Args> struct func_kind_info<R (*)(Args...)> {
typedef typename tags::arg_count_trait<sizeof...(Args)>::type args_kind;
typedef typename tags::result_trait<R>::type result_kind;
};
template <typename F> using is_zero_arg = is_zero<func_traits<F>::arg_count>;
template <typename F>
using is_single_arg =
invoke<std::conditional<func_traits<F>::arg_count == 1, true_, false_>>;
template <typename F>
using is_void_result = std::is_void<typename func_traits<F>::result_type>;
}
}
#endif /* end of include guard: FUNC_TRAITS_H_HWIWA6G0 */
@@ -0,0 +1,16 @@
#pragma once
#ifndef IF_H_1OW9DR7G
#define IF_H_1OW9DR7G
#include "rpc/detail/invoke.h"
namespace rpc {
namespace detail {
template <typename C, typename T, typename F>
using if_ = invoke<std::conditional<C::value, T, F>>;
}
}
#endif /* end of include guard: IF_H_1OW9DR7G */
@@ -0,0 +1,15 @@
#pragma once
#ifndef INVOKE_H_0CWMPLUE
#define INVOKE_H_0CWMPLUE
namespace rpc {
namespace detail {
template<typename T>
using invoke = typename T::type;
}}
#endif /* end of include guard: INVOKE_H_0CWMPLUE */
@@ -0,0 +1,20 @@
#pragma once
#ifndef IS_SPECIALIZATION_OF_H_OPZTARVG
#define IS_SPECIALIZATION_OF_H_OPZTARVG
#include "rpc/detail/bool.h"
namespace rpc {
namespace detail {
template <template <typename...> class Templ, typename T>
struct is_specialization_of : false_ {};
template <template <typename...> class Templ, typename... T>
struct is_specialization_of<Templ, Templ<T...>> : true_ {};
}
} /* rpc */
#endif /* end of include guard: IS_SPECIALIZATION_OF_H_OPZTARVG */

Some files were not shown because too many files have changed in this diff Show More