zeromq / netmq

A 100% native C# implementation of ZeroMQ for .NET
Other
2.94k stars 742 forks source link

ZetMQ and Crestron Processors #1033

Open JaronrH opened 1 year ago

JaronrH commented 1 year ago

This is a VERY niche case but I still wanted to throw it out there!

I'm using ZeroMQ (NetMq 4.0.1.10) with a Crestron v4 Processor (they are used in home automation systems). The processor uses Mono 6.12.0.107 for their .Net runtime with their latest firmware. Long story short: the native Opcode calls in NetMQ.Core.Utils fail causing the entire application to crash!

Thankfully, the fix was easy: Just remove the call to it in NetMQ.Core.Utils.Clock (much like your preprocessor command that singles out NETSTANDARD1_6) and everything worked as expected!

From this experience, I wanted to highlight 3 things for your consideration: 1) The error handling in NetMQ.Core.Utils.OpCode could use some improvement (there is none right now!). 2) It could be helpful to allow NetMQ.Core.Utils.Clock.NowMs() to bypass NetMQ.Core.Utils.Clock.Rdtsc as an option (then I can bypass and avoid having a custom-built library!). 3) The library needs some work to make it run in VS2022 (Include JetBrains.Annotations, Set the LangVersion to 8+, Fix Assumes.NotNull() calls in TcpListener.SetAddress() and V2Encoder.SizeReady(), etc.). Nothing major but could use some attention!