Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

replace owning_ref with safer_owner_ref #7

Merged
merged 3 commits into from
Jun 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "rants"
version = "0.6.0"
version = "0.6.1"
authors = ["David McNeil <[email protected]>"]
description = "An async NATS client library."
repository = "https://github.com/davidMcneil/rants"
Expand All @@ -18,7 +18,7 @@ bytes = "1.2.0"
futures = "0.3.21"
log = "0.4.17"
nom = "7.1.1"
owning_ref = "0.4.1"
safer_owning_ref = "0.5.0"
pin-project = "1.0.11"
rand = "0.8.5"
serde = { version = "1.0.140", features = ["derive"] }
Expand Down
14 changes: 7 additions & 7 deletions src/types/refs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,27 +12,27 @@ unsafe impl<'a, T: ?Sized> StableAddress for StableMutexGuard<'a, T> {}
impl<T: ?Sized> Deref for StableMutexGuard<'_, T> {
type Target = T;
fn deref(&self) -> &T {
&*self.0
&self.0
}
}

impl<T: ?Sized> DerefMut for StableMutexGuard<'_, T> {
fn deref_mut(&mut self) -> &mut T {
&mut *self.0
&mut self.0
}
}

/// A type for returning a reference to data behind [`Client`](struct.Client.html)'s internal mutex
///
/// The mutex is held for the entire lifetime of this reference so the lifetime of the reference
/// should not be long lived.
pub struct ClientRef<'a, T: ?Sized>(pub(crate) OwningRef<StableMutexGuard<'a, SyncClient>, T>);
pub struct ClientRef<'a, T: ?Sized>(pub(crate) OwningRef<'a, StableMutexGuard<'a, SyncClient>, T>);

impl<'a, T: ?Sized> Deref for ClientRef<'a, T> {
type Target = T;

fn deref(&self) -> &T {
&*self.0
&self.0
}
}

Expand All @@ -41,19 +41,19 @@ impl<'a, T: ?Sized> Deref for ClientRef<'a, T> {
/// The mutex is held for the entire lifetime of this reference so the lifetime of the reference
/// should not be long lived.
pub struct ClientRefMut<'a, T: ?Sized>(
pub(crate) OwningRefMut<StableMutexGuard<'a, SyncClient>, T>,
pub(crate) OwningRefMut<'a, StableMutexGuard<'a, SyncClient>, T>,
);

impl<'a, T: ?Sized> Deref for ClientRefMut<'a, T> {
type Target = T;

fn deref(&self) -> &T {
&*self.0
&self.0
}
}

impl<'a, T: ?Sized> DerefMut for ClientRefMut<'a, T> {
fn deref_mut(&mut self) -> &mut T {
&mut *self.0
&mut self.0
}
}
44 changes: 27 additions & 17 deletions tests/certs/ca.pem
Original file line number Diff line number Diff line change
@@ -1,22 +1,32 @@
-----BEGIN CERTIFICATE-----
MIIDkzCCAnugAwIBAgIUbu2Gos0ok+TVpEozUpQYuP6Au+MwDQYJKoZIhvcNAQEL
MIIFkzCCA3ugAwIBAgIUCtJtlP95OCc2OKdTUu+WKsuqoiwwDQYJKoZIhvcNAQEL
BQAwWTELMAkGA1UEBhMCVVMxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDESMBAGA1UEAwwJbG9jYWxob3N0MB4X
DTIwMDkxMDE0NTYxMVoXDTI1MDkwOTE0NTYxMVowWTELMAkGA1UEBhMCVVMxEzAR
DTI0MDYwNjExNTk0NFoXDTI5MDYwNjExNTk0NFowWTELMAkGA1UEBhMCVVMxEzAR
BgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5
IEx0ZDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEA26/ne5IKORbCOUpr0KXcQ+U2A4LObhDrqSJLlH2VkyKpRuq8iBjR
K4Lwk0wJGE/OWqr0yPq1r0uuGnZJWOm0+zwqDuv2sSe4UttVc5jW6b644Ls/dJPH
1d/aWGfQwQqoGCKP7auH/fHIdqQgxiV3QV+jFZzzpQV/R7M6sEFM+xS4StOEYcjg
YPndqOZq60/a2A4CTPSK9d9b3IDcDm+We2ywwSvuEB9NbcxMTUVVfxC5Nu1uqRdN
lAP0tHkzb1zGqY2xb/8L+UpykNjwPa68nr8OIN5te69ZtinpEBBTn/EaIWFJbN+v
FI9v1KaJ+EbA/GeTYvPCsLf4c6qYqSBzRQIDAQABo1MwUTAdBgNVHQ4EFgQUb/W9
ERwsNgLcdZyGmVQ4CWiSTOAwHwYDVR0jBBgwFoAUb/W9ERwsNgLcdZyGmVQ4CWiS
TOAwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAuVIk/WnaCoAV
qZYbw5aHuU2oq1vHFH6pYQfeMODN6kdLta1Bmsh2xNzcJc8wp7QsaCQ5LnZTf4vv
AzhvrFnYvNbd8vORiaYyvBnyZqJ6EhHiKwhWEH5Wp9sVFCLiSqbTlabJfM2DPZmp
+sd6mu6I7Vk1pe3yy+w5UMMWXllDkUuoWZZB4vWVul80OrJx3tJnP8JEPXOYuLxh
sLAziOmTwiPSSiu4bLD2A1vF8CtSQv8H7HfNQ9bCDFOIAS/1NmM3oteyER3vQfXt
MYmNMgtV75b7AY5O1gSoLw2vgvQSDkx3ulWgJVAHn2CZogVwf3EPCEs4inP1OW3T
oJzIRbxhfA==
IEx0ZDESMBAGA1UEAwwJbG9jYWxob3N0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
MIICCgKCAgEA+DcjLY9AkKBP3VNrUSNDmgMZJKFul0LdSuww/2rStTzGmiEoY9dN
zOHLd/+NNFQRytEnzcj0hNCQ6DGRXUbeZhN+G7kKjg7G71x88H6ULPwPYsfzpkDp
7VOsH/aBFCY0OsdPIPQaSXlOlkxaSGN3a4kY34oMzYUSraAT5UUnBfZBNPF2Xn2e
//T/N+SIJh3xWqIuVCXv+UxZWTiYQsdG74agy6PAknNuxC4GdzNOo9H6o7EupZfX
ZLn96BUgzcSFYpLQ6O119IiLZmSwafQrZxjssMrE0jC1g9C0/l3RuP0ogQFQ8LJN
HqOdLyFwYUSu8nNxiGFZ3IMB0MX5uKjwdiCiOtauh0yOV0G+5Kt3zxcPxOPIhFab
bJ88ZHC3rtplNqNpD0X9LM0D5Xx4pWpGJqI09RMYBMa44k6TydxCmyz9Zi6od+d7
SEzmOLLIe3/bKXEzGNygMde0eFAUTkaV9luT54Dh4+ljNazHQVXSdfQUIwgJy/1V
M+DmiBaUB+gzx5Z5KGYXvXr5muW0Czqzyn1XhhF0EcUc9fEv/GZLmJujkVevCvqN
DHXOX0oVYW2Qvt9Cl25QTY5dAZA6SKJn6tYSH4AqfGJPSsTN9FWLxKInNgEp4PIe
Fl7KszFB28aVACDakV/z4n4e5p+szeOifSCym2sVt4Dd0XLAjVyJ/XECAwEAAaNT
MFEwHQYDVR0OBBYEFGVa5XZpjGLeJX1/dLrrZk/+7X86MB8GA1UdIwQYMBaAFGVa
5XZpjGLeJX1/dLrrZk/+7X86MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL
BQADggIBAIFYz8egbAm/Ls3+iWyDjQIwiQNoV32WBo97V4hSW5Xtq98HacRyoHxa
/1PYEwvajj0xgb4YTEhlsXbBvWZNqc+90IiQh2UjawufsxBGnjcHq4r94Gh3zXkt
5tOCLrIUfbTsl9q9WfNhOzE4azycDLWImoXLOfrN7ogKWHwpAZ8jtmbrgkV3Sx1Z
6bWOt8SI6BJvz9Nq7GMDaTO98c0LqgYC7FgY03TnqGRA920Qw3ZuSE921ht3Z1M9
BBTYLMXfwvZPFDRBu6cSZhiRKMfjnBeo7/oyVawFentpqo/opQDDBYVVSpqEKc9k
6K7glpXIYH5J3feMoLinRMCQ7b908w8+vDUi3Grbg5vkIlz9fYvybsItm4lFDrsU
mKMC04vZkXy4CUItnUNngHouKiAVBqYSw4v9iX2B3sjaJVLhj55imIVsmzEclNRv
hysLsimu3ngJOSPUbuKZyqqrHngdULpd5l6Sb8OIhnWwAPKXERjc08qJc5qzGB7l
YHr/AZUeWPHnP9zFnoA/TSUCzpK75+1dN2iy88FJ5EPObQQ2OvISlFlKManIpPfK
cLaP4G0xy5EvnYS7BnBPZYOsvSjIiSJk5x0YTCSYcNKjX3rPfDa8kKaM3lVIi5Le
t5iHpoeZ3ltpRTStEEgc/G1+SDBLbS9stK1/L/NDZ6+VHQowSgRD
-----END CERTIFICATE-----
45 changes: 28 additions & 17 deletions tests/certs/server-crt.pem
Original file line number Diff line number Diff line change
@@ -1,22 +1,33 @@
-----BEGIN CERTIFICATE-----
MIIDpDCCAoygAwIBAgIUfc3g6/ICnRf6GywQCWT9Ew/XaM8wDQYJKoZIhvcNAQEL
MIIFtTCCA52gAwIBAgIUQKP2IN6TWUSjWdFojBhFKwgM6kswDQYJKoZIhvcNAQEL
BQAwWTELMAkGA1UEBhMCVVMxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDESMBAGA1UEAwwJbG9jYWxob3N0MB4X
DTIwMDkxMDE1Mjg1M1oXDTIyMTIxNDE1Mjg1M1owWTELMAkGA1UEBhMCVVMxEzAR
DTI0MDYwNjExNTk0NVoXDTI5MDYwNjExNTk0NVowWTELMAkGA1UEBhMCVVMxEzAR
BgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5
IEx0ZDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEApvDRbtavHxduHMhmkoWIIP5jYH149wNqmnyuVjk2qOl91Gs/JdUw
6/eBqdAEBrXxJebbMmLM1l+EEIUcmWzR2/YMyf//Q6i7QoGZyrlh31aTYzI9EZbx
pazvRmuMElURM/WEPkU1y0HbrLbOwKogKScoJ/OB7HFOV4KVnOGG56ChYsKhOh0q
shF/BTL0QRIlDGFuxoXdmG8R+miHuavFET7M6pB1Q1zrJAdMGlul9R50n+qG3hV8
1ZFaNDjypldrR2zRkAuCMfUsVOOxWuGgyFofqvyntbE68OgPk94rVqWm4uvrXq0C
c9EdI8IS4fCijT/IKy6uXLRoBkhhWt0EnwIDAQABo2QwYjAfBgNVHSMEGDAWgBRv
9b0RHCw2Atx1nIaZVDgJaJJM4DAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE8DAnBgNV
HREEIDAeggtleGFtcGxlLmNvbYIJbG9jYWxob3N0hwR/AAABMA0GCSqGSIb3DQEB
CwUAA4IBAQBosQtE/qN/T02r3CbbmUsCiRSyv5Pn+Dglga9dVMD15E0ta5isTL+W
WBOC/m9ofDm4ZWsYvcnYc7azyPkkQl8RZ3LG0VvKuD9zOU+wH/Dk4HR3ABOaolY2
mgs2GnFX2HdeuGjOddYuabBYvVZrTQcQmEUPvWrlNQjSzvC1v5T4o3m494pnFpdh
koNBhvibHhnp+YCPZSG1zWnv3Dm54pyFICDrAAXZvodsIkbe1Av7hg3xQSFhktGN
1E9aDwEQ1gEpzKl5n8Xy2N4M8PSGfM9z4JP8uH3t+XXvyQQc7jC8m3olsKBKaQzD
WpqGZHoCge9yupHuSVUZRt8WgKZuqzt9
IEx0ZDESMBAGA1UEAwwJbG9jYWxob3N0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
MIICCgKCAgEAuDNj6qc+r8d7lgsoemMFaZiqnbUcyh9FyHjwOOHL1hGlXeHc4Flo
WxkF4oBmk68bRbP8jiZfJSbf12STvF/41DcrFIxiPIaqTVrNxgA1/jxe7W8jPHl+
aMK4LNUhK6erdItwslYee0Oyp9KCQfGLV9VMAWfaXoCqCxGXXAE6/967e/wJ82yv
4xMKT8a8dre1I6RfiRBjrh8LegAcNvPWE6PouaWOuH2TSr//K1zkYtWRKWyhpbQB
SaGtPhnxyXITOl3wZbczLbobhlXykBP9oogJRLriwt1H4LMKI+2p53DLZk8Opvqf
AeAvlxwlaGBwjbfdKmkm8biHFaJ1/NIzDa8wADHe2bLsGWDNBvIKqNvOQ3xRjxQO
ueH76P+5mMzTW1c22/qCu4sOIOFZRo/d62bwJ8zVqmToMMN4gd3Yu4rX23B4WK7b
JqE8RH/4kM9Q+qCaG/Y/uUuTAcV4zTU0mxKNm0wrbpT/p4dan3gYbNc4JQAwhzqY
4YjH/EpGtq8XyI6FYnb3XD919qu4Skdx5E88UMjeCXcagf7KhMcZgUoxNx8Qxos9
Ay/26fTKr9iRSQ1oGOnN9UUeF5K8N3yPab50af4pGzGcdVrXPRfzm9ffyCNxfqJ9
FaBANffHiBaedXwRWxdYq01it8Exjr9h3gzIJRrSn3FzRNOS0LLruE8CAwEAAaN1
MHMwMQYDVR0RBCowKIILZXhhbXBsZS5jb22CDSouZXhhbXBsZS5jb22HBAAAAACH
BH8AAAEwHQYDVR0OBBYEFK+O5HcDul7p6SS/gyTfwVDyyZSRMB8GA1UdIwQYMBaA
FGVa5XZpjGLeJX1/dLrrZk/+7X86MA0GCSqGSIb3DQEBCwUAA4ICAQD3TIe7CRN2
WkqYhEutD2FalJqfeQzBjm8Usf7O+OIwwboPh91f6wxKFSBaqNzZzgbKoXA4Edqb
8xN99bzX84qh0TZhga8UXSf+gRitCa9DHx5sH+kvIKJtab1+EFNgqoEc21wCxUTs
94TV+3GFm/mueTFImZPeFnbFwgWtYFudS4oF9uAaZedRGsiJxepUVxenMGrguKnK
kCUbP86MSfnGbdjUp2/YDFtmZQmZNffk7F1iEnpjdDc3aFQ0HLvBqvVxR5sm+Tpa
5QdClSCSmyfyDW16+rsgdCmRjFIgC+mZaudH84HtvMYKw3uWfm6qK5yMVhgb4o4F
Ug/Nsl3dLqIxz8Bu4T1qmZsI4D3wRhYtoYRBB/OR9ETo+WtenYgJkdLTtboX3C3e
jLCBhhdamEBE1txA5hpzc5C21Gxzl6BM/RvU+Nd9m1lfukAVjReIwBquGuUOgDnL
GIwVahDYHjhSnE3hMmvuZse0loITp+YGba43JVOTlMZa680iR9r3Z8UjeQ9O3Jh2
XcE6XD7GKOd4tRCFnJzsZW32+edbcwSjZbumtgjD2BJNQiRwQj5gEjDW71a1OTyD
qvR9Z7fJvgBYzkvBlMW1Ug+m6ta7iZlw30aJNkc0GHa6BKGvsXDnA7pu1dVE3pSI
WugHYW6SUu15074USKoTY02XlnNVPWft9A==
-----END CERTIFICATE-----
79 changes: 52 additions & 27 deletions tests/certs/server-key.pem
Original file line number Diff line number Diff line change
@@ -1,27 +1,52 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEApvDRbtavHxduHMhmkoWIIP5jYH149wNqmnyuVjk2qOl91Gs/
JdUw6/eBqdAEBrXxJebbMmLM1l+EEIUcmWzR2/YMyf//Q6i7QoGZyrlh31aTYzI9
EZbxpazvRmuMElURM/WEPkU1y0HbrLbOwKogKScoJ/OB7HFOV4KVnOGG56ChYsKh
Oh0qshF/BTL0QRIlDGFuxoXdmG8R+miHuavFET7M6pB1Q1zrJAdMGlul9R50n+qG
3hV81ZFaNDjypldrR2zRkAuCMfUsVOOxWuGgyFofqvyntbE68OgPk94rVqWm4uvr
Xq0Cc9EdI8IS4fCijT/IKy6uXLRoBkhhWt0EnwIDAQABAoIBACR/UcphtTee77vr
NEGkX/aWpzNZOzEF1jCgQZ0oNQMIyTG/oLasvV1ZZ0ew6rBs5qParOF/KDlV+JGE
CJSibd8hE/q1tSEdqpMHso/Xp8YkL2TofuFxlrMZ89X5fU4kuvYZHyheCTy+0UAZ
V2pXx2A351eUrTr8KpyHOB5sUAojgZyhuRJ8WtRvXkUwxwQTLjcfhALX89c4cXg8
QcyU/5vnvIkxF7x+2ricO/SG44ZeHr6AfNWVc0cpp0PURHFHKxBtBEisUVEF8guJ
doNWUGgqNX7UzA48ApmsToFe6NY+qtrEcoDe5WrnI//X6XSw7DWcKVL/GIVGV05s
2qG99AECgYEA2omQU0CE6DLd1wXzNtI9ojPx+a8iXqftfuYpqS/7FrSL3lu5zFzi
UzztpSULsJew0fxjftkherThc+f/sb2nRawsy/5QbF5VKq/E3di5ntSlYyC9CFIe
NsqtGW5F2Duq0Grdi1ddSpjqfusAk3m/U9vc7ZjY4G+nfe4+rLZv+0ECgYEAw47z
4dboNZ5SoA3YduDawmlFYMCOHVQOf3wO8vZ8k8J7Uk+z6NYQ+hwmAZEQEJJtr9lt
rACfzZZhBsoWg9jmhz1WzrkHF5bj2L0SNgyTbeWCLbo7/2NuH6J2RvKc2/JlBS8H
IlPmjBWRBLnCC9Ts0xQmH+k7uh9ic6gv2dS6Z98CgYB7eOXWY8mz96lnZ7E29Cpm
jrrUu6LLoE2LOTeoo7dV6MRt6Z1cXc5yASaz++5S5CG/Qr5kWQGVdsU624WYQvNT
ZigZSaLe151+9LhiL6UQnEylaUXkgaEYjAKpL6i+t1eXUgnCRKYtE6DJ/LTinhL/
qmV0yLsgc3VKrWUz6A/1AQKBgD4bkp0xMcKFq9wlSZBHzXJdGKmnvfrWjVwzvFOx
sNMEu0HjClJyWiX09qUcuytoNenZdhlggWA72EjdudTZ+C0PcBhrbzMwuuBE/Bmq
WNBYScXYFeIAZCMr58CUoPjBvQ+uZeejGd93of0MOfKkByrqhUkxO8Ta3tu4mKno
A+OlAoGBAIVecZb7jq5Agsxw4VDNcMa6OrJl8tqRf5pAC+wdtGzCv9nlNA4IWCud
DnHG0hh9HXUdF2Fkx1ziFI/0mg3wACaYnSD4M3whroO1FRYfBTAl7NzIJfXkbP+S
uosGEoebhN74zdW8lHoNyhd21F1n+pnou6qKI4iT5RDhV7qzspSJ
-----END RSA PRIVATE KEY-----
-----BEGIN PRIVATE KEY-----
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
i6tYHmxqHZyupBrZdXvw+n/bbnSAO7I=
-----END PRIVATE KEY-----
Loading