mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
Change: 'thread.setDaemon(val)' to 'thread.daemon = val' 'thread.isDaemon()' to 'thread.daemon' 'condition.notifyAll()' to 'condition.notify_all()' 'event.isSet()' to 'event.is_set()' GitOrigin-RevId: 76191fde184b407251303684cb85be9cfda3c7ae
59 lines
2.4 KiB
Python
59 lines
2.4 KiB
Python
import socket
|
|
import threading
|
|
|
|
from _pydev_comm.pydev_server import TSingleThreadedServer
|
|
from _pydev_comm.pydev_transport import TSyncClient, open_transports_as_client, _create_client_server_transports
|
|
from _shaded_thriftpy.protocol import TBinaryProtocolFactory
|
|
from _shaded_thriftpy.thrift import TProcessor
|
|
|
|
|
|
def make_rpc_client(client_service, host, port, proto_factory=TBinaryProtocolFactory(strict_read=False, strict_write=False)):
|
|
client_transport, server_transport = open_transports_as_client((host, port))
|
|
|
|
client_protocol = proto_factory.get_protocol(client_transport)
|
|
|
|
client = TSyncClient(client_service, client_protocol)
|
|
|
|
return client, server_transport
|
|
|
|
|
|
def start_rpc_server(server_transport, server_service, server_handler, proto_factory=TBinaryProtocolFactory(strict_read=False,
|
|
strict_write=False)):
|
|
# setup server
|
|
processor = TProcessor(server_service, server_handler)
|
|
server = TSingleThreadedServer(processor, server_transport, daemon=True, iprot_factory=proto_factory)
|
|
server.serve()
|
|
return server
|
|
|
|
|
|
def start_rpc_server_and_make_client(host, port, server_service, client_service, server_handler_factory,
|
|
proto_factory=TBinaryProtocolFactory(strict_read=False, strict_write=False)):
|
|
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
|
|
|
server_socket.bind((host, port))
|
|
server_socket.listen(1)
|
|
|
|
t = threading.Thread(target=_rpc_server, args=(server_socket, server_service, client_service, server_handler_factory, proto_factory))
|
|
t.daemon = True
|
|
t.start()
|
|
|
|
return server_socket
|
|
|
|
|
|
def _rpc_server(server_socket, server_service, client_service, server_handler_factory, proto_factory):
|
|
client_socket, address = server_socket.accept()
|
|
|
|
client_transport, server_transport = _create_client_server_transports(client_socket)
|
|
|
|
client_protocol = proto_factory.get_protocol(client_transport)
|
|
|
|
rpc_client = TSyncClient(client_service, client_protocol)
|
|
|
|
server_handler = server_handler_factory(rpc_client)
|
|
|
|
# setup server
|
|
processor = TProcessor(server_service, server_handler)
|
|
server = TSingleThreadedServer(processor, server_transport, daemon=True, iprot_factory=proto_factory)
|
|
server.serve()
|