From 256ed3d0b9bc95e751a3236222371c6ac10a091d Mon Sep 17 00:00:00 2001 From: Erik Olof Gunnar Andersson Date: Sat, 15 Feb 2014 23:57:15 +0100 Subject: [PATCH] Added Jython support. --- pika/adapters/base_connection.py | 7 ++++++- pika/adapters/blocking_connection.py | 12 +++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/pika/adapters/base_connection.py b/pika/adapters/base_connection.py index 2dc044c5b..9c8a20e6b 100644 --- a/pika/adapters/base_connection.py +++ b/pika/adapters/base_connection.py @@ -11,6 +11,11 @@ from pika import connection from pika import exceptions +try: + SOL_TCP = socket.SOL_TCP +except AttributeError: + SOL_TCP = 6 + LOGGER = logging.getLogger(__name__) @@ -155,7 +160,7 @@ def _check_state_on_disconnect(self): def _create_and_connect_to_socket(self, sock_addr_tuple): """Create socket and connect to it, using SSL if enabled.""" self.socket = socket.socket(sock_addr_tuple[0], socket.SOCK_STREAM, 0) - self.socket.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1) + self.socket.setsockopt(SOL_TCP, socket.TCP_NODELAY, 1) self.socket.settimeout(self.params.socket_timeout) # Wrap socket if using SSL diff --git a/pika/adapters/blocking_connection.py b/pika/adapters/blocking_connection.py index 51df23895..e9c977b52 100644 --- a/pika/adapters/blocking_connection.py +++ b/pika/adapters/blocking_connection.py @@ -10,6 +10,7 @@ classes. """ +import os import logging import select import socket @@ -26,6 +27,11 @@ from pika import utils from pika.adapters import base_connection +if os.name == 'java': + from select import cpython_compatible_select as select_function +else: + from select import select as select_function + LOGGER = logging.getLogger(__name__) @@ -60,7 +66,7 @@ def __init__(self, fd, poll_timeout=POLL_TIMEOUT): """ self.fd = fd self.poll_timeout = poll_timeout - if hasattr(select, 'poll'): + if hasattr(select, 'poll') and os.name != 'java': self.poller = select.poll() self.poll_events = select.POLLIN | select.POLLPRI self.poller.register(self.fd, self.poll_events) @@ -79,8 +85,8 @@ def ready(self): events = self.poller.poll(self.poll_timeout) return bool(events) else: - ready, unused_wri, unused_err = select.select([self.fd], [], [], - self.poll_timeout) + ready, unused_wri, unused_err = select_function([self.fd], [], [], + self.poll_timeout) return bool(ready)