ZeroMQ o r0MQ, has anyone used it?

Everything else that doesn't fall into one of the other PB categories.
User avatar
RichAlgeni
Addict
Addict
Posts: 935
Joined: Wed Sep 22, 2010 1:50 am
Location: Bradenton, FL

ZeroMQ o r0MQ, has anyone used it?

Post by RichAlgeni »

Just wondering if anyone has used ZeroMQ? Any thoughts???

I found this code here: http://www.coastrd.com/zeromq-messaging

Code: Select all

#ZMQ_HAUSNUMERO   = 1000 ; 156384712 ; avoid collision With other errno ranges

#ENOTSUP          = #ZMQ_HAUSNUMERO + 1  ; POSIX errors
#EPROTONOSUPPORT  = #ZMQ_HAUSNUMERO + 2  ;
#ENOBUFS          = #ZMQ_HAUSNUMERO + 3  ;
#ENETDOWN         = #ZMQ_HAUSNUMERO + 4  ;
#EADDRINUSE       = #ZMQ_HAUSNUMERO + 5  ;
#EADDRNOTAVAIL    = #ZMQ_HAUSNUMERO + 6  ;
#ECONNREFUSED     = #ZMQ_HAUSNUMERO + 7  ;
#EINPROGRESS      = #ZMQ_HAUSNUMERO + 8  ;

#EMTHREAD         = #ZMQ_HAUSNUMERO + 50 ; Native 0MQ error codes
#EFSM             = #ZMQ_HAUSNUMERO + 51 ;
#ENOCOMPATPROTO   = #ZMQ_HAUSNUMERO + 52 ;

#ZMQ_MAX_VSM_SIZE = 30  ; Max size of Very Small Message. VSMs are passed by value to reduce memory alloc/dealloc

#ZMQ_DELIMITER    = 31  ; Message structure - may be stored in ;content; member of the
#ZMQ_VSM          = 32  ; Message structure - message instead of regular pointer to the data

#ZMQ_MSG_TBC      = 1   ; Message flag
#ZMQ_MSG_SHARED   = 128 ; strictly speaking not a message flag
                     
#ZMQ_POLL         = 1   ; 0MQ infrastructure (a.k.a. context) initialisation & termination

#ZMQ_PAIR         = 0   ; 0MQ socket definition
#ZMQ_PUB          = 1   ;
#ZMQ_SUB          = 2   ;
#ZMQ_REQ          = 3   ;
#ZMQ_REP          = 4   ;
#ZMQ_XREQ         = 5   ;
#ZMQ_XREP         = 6   ;
#ZMQ_UPSTREAM     = 7   ;
#ZMQ_DOWNSTREAM   = 8   ;
                       
#ZMQ_HWM          = 1   ;

#ZMQ_SWAP         = 3   ;
#ZMQ_AFFINITY     = 4   ;
#ZMQ_IDENTITY     = 5   ;
#ZMQ_SUBSCRIBE    = 6   ;
#ZMQ_UNSUBSCRIBE  = 7   ;
#ZMQ_RATE         = 8   ;
#ZMQ_RECOVERY_IVL = 9   ;
#ZMQ_MCAST_LOOP   = 10  ;
#ZMQ_SNDBUF       = 11  ;
#ZMQ_RCVBUF       = 12  ;

#ZMQ_NOBLOCK      = 1   ;
#ZMQ_NOFLUSH      = 2   ;           
       
#ZMQ_POLLIN       = 1   ; I/O multiplexing
#ZMQ_POLLOUT      = 2
#ZMQ_POLLERR      = 4
               

Structure zmq_pollitem_t     ; I/O multiplexing
    pSocket.i    ; void *socket;
    fd.i   ; int fd;
    events.w  ; short events;
    revents.w  ; short revents;
EndStructure
         

;  Shared message buffer. Message data are either allocated in one
;  continuous block along with this structure - thus avoiding one
;  malloc/free pair or they are stored in used-supplied memory.
;  In the latter case, ffn member stores pointer to the function to be
;  used to deallocate the data. If the buffer is actually shared
;  (there are at least 2 references to it) refcount member contains number of references.
Structure msg_content_t
    pData.i ; void *DATA;
    DataLen.i ; size_t SIZE;
    pFree.i ; zmq_free_fn *ffn;
    phInt.i ; void *hint;   
    refcnt.i; atomic_counter_t refcnt - Set counter value (not thread-safe).
EndStructure              ; A class that represents an integer that can be incremented/decremented in atomic fashion.

   
; Note: ;content; is not a pointer to the raw data, it is pointer to msg_content_t structure
Structure zmq_msg_t                          ; Message structure
    pContent.msg_content_t      ; pointer to msg_content_t structure
    flags.b                   ; unsigned char flags;
    vsm_size.b                   ; unsigned char vsm_size
    vsm_data.b{ZMQ_MAX_VSM_SIZE} ; unsigned char vsm_data [ZMQ_MAX_VSM_SIZE]
EndStructure


Structure ZMQ_free_fn        ;
    pData.i      ; void *DATA
    hInt .i      ; void *hint
EndStructure


;------------ Sockets
ImportC libzmq.dll       
;ZMQ_EXPORT void *zmq_init        (int app_threads, int io_threads, int flags)

zmq_init.i(app_threads.i,io_threads.i,flags.i)

;ZMQ_EXPORT INT  zmq_connect (void *s, const char *ADDR)
zmq_connect(pSoc.i,psAddr.i)

;ZMQ_EXPORT INT  zmq_bind (void *s, const char *ADDR)

zmq_bind(pSoc.i,psAddr.i )

;ZMQ_EXPORT void *zmq_socket (void *context, INT structure)

zmq_socket (pContext.i,Socstructure  ).i ; PTR

;ZMQ_EXPORT INT  zmq_setsockopt (void *s, INT OPTION, const void *optval, size_t optvallen)
zmq_setsockopt (pSoc.i,Optn.i ,OptVal.i,OptValLen.i )

;ZMQ_EXPORT INT zmq_getsockopt (void *s, INT OPTION,        void *optval, size_t *optvallen)
zmq_getsockopt (pSoc.i,Optn.i ,OptVal.i,OptValLen.i )

;ZMQ_EXPORT INT  zmq_send (void *s, zmq_msg_t *msg, INT flags)
zmq_send (pSoc.i,*pMsg.ZMQ_msg_t,flags.i)

;ZMQ_EXPORT INT  zmq_flush (void *s)
zmq_flush (pSoc.i )

;ZMQ_EXPORT INT  zmq_recv (void *s, zmq_msg_t *msg, INT flags)
zmq_recv (pSoc.i,*pMsg.ZMQ_msg_t,flags.i)
           
;ZMQ_EXPORT INT  zmq_poll ( ZMQ_pollitem_t *items, INT nitems, LONG TIMEOUT)
zmq_poll (pItems.i,nItems.i,Tymeout.i)
               
;ZMQ_EXPORT INT  zmq_close (void *s)
zmq_close (pSoc.i)

;ZMQ_EXPORT int  zmq_term          (void *context)
zmq_term (pCtxt.i)


;------------ Messages

;ZMQ_EXPORT INT  zmq_msg_init      ( ZMQ_msg_t *msg )
zmq_msg_init (*pMsg.ZMQ_msg_t)

;ZMQ_EXPORT int  zmq_msg_init_size ( ZMQ_msg_t *msg, size_t size)
zmq_msg_init_size (*pMsg.ZMQ_msg_t,tSize.i )

;ZMQ_EXPORT INT  zmq_msg_init_data ( ZMQ_msg_t *msg, void *DATA, size_t SIZE, zmq_free_fn *ffn, void *hint)
zmq_msg_init_data (*pMsg.ZMQ_msg_t,pData.i,tSize.i,*ffn.i,hint.i)

;ZMQ_EXPORT int  zmq_msg_move      ( ZMQ_msg_t *dest, zmq_msg_t *src)
zmq_msg_move (*dest.ZMQ_msg_t,*src.ZMQ_msg_t)
                                 
;ZMQ_EXPORT int  zmq_msg_copy      ( ZMQ_msg_t *dest, zmq_msg_t *src)
zmq_msg_copy (*dest.ZMQ_msg_t,*src.ZMQ_msg_t)

;ZMQ_EXPORT void *zmq_msg_data    ( ZMQ_msg_t *msg)
zmq_msg_data(*pMsg.ZMQ_msg_t)

;ZMQ_EXPORT size_t zmq_msg_size   ( ZMQ_msg_t *msg)
zmq_msg_size (*pMsg.ZMQ_msg_t)

;ZMQ_EXPORT int  zmq_msg_close     ( ZMQ_msg_t *msg)
zmq_msg_close (*pMsg.ZMQ_msg_t)
                       


;------------ Misc
           
;ZMQ_EXPORT void zmq_version (INT *major, INT *minor, INT *patch)
zmq_version (*major,*minor,*patch)
                 
;ZMQ_EXPORT INT  zmq_errno()
zmq_errno ()

; ZMQ_EXPORT const char *zmq_strerror (INT errnum)
zmq_strerror(errnum.i)

;ZMQ_EXPORT void *zmq_stopwatch_start ()
zmq_stopwatch_start() ; Returns the handle to the watch.

;ZMQ_EXPORT unsigned long zmq_stopwatch_stop (void *watch_)

zmq_stopwatch_stop (pWatch.i ) ; Returns the number of microseconds elapsed since

;ZMQ_EXPORT void zmq_sleep (INT seconds_)
zmq_sleep (Secs  ) ;   Sleeps for specified number of seconds.

EndImport
User avatar
Zebuddi123
Enthusiast
Enthusiast
Posts: 796
Joined: Wed Feb 01, 2012 3:30 pm
Location: Nottinghamshire UK
Contact:

Re: ZeroMQ o r0MQ, has anyone used it?

Post by Zebuddi123 »

This looks interesting not heard of it before

Thanks for sharing

Zebuddi. :D
malleo, caput, bang. Ego, comprehendunt in tempore
User avatar
RichAlgeni
Addict
Addict
Posts: 935
Joined: Wed Sep 22, 2010 1:50 am
Location: Bradenton, FL

Re: ZeroMQ o r0MQ, has anyone used it?

Post by RichAlgeni »

Zeb, can I call you Zeb?

I haven't had a chance to try it yet, so I'm not sure how helpful it could be.

If I finally get to it, I'll post my code. Could you do the same?

Rich
User avatar
Zebuddi123
Enthusiast
Enthusiast
Posts: 796
Joined: Wed Feb 01, 2012 3:30 pm
Location: Nottinghamshire UK
Contact:

Re: ZeroMQ o r0MQ, has anyone used it?

Post by Zebuddi123 »

Yes no problem not touched any thing yet as i have just built myself a new system buut i will be having a look next week at it

Zebuddi. :D
malleo, caput, bang. Ego, comprehendunt in tempore
User avatar
RichAlgeni
Addict
Addict
Posts: 935
Joined: Wed Sep 22, 2010 1:50 am
Location: Bradenton, FL

Re: ZeroMQ o r0MQ, has anyone used it?

Post by RichAlgeni »

Thanks! :D

How's the weather in Great Britain?
User avatar
Zebuddi123
Enthusiast
Enthusiast
Posts: 796
Joined: Wed Feb 01, 2012 3:30 pm
Location: Nottinghamshire UK
Contact:

Re: ZeroMQ o r0MQ, has anyone used it?

Post by Zebuddi123 »

Hi Rich sorry i didnt reply i have been busy with my new build. Weather here is like beginning of winter had now summer really and i`ve no idea where autums gone lol.

How`s sunny Florida :mrgreen: just gonna delve into this zeroMQ see whats what, you made any progress ?


Zebuddi. :D
malleo, caput, bang. Ego, comprehendunt in tempore
User avatar
RichAlgeni
Addict
Addict
Posts: 935
Joined: Wed Sep 22, 2010 1:50 am
Location: Bradenton, FL

Re: ZeroMQ o r0MQ, has anyone used it?

Post by RichAlgeni »

Not a problem at all Zebuddi!

Hot still in Florida! The only thing I miss from New England is the seasons changing. Fall is a great time of year. But, in January when you all are freezing, we'll have 80 degrees here! :lol:

Rich
Post Reply