def connect(self, socket_serv, address, cb_func, cb_param):
        """
        This method has the same semantics as the ``connect``
        method of ``TcpSymbianSocket``.

        In the BT case, ``address`` must be of the form
        ("hh:hh:hh:hh:hh:hh", port).
        """
        address, port = address
        check_mac(address)
        if self.connected:
            raise AsyncSocketAlreadyOpen
        if self.connecting:
            raise AsyncSocketRequestPending
        if self.inited:
            self.close()
        self.native = aosocketnativenew.AoSocket()
        self.inited = True
        try:
            self.native.set_socket_serv(socket_serv.native)
            self.native.open_bt()
            self.native.connect_bt(unicode(address), port, self.connect_cb,
                                   (cb_func, cb_param))
            self.connecting = True
        except:
            self.close()
            raise
    def listen(self, socket_serv, address, queue_size, service_id,
               service_name):
        """
        This method has the same semantics as the ``listen``
        method of ``TcpSymbianSocket``.

        Note that no listening address needs to be specified
        in the BT case, as it is determined automatically.
        """
        if self.inited:
            raise AsyncSocketAlreadyOpen
        self.native = aosocketnativenew.AoSocket()
        self.inited = True

        try:
            port = address[1]
        except IndexError:
            port = None

        try:
            self.native.set_socket_serv(socket_serv.native)
            self.native.open_bt()
            if not port:
                port = self.get_available_port()
            self.native.listen_bt(port, queue_size, service_id, service_name)
            self.connected = True
        except:
            self.close()
            raise
    def listen(self, socket_serv, address, queue_size):
        """
        A synchronous method that may throw an exception.

        Opens the still closed socket, has it bound to the specified
        ``address``, and has it start listening to connections at that
        address. The maximum number of connections are allowed in the
        accept queue is set to ``queue_size``.

        The ``socket_serv`` parameter must be a handle to an open
        socket session. The listening socket will then belong to that
        session.
        """
        if self.inited:
            raise AsyncSocketAlreadyOpen
        self.native = aosocketnativenew.AoSocket()
        self.inited = True
        try:
            self.native.set_socket_serv(socket_serv.native)
            self.native.open_tcp()
            self.native.listen_tcp(unicode(address[0]), address[1], queue_size)
            self.connected = True
        except:
            self.close()
            raise
    def connect(self, socket_serv, address, cb_func, cb_param):
        """
        An asynchronous method that may throw an exception.

        Connects the still closed socket into a server at ``address``.

        The ``socket_serv`` parameter must be a handle to an open
        socket server session. The connected socket will then belong
        to that session.

        Once the request completes, an event will be delivered to the
        thread that made the request. The event will be delivered by
        calling ``cb_func`` with the following parameters:

        * a Symbian-specific error code

        * ``cb_param``

        An exception in the callback will be handled by the
        ``handle_callback_error`` method.
        """
        if self.connected:
            raise AsyncSocketAlreadyOpen
        if self.connecting:
            raise AsyncSocketRequestPending
        if self.inited:
            self.close()
        self.native = aosocketnativenew.AoSocket()
        self.inited = True
        try:
            self.native.set_socket_serv(socket_serv.native)
            self.native.open_tcp()
            self.native.connect_tcp(unicode(address[0]), address[1],
                                    self.connect_cb, (cb_func, cb_param))
            self.connecting = True
        except:
            self.close()
            raise
def cl_thread_func(main_lock):
    try:
        tell("(client thread)")

        global cl_socket_serv
        cl_socket_serv = aosocketnativenew.AoSocketServ()
        cl_socket_serv.connect()
        tell("created socket server")

        cl_socket = aosocketnativenew.AoSocket()
        tell("created socket")
        cl_socket.open(cl_socket_serv)
        tell("initialized socket")

        cl_socket.close()
        # should free here, but do not
        #cl_socket_serv.close()

        tell("client now all done, releasing main thread")
        thread_finish_logging()
        main_lock.signal()
    except:
        log_exception()
    def blank(self, socket_serv):
        """
        A synchronous method that may throw an exception.

        Turns the closed socket into a blank socket, which is the type
        of socket that the ``accept`` method requires as a parameter.

        The ``socket_serv`` parameter must be a handle to an open
        socket session. The blank socket will then belong to that
        session.

        This method returns the object instance being operated upon.
        """
        if self.inited:
            raise AsyncSocketAlreadyOpen
        self.native = aosocketnativenew.AoSocket()
        self.inited = True
        try:
            self.native.set_socket_serv(socket_serv.native)
            self.native.blank()
        except:
            self.close()
            raise
        return self
def cl_thread_func(main_lock):

    def cl_read(error, data, dummy):
        try:
            if error == 0:
                tell("read " + data)
            else:
                tell("failed with code %d" % error)
            cl_loop.stop()
        except:
            log_exception()

    def cl_written(error, dummy):
        try:
            if error == 0:
                tell("sent request")
                cl_socket.read_some(1024, cl_read, None)
            else:
                tell("failed with code %d" % error)
                cl_loop.stop()
        except:
            log_exception()

    def cl_connected(error, dummy):
        try:
            if error == 0:
                tell("connected to server")
                cl_socket.write_data("GET / HTTP/1.0\n\n", cl_written, None)
            else:
                tell("failed with code %d" % error)
                cl_loop.stop()
        except:
            log_exception()


    try:
        tell("(client thread)")
    
        cl_socket_serv = aosocketnativenew.AoSocketServ()
        cl_socket_serv.connect()
        tell("created socket server")

        cl_socket = aosocketnativenew.AoSocket()
        tell("created socket")
        cl_socket.open(cl_socket_serv)
        tell("initialized socket")

        tell("attempting connect")
        cl_socket.connect_bt(unicode(address),
                             cl_connected, None)
        tell("connect request made")
    except:
        log_exception()

    cl_loop = aosocketnativenew.AoLoop()
    cl_loop.open()
    cl_loop.start()
    
    cl_loop.close()
    cl_socket.close()
    cl_socket_serv.close()
        
    tell("client now all done, releasing main thread")
    thread_finish_logging()
    main_lock.signal()
Esempio n. 8
0
def sv_thread_func(main_lock):
    def sv_written(error, dummy):
        try:
            if error == 0:
                tell("sent reply")
            else:
                tell("failed with code %d" % error)
            sv_loop.stop()
        except:
            log_exception()

    def sv_read(error, data, dummy):
        try:
            if error == 0:
                tell("got request " + data)
                sv_socket.write_data(data + " World!", sv_written, None)
            else:
                tell("failed with code %d" % error)
        except:
            log_exception()

    def sv_accepted(error, sv_socket, dummy):
        try:
            if error == 0:
                tell("accepted client")
                sv_socket.read_some(1024, sv_read, None)
            else:
                tell("failed with code %d" % error)
        except:
            log_exception()

    def ac_configured(error, dummy):
        try:
            if error == 0:
                tell("socket configured")
                tell("now making accept request")
                ac_socket.accept_client(sv_socket, sv_accepted, None)
                tell("did accept request")
            else:
                tell("failed with code %d" % error)
        except:
            log_exception()

    try:
        tell("(server thread)")

        sv_socket_serv = aosocketnativenew.AoSocketServ()
        sv_socket_serv.connect()
        tell("created socket server")

        ac_socket = aosocketnativenew.AoSocket()
        tell("created socket")
        ac_socket.open(sv_socket_serv)
        tell("initialized socket")

        tell("creating blank socket")
        sv_socket = aosocketnativenew.AoSocket()
        sv_socket.open(sv_socket_serv)
        sv_socket.blank()
        tell("created blank socket")

        tell("calling listen")
        ac_socket.listen_bt()
        tell("socket bound -- now configuring")

        ac_socket.config_bt(ac_configured, None)
        tell("did config request")
    except:
        log_exception()

    sv_loop = aosocketnativenew.AoLoop()
    sv_loop.open()
    sv_loop.start()

    sv_loop.close()
    sv_socket.close()
    ac_socket.close()
    sv_socket_serv.close()

    tell("server now all done, releasing main thread")
    thread_finish_logging()
    main_lock.signal()
def sv_thread_func(main_lock):

    def sv_written(error, dummy):
        try:
            if error == 0:
                tell("sent reply")
            else:
                tell("failed with code %d" % error)
            sv_loop.stop()
        except:
            log_exception()
    
    def sv_read(error, data, dummy):
        try:
            if error == 0:
                qty = len(data)
                tell("got request of size " + str(qty))

                global amount_read
                amount_read += qty
                if amount_read < data_amount:
                    log_heap_status("sv")
                    sv_socket.read_some(data_amount - amount_read,
                                        sv_read, None)
                    log_heap_status("sv")
                else:
                    sv_socket.write_data("thanks", sv_written, None)
                    
            else:
                tell("failed with code %d" % error)
        except:
            log_exception()
    
    def sv_accepted(error, sv_socket, dummy):
        try:
            if error == 0:
                tell("accepted client")
                log_heap_status("sv")
                sv_socket.read_some(100000, sv_read, None)
                log_heap_status("sv")
            else:
                tell("failed with code %d" % error)
        except:
            log_exception()
        
    try:
        tell("(server thread with heap %d)" % miso.heap_base_address())

        log_heap_status("sv")
        logwrite("heap avail %d" % test_heap_avail())
        log_heap_status("sv")

	#bigdata = gen_data(999999)

        sv_socket_serv = aosocketnativenew.AoSocketServ()
        sv_socket_serv.connect()
        tell("created socket server")

        ac_socket = aosocketnativenew.AoSocket()
        tell("created socket")
        ac_socket.set_socket_serv(sv_socket_serv)
        ac_socket.open_tcp()
        tell("initialized socket")

        tell("creating blank socket")
        sv_socket = aosocketnativenew.AoSocket()
        sv_socket.set_socket_serv(sv_socket_serv)
        sv_socket.blank()
        tell("created blank socket")
        ac_socket.listen_tcp(unicode(address[0]), address[1], 5)
        tell("now listening -- doing an accept")
        ac_socket.accept_client(sv_socket, sv_accepted, None)
        tell("did accept request")
    except:
        log_exception()

    sv_loop = aosocketnativenew.AoLoop()
    sv_loop.open()
    sv_loop.start()
    
    sv_loop.close()
    sv_socket.close()
    ac_socket.close()
    sv_socket_serv.close()
        
    tell("server now all done, releasing main thread")
    thread_finish_logging()
    main_lock.signal()
def cl_thread_func(main_lock):

    def cl_read(error, data, dummy):
        try:
            if error == 0:
                tell("read " + data)
            else:
                tell("failed with code %d" % error)
            cl_loop.stop()
        except:
            log_exception()

    def cl_written(error, dummy):
        try:
            if error == 0:
                tell("sent request")
                cl_socket.read_some(1024, cl_read, None)
            else:
                tell("failed with code %d" % error)
        except:
            log_exception()

    def cl_connected(error, dummy):
        try:
            if error == 0:
                tell("connected to server")
                log_heap_status("cl")
                cl_socket.write_data(gen_data(data_amount), cl_written, None)
                log_heap_status("cl")
            else:
                tell("failed with code %d" % error)
        except:
            log_exception()


    try:
        tell("(client thread with heap %d)" % miso.heap_base_address())

        log_heap_status("cl")
        logwrite("heap avail %d" % test_heap_avail())
        log_heap_status("cl")

        #bigdata = gen_data(999999)

        cl_socket_serv = aosocketnativenew.AoSocketServ()
        cl_socket_serv.connect()
        tell("created socket server")

        cl_socket = aosocketnativenew.AoSocket()
        tell("created socket")
        cl_socket.set_socket_serv(cl_socket_serv)
        cl_socket.open_tcp()
        tell("initialized socket")

        tell("attempting connect")
        cl_socket.connect_tcp(unicode(address[0]), address[1],
                              cl_connected, None)
        tell("connect request made")
    except:
        log_exception()

    cl_loop = aosocketnativenew.AoLoop()
    cl_loop.open()
    cl_loop.start()
    
    cl_loop.close()
    cl_socket.close()
    cl_socket_serv.close()
        
    tell("client now all done, releasing main thread")
    thread_finish_logging()
    main_lock.signal()