[pypy-svn] r33664 - in pypy/dist/pypy/module/rsocket: . test
ac at codespeak.net
ac at codespeak.net
Tue Oct 24 18:10:26 CEST 2006
Author: ac
Date: Tue Oct 24 18:10:05 2006
New Revision: 33664
Removed:
pypy/dist/pypy/module/rsocket/socketerror.py
Modified:
pypy/dist/pypy/module/rsocket/__init__.py
pypy/dist/pypy/module/rsocket/interp_func.py
pypy/dist/pypy/module/rsocket/interp_socket.py
pypy/dist/pypy/module/rsocket/rsocket.py
pypy/dist/pypy/module/rsocket/test/test_rsocket.py
Log:
Have only rsocket depend on ctypes_socket and everything else
getting what they need from rsocket.
Modified: pypy/dist/pypy/module/rsocket/__init__.py
==============================================================================
--- pypy/dist/pypy/module/rsocket/__init__.py (original)
+++ pypy/dist/pypy/module/rsocket/__init__.py Tue Oct 24 18:10:05 2006
@@ -18,7 +18,7 @@
}
def buildloaders(cls):
- from pypy.module.rsocket import ctypes_socket as _c
+ from pypy.module.rsocket import rsocket
for name in """
gethostbyname gethostbyname_ex gethostbyaddr gethostname
getservbyname getservbyport getprotobyname
@@ -30,7 +30,7 @@
Module.interpleveldefs[name] = 'interp_func.%s' % (name, )
- for constant, value in _c.constants.iteritems():
+ for constant, value in rsocket.constants.iteritems():
Module.interpleveldefs[constant] = "space.wrap(%r)" % value
super(Module, cls).buildloaders()
buildloaders = classmethod(buildloaders)
Modified: pypy/dist/pypy/module/rsocket/interp_func.py
==============================================================================
--- pypy/dist/pypy/module/rsocket/interp_func.py (original)
+++ pypy/dist/pypy/module/rsocket/interp_func.py Tue Oct 24 18:10:05 2006
@@ -1,10 +1,9 @@
from pypy.interpreter.gateway import ObjSpace, W_Root, NoneNotWrapped
from pypy.module.rsocket.interp_socket import converted_error, W_RSocket
from pypy.module.rsocket import rsocket
-from pypy.module.rsocket.rsocket import _c, SocketError
+from pypy.module.rsocket.rsocket import SocketError
from pypy.interpreter.error import OperationError
-
def gethostname(space):
"""gethostname() -> string
@@ -137,7 +136,7 @@
fromfd.unwrap_spec = [ObjSpace, int, int, int, int]
def socketpair(space, family = rsocket.socketpair_default_family,
- type = _c.SOCK_STREAM,
+ type = rsocket.SOCK_STREAM,
proto = 0):
"""socketpair([family[, type[, proto]]]) -> (socket object, socket object)
@@ -158,7 +157,7 @@
Convert a 16-bit integer from network to host byte order.
"""
- return space.wrap(_c.ntohs(x))
+ return space.wrap(rsocket.ntohs(x))
ntohs.unwrap_spec = [ObjSpace, int]
def ntohl(space, w_x):
@@ -175,7 +174,7 @@
space.wrap("expected int/long, %s found" %
(space.type(w_x).getname(space, "?"))))
- return space.wrap(_c.ntohl(x))
+ return space.wrap(rsocket.ntohl(x))
ntohl.unwrap_spec = [ObjSpace, W_Root]
def htons(space, x):
@@ -183,7 +182,7 @@
Convert a 16-bit integer from host to network byte order.
"""
- return space.wrap(_c.htons(x))
+ return space.wrap(rsocket.htons(x))
htons.unwrap_spec = [ObjSpace, int]
def htonl(space, w_x):
@@ -200,7 +199,7 @@
space.wrap("expected int/long, %s found" %
(space.type(w_x).getname(space, "?"))))
- return space.wrap(_c.htonl(x))
+ return space.wrap(rsocket.htonl(x))
htonl.unwrap_spec = [ObjSpace, W_Root]
def inet_aton(space, ip):
@@ -257,7 +256,7 @@
inet_ntop.unwrap_spec = [ObjSpace, int, str]
def getaddrinfo(space, w_host, w_port,
- family=_c.AF_UNSPEC, socktype=0, proto=0, flags=0):
+ family=rsocket.AF_UNSPEC, socktype=0, proto=0, flags=0):
"""getaddrinfo(host, port [, family, socktype, proto, flags])
-> list of (family, socktype, proto, canonname, sockaddr)
Modified: pypy/dist/pypy/module/rsocket/interp_socket.py
==============================================================================
--- pypy/dist/pypy/module/rsocket/interp_socket.py (original)
+++ pypy/dist/pypy/module/rsocket/interp_socket.py Tue Oct 24 18:10:05 2006
@@ -2,7 +2,7 @@
from pypy.interpreter.typedef import TypeDef
from pypy.interpreter.gateway import ObjSpace, W_Root, NoneNotWrapped
from pypy.interpreter.gateway import interp2app
-from pypy.module.rsocket.rsocket import RSocket, _c
+from pypy.module.rsocket.rsocket import RSocket, AF_INET, SOCK_STREAM
from pypy.module.rsocket.rsocket import SocketError, SocketErrorWithErrno
from pypy.interpreter.error import OperationError
from pypy.interpreter import gateway
@@ -320,8 +320,8 @@
return os.fdopen(newfd, mode, buffersize)
''', filename =__file__).interphook('makefile')
-def newsocket(space, w_subtype, family=_c.AF_INET,
- type=_c.SOCK_STREAM, proto=0):
+def newsocket(space, w_subtype, family=AF_INET,
+ type=SOCK_STREAM, proto=0):
# XXX If we want to support subclassing the socket type we will need
# something along these lines. But allocate_instance is only defined
# on the standard object space, so this is not really correct.
Modified: pypy/dist/pypy/module/rsocket/rsocket.py
==============================================================================
--- pypy/dist/pypy/module/rsocket/rsocket.py (original)
+++ pypy/dist/pypy/module/rsocket/rsocket.py Tue Oct 24 18:10:05 2006
@@ -16,7 +16,15 @@
from ctypes import cast, POINTER, c_char, c_char_p, pointer, byref, c_void_p
from ctypes import create_string_buffer, sizeof
from pypy.rpython.rctypes.astruct import offsetof
-from pypy.module.rsocket.socketerror import socket_strerror
+
+
+constants = _c.constants
+locals().update(constants) # Define constants from _c
+
+ntohs = _c.ntohs
+ntohl = _c.ntohl
+htons = _c.htons
+htonl = _c.htonl
class Address(object):
@@ -54,14 +62,14 @@
# If 'result' is specified it must be a prebuilt INETAddress or
# INET6Address that is filled; otherwise a new INETXAddress is returned.
if result is None:
- family = _c.AF_UNSPEC
+ family = AF_UNSPEC
else:
family = result.family
if len(name) == 0:
hints = _c.addrinfo(ai_family = family,
- ai_socktype = _c.SOCK_DGRAM, # dummy
- ai_flags = _c.AI_PASSIVE)
+ ai_socktype = SOCK_DGRAM, # dummy
+ ai_flags = AI_PASSIVE)
res = _c.addrinfo_ptr()
error = _c.getaddrinfo(None, "0", byref(hints), byref(res))
if error:
@@ -77,7 +85,7 @@
# IPv4 also supports the special name "<broadcast>".
if name == '<broadcast>':
- return makeipv4addr(_c.INADDR_BROADCAST, result)
+ return makeipv4addr(INADDR_BROADCAST, result)
# "dd.dd.dd.dd" format.
digits = name.split('.')
@@ -94,7 +102,7 @@
0 <= d1 <= 255 and
0 <= d2 <= 255 and
0 <= d3 <= 255):
- return makeipv4addr(_c.htonl(
+ return makeipv4addr(htonl(
(d0 << 24) | (d1 << 16) | (d2 << 8) | (d3 << 0)),
result)
@@ -118,10 +126,10 @@
# Create a string object representing an IP address.
# For IPv4 this is always a string of the form 'dd.dd.dd.dd'
# (with variable size numbers).
- buf = create_string_buffer(_c.NI_MAXHOST)
+ buf = create_string_buffer(NI_MAXHOST)
error = _c.getnameinfo(byref(self.addr), self.addrlen,
- buf, _c.NI_MAXHOST,
- None, 0, _c.NI_NUMERICHOST)
+ buf, NI_MAXHOST,
+ None, 0, NI_NUMERICHOST)
if error:
raise GAIError(error)
return buf.value
@@ -129,14 +137,14 @@
# ____________________________________________________________
class INETAddress(IPAddress):
- family = _c.AF_INET
+ family = AF_INET
struct = _c.sockaddr_in
maxlen = sizeof(struct)
def __init__(self, host, port):
makeipaddr(host, self)
a = self.as_sockaddr_in()
- a.sin_port = _c.htons(port)
+ a.sin_port = htons(port)
def as_sockaddr_in(self):
if self.addrlen != INETAddress.maxlen:
@@ -151,7 +159,7 @@
def get_port(self):
a = self.as_sockaddr_in()
- return _c.ntohs(a.sin_port)
+ return ntohs(a.sin_port)
def eq(self, other): # __eq__() is not called by RPython :-/
return (isinstance(other, INETAddress) and
@@ -178,10 +186,10 @@
_, w_port = space.unpackiterable(w_address, 2)
port = space.int_w(w_port)
a = self.as_sockaddr_in()
- a.sin_port = _c.htons(port)
+ a.sin_port = htons(port)
def from_in_addr(in_addr):
- sin = _c.sockaddr_in(sin_family = _c.AF_INET) # PLAT sin_len
+ sin = _c.sockaddr_in(sin_family = AF_INET) # PLAT sin_len
sin.sin_addr = in_addr
paddr = cast(pointer(sin), _c.sockaddr_ptr)
result = instantiate(INETAddress)
@@ -197,14 +205,14 @@
# ____________________________________________________________
class INET6Address(IPAddress):
- family = _c.AF_INET6
+ family = AF_INET6
struct = _c.sockaddr_in6
maxlen = sizeof(struct)
def __init__(self, host, port, flowinfo=0, scope_id=0):
makeipaddr(host, self)
a = self.as_sockaddr_in6()
- a.sin6_port = _c.htons(port)
+ a.sin6_port = htons(port)
a.sin6_flowinfo = flowinfo
a.sin6_scope_id = scope_id
@@ -224,7 +232,7 @@
def get_port(self):
a = self.as_sockaddr_in6()
- return _c.ntohs(a.sin6_port)
+ return ntohs(a.sin6_port)
def get_flowinfo(self):
a = self.as_sockaddr_in6()
@@ -273,12 +281,12 @@
if len(pieces_w) > 3: scope_id = space.int_w(pieces_w[3])
else: scope_id = 0
a = self.as_sockaddr_in6()
- a.sin6_port = _c.htons(port)
+ a.sin6_port = htons(port)
a.sin6_flowinfo = flowinfo
a.sin6_scope_id = scope_id
def from_in6_addr(in6_addr):
- sin = _c.sockaddr_in6(sin6_family = _c.AF_INET) # PLAT sin_len
+ sin = _c.sockaddr_in6(sin6_family = AF_INET) # PLAT sin_len
sin.sin6_addr = in6_addr
paddr = cast(pointer(sin), _c.sockaddr_ptr)
result = instantiate(INET6Address)
@@ -294,12 +302,12 @@
# ____________________________________________________________
class UNIXAddress(Address):
- family = _c.AF_UNIX
+ family = AF_UNIX
struct = _c.sockaddr_un
maxlen = sizeof(struct)
def __init__(self, path):
- addr = _c.sockaddr_un(sun_family = _c.AF_UNIX)
+ addr = _c.sockaddr_un(sun_family = AF_UNIX)
if _c.linux and path.startswith('\x00'):
# Linux abstract namespace extension
if len(path) > sizeof(addr.sun_path):
@@ -374,9 +382,9 @@
def makeipv4addr(s_addr, result=None):
if result is None:
result = instantiate(INETAddress)
- elif result.family != _c.AF_INET:
+ elif result.family != AF_INET:
raise RSocketError("address family mismatched")
- sin = _c.sockaddr_in(sin_family = _c.AF_INET) # PLAT sin_len
+ sin = _c.sockaddr_in(sin_family = AF_INET) # PLAT sin_len
sin.sin_addr.s_addr = s_addr
paddr = cast(pointer(sin), _c.sockaddr_ptr)
result.addr = paddr.contents
@@ -410,7 +418,7 @@
"""
_mixin_ = True # for interp_socket.py
fd = _c.INVALID_SOCKET
- def __init__(self, family=_c.AF_INET, type=_c.SOCK_STREAM, proto=0):
+ def __init__(self, family=AF_INET, type=SOCK_STREAM, proto=0):
"""Create a new socket."""
fd = _c.socket(family, type, proto)
if _c.invalid_socket(fd):
@@ -742,7 +750,7 @@
class CSocketError(SocketErrorWithErrno):
def __str__(self):
- return socket_strerror(self.errno)
+ return _c.socket_strerror(self.errno)
def last_error():
return CSocketError(_c.geterrno())
@@ -772,13 +780,12 @@
# ____________________________________________________________
-
-if _c.AF_UNIX is None:
- socketpair_default_family = _c.AF_INET
+if AF_UNIX is None:
+ socketpair_default_family = AF_INET
else:
- socketpair_default_family = _c.AF_UNIX
+ socketpair_default_family = AF_UNIX
-def socketpair(family=socketpair_default_family, type=_c.SOCK_STREAM, proto=0,
+def socketpair(family=socketpair_default_family, type=SOCK_STREAM, proto=0,
SocketClass=RSocket):
"""socketpair([family[, type[, proto]]]) -> (socket object, socket object)
@@ -841,10 +848,10 @@
i = 0
paddr = h_addr_list[0]
while paddr:
- if family == _c.AF_INET:
+ if family == AF_INET:
p = cast(paddr, POINTER(_c.in_addr))
addr = INETAddress.from_in_addr(p.contents)
- elif _c.AF_INET6 is not None and family == _c.AF_INET6:
+ elif AF_INET6 is not None and family == AF_INET6:
p = cast(paddr, POINTER(_c.in6_addr))
addr = INET6Address.from_in6_addr(p.contents)
else:
@@ -868,7 +875,7 @@
return gethost_common(ip, hostent, addr)
def getaddrinfo(host, port_or_service,
- family=_c.AF_UNSPEC, socktype=0, proto=0, flags=0):
+ family=AF_UNSPEC, socktype=0, proto=0, flags=0):
# port_or_service is a string, not an int (but try str(port_number)).
assert port_or_service is None or isinstance(port_or_service, str)
hints = _c.addrinfo(ai_family = family,
@@ -906,7 +913,7 @@
return _c.ntohs(servent.contents.s_port)
def getservbyport(port, proto=None):
- servent = _c.getservbyport(_c.htons(port), proto)
+ servent = _c.getservbyport(htons(port), proto)
if not servent:
raise RSocketError("port/proto not found")
return servent.contents.s_name
@@ -918,8 +925,8 @@
return protoent.contents.p_proto
def getnameinfo(addr, flags):
- host = create_string_buffer(_c.NI_MAXHOST)
- serv = create_string_buffer(_c.NI_MAXSERV)
+ host = create_string_buffer(NI_MAXHOST)
+ serv = create_string_buffer(NI_MAXSERV)
error =_c.getnameinfo(pointer(addr.addr), addr.addrlen,
host, len(host),
serv, len(serv), flags)
@@ -945,9 +952,9 @@
def inet_pton(family, ip):
"human-readable string -> packed string"
- if family == _c.AF_INET:
+ if family == AF_INET:
size = sizeof(_c.in_addr)
- elif _c.AF_INET6 is not None and family == _c.AF_INET6:
+ elif AF_INET6 is not None and family == AF_INET6:
size = sizeof(_c.in6_addr)
else:
raise RSocketError("unknown address family")
@@ -962,10 +969,10 @@
def inet_ntop(family, packed):
"packed string -> human-readable string"
- if family == _c.AF_INET:
+ if family == AF_INET:
srcsize = sizeof(_c.in_addr)
dstsize = _c.INET_ADDRSTRLEN
- elif _c.AF_INET6 is not None and family == _c.AF_INET6:
+ elif AF_INET6 is not None and family == AF_INET6:
srcsize = sizeof(_c.in6_addr)
dstsize = _c.INET6_ADDRSTRLEN
else:
Modified: pypy/dist/pypy/module/rsocket/test/test_rsocket.py
==============================================================================
--- pypy/dist/pypy/module/rsocket/test/test_rsocket.py (original)
+++ pypy/dist/pypy/module/rsocket/test/test_rsocket.py Tue Oct 24 18:10:05 2006
@@ -1,6 +1,5 @@
import py, errno
from pypy.module.rsocket.rsocket import *
-from pypy.module.rsocket.rsocket import _c
def test_ipv4_addr():
a = INETAddress("localhost", 4000)
@@ -59,7 +58,7 @@
addr = INETAddress('127.0.0.1', port)
assert addr.eq(sock.getsockname())
sock.listen(1)
- s2 = RSocket(_c.AF_INET, _c.SOCK_STREAM)
+ s2 = RSocket(AF_INET, SOCK_STREAM)
thread.start_new_thread(s2.connect, (addr,))
s1, addr2 = sock.accept()
assert addr.eq(s2.getpeername())
@@ -80,7 +79,7 @@
s2.close()
def test_simple_udp():
- s1 = RSocket(_c.AF_INET, _c.SOCK_DGRAM)
+ s1 = RSocket(AF_INET, SOCK_DGRAM)
try_ports = [1023] + range(20000, 30000, 437)
for port in try_ports:
print 'binding to port %d:' % (port,),
@@ -95,7 +94,7 @@
addr = INETAddress('127.0.0.1', port)
assert addr.eq(s1.getsockname())
- s2 = RSocket(_c.AF_INET, _c.SOCK_DGRAM)
+ s2 = RSocket(AF_INET, SOCK_DGRAM)
s2.connect(addr)
addr2 = s2.getsockname()
@@ -131,7 +130,7 @@
err = py.test.raises(CSocketError, sock.accept)
assert err.value.errno in (errno.EAGAIN, errno.EWOULDBLOCK)
- s2 = RSocket(_c.AF_INET, _c.SOCK_STREAM)
+ s2 = RSocket(AF_INET, SOCK_STREAM)
s2.setblocking(False)
err = py.test.raises(CSocketError, s2.connect, addr)
assert err.value.errno == errno.EINPROGRESS
@@ -162,8 +161,8 @@
assert isinstance(lst, list)
found = False
for family, socktype, protocol, canonname, addr in lst:
- if (family == _c.AF_INET and
- socktype == _c.SOCK_STREAM and
+ if (family == AF_INET and
+ socktype == SOCK_STREAM and
addr.get_host() == '127.0.0.1' and
addr.get_port() == 80):
found = True
@@ -185,29 +184,30 @@
def test_getsetsockopt():
+ from ctypes import c_int, c_char, c_char_p, POINTER, cast, pointer, sizeof
# A socket sould start with reuse == 0
- s = RSocket(_c.AF_INET, _c.SOCK_STREAM)
- reuse = s.getsockopt_int(_c.SOL_SOCKET, _c.SO_REUSEADDR)
+ s = RSocket(AF_INET, SOCK_STREAM)
+ reuse = s.getsockopt_int(SOL_SOCKET, SO_REUSEADDR)
assert reuse == 0
- s.setsockopt_int(_c.SOL_SOCKET, _c.SO_REUSEADDR, 1)
- reuse = s.getsockopt_int(_c.SOL_SOCKET, _c.SO_REUSEADDR)
+ s.setsockopt_int(SOL_SOCKET, SO_REUSEADDR, 1)
+ reuse = s.getsockopt_int(SOL_SOCKET, SO_REUSEADDR)
assert reuse != 0
# Test string case
- s = RSocket(_c.AF_INET, _c.SOCK_STREAM)
- reusestr = s.getsockopt(_c.SOL_SOCKET, _c.SO_REUSEADDR, sizeof(_c.c_int))
- reuseptr = _c.cast(_c.c_char_p(reusestr), _c.POINTER(_c.c_int))
+ s = RSocket(AF_INET, SOCK_STREAM)
+ reusestr = s.getsockopt(SOL_SOCKET, SO_REUSEADDR, sizeof(c_int))
+ reuseptr = cast(c_char_p(reusestr), POINTER(c_int))
assert reuseptr[0] == 0
- optval = _c.c_int(1)
- optvalp = _c.cast(_c.pointer(optval), _c.POINTER(_c.c_char))
- optstr = optvalp[:sizeof(_c.c_int)]
- s.setsockopt(_c.SOL_SOCKET, _c.SO_REUSEADDR, optstr)
- reusestr = s.getsockopt(_c.SOL_SOCKET, _c.SO_REUSEADDR, sizeof(_c.c_int))
- reuseptr = _c.cast(_c.c_char_p(reusestr), _c.POINTER(_c.c_int))
+ optval = c_int(1)
+ optvalp = cast(pointer(optval), POINTER(c_char))
+ optstr = optvalp[:sizeof(c_int)]
+ s.setsockopt(SOL_SOCKET, SO_REUSEADDR, optstr)
+ reusestr = s.getsockopt(SOL_SOCKET, SO_REUSEADDR, sizeof(c_int))
+ reuseptr = cast(c_char_p(reusestr), POINTER(c_int))
assert reuseptr[0] != 0
def test_dup():
- s = RSocket(_c.AF_INET, _c.SOCK_STREAM)
- s.setsockopt_int(_c.SOL_SOCKET, _c.SO_REUSEADDR, 1)
+ s = RSocket(AF_INET, SOCK_STREAM)
+ s.setsockopt_int(SOL_SOCKET, SO_REUSEADDR, 1)
s.bind(INETAddress('localhost', 50007))
s2 = s.dup()
assert s.fileno() != s2.fileno()
@@ -218,8 +218,8 @@
HOST = 'localhost'
def setup_method(self, method):
- self.serv = RSocket(_c.AF_INET, _c.SOCK_STREAM)
- self.serv.setsockopt_int(_c.SOL_SOCKET, _c.SO_REUSEADDR, 1)
+ self.serv = RSocket(AF_INET, SOCK_STREAM)
+ self.serv.setsockopt_int(SOL_SOCKET, SO_REUSEADDR, 1)
self.serv.bind(INETAddress(self.HOST, self.PORT))
self.serv.listen(1)
More information about the Pypy-commit
mailing list