package cz.kiwi.cometd.zmq;
/*
import java.util.EventListener;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.zeromq.ZMQ;
*/

public class ZmqBridge { //implements Runnable {
    /*final static Logger logger = LoggerFactory.getLogger(ZmqBridge.class); 
    
    private Thread thread;
    public MessageListener messageListener;
    
    private ZMQ.Context context;
    private ZMQ.Socket pushSocket;
    private ZMQ.Socket pullSocket;
    
    public ZmqBridge()
    {
        this.thread = new Thread(this);
        this.thread.start();
        
        // pro pripad, ze chci bezet bez spusteni noveho vlakna - pozor, vlakno se zablokuje na metode recv() v metode run()!!!
        //this.thread = Thread.currentThread();
        //this.run();
    }
     
    public void run() {
        this.context = ZMQ.context(1);
        
        this.pushSocket = this.context.socket(ZMQ.PUSH);
        this.pushSocket.bind("tcp://127.0.0.1:1111");
        
        this.pullSocket = this.context.socket(ZMQ.PULL);
        this.pullSocket.connect("tcp://127.0.0.1:1112");
        
        Thread thisThread = Thread.currentThread();
        while (this.thread == thisThread)
        {
            try {
                String reply = new String(this.pullSocket.recv(0), "UTF8");
                if (this.messageListener != null) {
                    this.messageListener.onMessage(reply);
                }
            } catch (Exception e) {
                logger.error("Error receiving message: " + e.getMessage());
            }
        }
    }
    
    public void stop() {
        this.thread = null;
    }
    
    public boolean send(String message) {
        boolean result = false;
        
        if (this.thread != null && this.pushSocket != null) {
            try {
                result = this.pushSocket.send(message.getBytes("UTF8"), ZMQ.NOBLOCK);
            } catch (Exception e) {
                logger.error("Error when sending ZMQ message: " + e.getMessage());
            }
        } else {
            logger.warn("ZMQ thread or push socket is null");
        }
        
        return result;
    }
    
    public interface MessageListener extends EventListener {
        public void onMessage(String message);
    }*/
}
