zeromq / gyre

Golang port of Zyre
GNU Lesser General Public License v3.0
89 stars 20 forks source link

Not compatible with Zyre #39

Open Dev1an opened 8 years ago

Dev1an commented 8 years ago

I tried this package in combination with the C implementation (https://github.com/zeromq/zyre) and it does not seem to work together. Gyre does not detect the enter, shout, whisper events from zyre, it does detect the exit message though.

The readme.md says it is a port of Zyre 2.0 but the Zyre link is not working and I don't seem to find the specification of Zyre 2.0 anywhere

armen commented 8 years ago

Hi @Dev1an Thanks for testing Gyre. Unfortunately Gyre falls behind of Zyre rapid changes time to time, I do my best to sync their protocol once in a while and keep them compatible. But obviously this is not the right way of doing it.

Having said that the issue you have might be due to my recent changes to add golang 1.6 compatibility, as you might already noticed the tests are failing and I need to investigate to see if they are failing because of badly written tests or they're really failing. (I have to admit that the Gyre's test cases are very badly implemented and I need to take time and properly fix them)

In terms of compatibility, I think implementing proper end to end test cases can help to tackle this problem. I started this long time ago and my first step was to make Go implementation of Zproto compatible with the C version. Gyre and Zyre both are using Zproto encoding in their protocol level. That's done and I'm pretty sure it shouldn't be the source of the trouble you have.

Next step was to to implement a golang binding for Zyre. Unfortunately I never started this. The idea was to use Zproject to generate a golang binding for Zyre, and then use it to implement an end to end Gyre-to-Zyre and Zyre-to-Gyre test to test the compatibility between two projects. (For the current Zyre bindings take a look at bindings/ directory at Zyre).

I still have plan to do that on my free time, but you're more than welcome to contribute if you're interested.

The Zyre/ZRE specification can be found at http://rfc.zeromq.org/spec:36 .