All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zeromq.ZeroMQLibrary.scala Maven / Gradle / Ivy

There is a newer version: 0.0.9
Show newest version
/*
 * Copyright 2011 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.zeromq

import com.sun.jna._
import com.sun.jna.ptr._
import jnr.constants.platform.Errno

object ZeroMQ {
  /** Socket types */
  val ZMQ_PAIR = 0
  val ZMQ_PUB = 1
  val ZMQ_SUB = 2
  val ZMQ_REQ = 3
  val ZMQ_REP = 4
  val ZMQ_DEALER = 5
  val ZMQ_ROUTER = 6
  val ZMQ_PULL = 7
  val ZMQ_PUSH = 8
  val ZMQ_XPUB = 9
  val ZMQ_XSUB = 10
  /** Send / receive options */
  val ZMQ_NOBLOCK = 1
  val ZMQ_SNDMORE = 2 
  /** Socket options */
  val ZMQ_HWM = 1
  val ZMQ_SWAP = 3
  val ZMQ_AFFINITY = 4
  val ZMQ_IDENTITY = 5
  val ZMQ_SUBSCRIBE = 6
  val ZMQ_UNSUBSCRIBE = 7
  val ZMQ_RATE = 8
  val ZMQ_RECOVERY_IVL = 9
  val ZMQ_MCAST_LOOP = 10
  val ZMQ_SNDBUF = 11
  val ZMQ_RCVBUF = 12
  val ZMQ_RCVMORE = 13
  val ZMQ_FD = 14
  val ZMQ_EVENTS = 15
  val ZMQ_TYPE = 16
  val ZMQ_LINGER = 17
  val ZMQ_RECONNECT_IVL = 18
  val ZMQ_BACKLOG = 19
  val ZMQ_RECONNECT_IVL_MAX = 21
  val ZMQ_MAXMSGSIZE = 22;
  val ZMQ_SNDHWM = 23;
  val ZMQ_RCVHWM = 24;
  val ZMQ_MULTICAST_HOPS = 25;
  val ZMQ_RCVTIMEO = 27;
  val ZMQ_SNDTIMEO = 28;
  /** Built-in devices */
  val ZMQ_STREAMER = 1
  val ZMQ_FORWARDER = 2
  val ZMQ_QUEUE = 3
  /** Unix errors */
  val EINVAL = Errno.EINVAL.intValue
  val EAGAIN = Errno.EAGAIN.intValue
  /** ZMQ errors */
  val ZMQ_HAUSNUMERO = 156384712
  val EFSM = ZMQ_HAUSNUMERO + 51
  val ENOCOMPATPROTO = ZMQ_HAUSNUMERO + 52
  val ETERM = ZMQ_HAUSNUMERO + 53
  /** ZMQ message definition */
  val ZMQ_MAX_VSM_SIZE = 30
  val ZMQ_DELIMITER = 31
  val ZMQ_VSM = 32
  val ZMQ_MSG_MORE = 1
  val ZMQ_MSG_SHARED = 128
  val ZMQ_MSG_MASK = 129
  /** IO multiplexing */
  val ZMQ_POLLIN: Short = 1
  val ZMQ_POLLOUT: Short = 2
  val ZMQ_POLLERR: Short = 4 
  /** Helper for loading the ZeroMQ library */
  def loadLibrary: ZeroMQLibrary = {
    Native.loadLibrary("zmq", classOf[ZeroMQLibrary]).asInstanceOf[ZeroMQLibrary]  
  }
}

trait ZeroMQLibrary extends Library {
  def zmq_bind(socket: Pointer, endpoint: String): Int
  def zmq_close(socket: Pointer): Int
  def zmq_connect(socket: Pointer, endpoint: String): Int
  def zmq_device(device: Int, frontend: Pointer, backend: Pointer): Int
  def zmq_errno: Int
  def zmq_getsockopt(socket: Pointer, option_name: Int, option_value: Pointer, option_len: LongByReference): Int
  def zmq_init(io_threads: Int): Pointer
  def zmq_msg_init(msg: zmq_msg_t): Int
  def zmq_msg_close(msg: zmq_msg_t): Int
  def zmq_msg_copy(dest: zmq_msg_t, src: zmq_msg_t): Int
  def zmq_msg_data(msg: zmq_msg_t): Pointer
  def zmq_msg_init_data(msg: zmq_msg_t, data: Pointer, size: NativeLong, ffn: zmq_free_fn, hint: Pointer): Int
  def zmq_msg_init_size(msg: zmq_msg_t, size: NativeLong): Int
  def zmq_msg_move(dest: zmq_msg_t, src: zmq_msg_t): Int
  def zmq_msg_size(msg: zmq_msg_t): Int
  def zmq_poll(items: Array[zmq_pollitem_t], nitems: Int, timeout: NativeLong): Int
  def zmq_recv(socket: Pointer, msg: zmq_msg_t, flags: Int): Int
  def zmq_send(socket: Pointer, msg: zmq_msg_t, flags: Int): Int
  def zmq_setsockopt(socket: Pointer, option_name: Int, option_value: Pointer, option_len: NativeLong): Int
  def zmq_socket(context: Pointer, socket_type: Int): Pointer
  def zmq_strerror(errnum: Int): String
  def zmq_term(context: Pointer): Int
  def zmq_version(major: Array[Int], minor: Array[Int], patch: Array[Int]): Unit
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy