From 1f06d99a0f563fdc32e9c00392f9875ba3009593 Mon Sep 17 00:00:00 2001 From: Martin Hurton Date: Mon, 31 Aug 2009 13:11:46 +0200 Subject: Add Java binding --- java/org/zmq/Context.java | 47 ++++++++++++++++ java/org/zmq/Message.java | 66 ++++++++++++++++++++++ java/org/zmq/Socket.java | 141 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 254 insertions(+) create mode 100644 java/org/zmq/Context.java create mode 100644 java/org/zmq/Message.java create mode 100644 java/org/zmq/Socket.java (limited to 'java/org/zmq') diff --git a/java/org/zmq/Context.java b/java/org/zmq/Context.java new file mode 100644 index 0000000..8bc4d57 --- /dev/null +++ b/java/org/zmq/Context.java @@ -0,0 +1,47 @@ +/* + Copyright (c) 2007-2009 FastMQ Inc. + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the Lesser GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + Lesser GNU General Public License for more details. + + You should have received a copy of the Lesser GNU General Public License + along with this program. If not, see . +*/ + +package org.zmq; + +public class Context { + static { + System.loadLibrary("jzmq"); + } + + /** + * Class constructor. + * + * @param appThreads maximum number of application threads. + * @param ioThreads size of the threads pool to handle I/O operations. + */ + public Context (int appThreads, int ioThreads) { + construct (appThreads, ioThreads); + } + + public native long createSocket (int type); + + /** Initialize the JNI interface */ + protected native void construct (int appThreads, int ioThreads); + + /** Free resources used by JNI driver. */ + protected native void finalize (); + + /** Opaque data used by JNI driver. */ + private long contextHandle; +} diff --git a/java/org/zmq/Message.java b/java/org/zmq/Message.java new file mode 100644 index 0000000..3691410 --- /dev/null +++ b/java/org/zmq/Message.java @@ -0,0 +1,66 @@ +/* + Copyright (c) 2007-2009 FastMQ Inc. + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the Lesser GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + Lesser GNU General Public License for more details. + + You should have received a copy of the Lesser GNU General Public License + along with this program. If not, see . +*/ + +package org.zmq; + +public class Message { + static { + System.loadLibrary("jzmq"); + } + + /** + * Class constructor. + */ + public Message () { + construct (); + } + + public Message (byte [] payload) { + constructWithData (payload); + } + + /** + * Get message payload. + */ + public native byte [] getMsgPayload (); + + /** + * Get message type. + */ + public native int getMsgType (); + + /** + * Get low-level message handler. + */ + public long getMsgHandle () { + return msgHandle; + } + + /** Initialize the JNI interface */ + protected native void construct (); + + protected native void constructWithData (byte [] payload); + + /** Free resources used by JNI driver. */ + protected native void finalize (); + + /** Opaque data used by JNI driver. */ + private long msgHandle; +} + diff --git a/java/org/zmq/Socket.java b/java/org/zmq/Socket.java new file mode 100644 index 0000000..3bfbfec --- /dev/null +++ b/java/org/zmq/Socket.java @@ -0,0 +1,141 @@ +/* + Copyright (c) 2007-2009 FastMQ Inc. + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the Lesser GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + Lesser GNU General Public License for more details. + + You should have received a copy of the Lesser GNU General Public License + along with this program. If not, see . +*/ + +package org.zmq; + +public class Socket { + static { + System.loadLibrary("jzmq"); + } + + public static final int ZMQ_MAX_VSM_SIZE = 30; + + public static final int ZMQ_GAP = 1; + + public static final int ZMQ_DELIMITER = 31; + + public static final int ZMQ_NOBLOCK = 1; + + public static final int ZMQ_NOFLUSH = 2; + + public static final int ZMQ_P2P = 0; + + public static final int ZMQ_PUB = 1; + + public static final int ZMQ_SUB = 2; + + /** + * Class constructor. + * + * @param context + * @param type + */ + public Socket (Context context, int type) { + ctx = context; + construct (context, type); + } + + /** + * Set the high watermark on the socket. + * + * @param hwm high watermark. + */ + public native void setHwm (long hwm); + + /** + * Set the low watermark on the socket. + * + * @param lwm low watermark. + */ + public native void setLwm (long lwm); + + /** + * Set swap size. + * + * @param swap_size swap size. + */ + public native void setSwap (long swap_size); + + /** + * Set reception mask. + * + * @param mask mask. + */ + public native void setMask (long mask); + + /** + * Set affinity. + * + * @param affinity + */ + public native void setAffinity (long affinity); + + /** + * Set identity. + * + * @param identity + */ + public native void setIdentity (String identity); + + /** + * @param addr + */ + public native void bind (String addr); + + /** + * Connect. + * + * @param addr + */ + public native void connect (String addr); + + /** + * Send. + * + * @param message + * @param block + */ + public native int send (Message msg, long flags); + + /** + * Flush all messages sent with flush flag false down the stream. + */ + public native void flush (); + + /** + * Receive message. + * + * @param block + * @return + */ + public native Message recv (long flags); + + /** Initialize JNI driver */ + protected native void construct (Context context, int type); + + /** Free all resources used by JNI driver. */ + protected native void finalize (); + + /** Keep reference to ZMQ context so it is not garbage collected */ + private Context ctx; + + /** Opaque data used by JNI driver. */ + private long socketHandle; + +} -- cgit v1.2.3