[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