mirror of
https://github.com/microsoft/debugpy.git
synced 2025-12-23 08:48:12 +00:00
Create client socket and connect to debug server (#1595)
* Create client socket and connect to debug server * Addressing comments * Some minor fixes
This commit is contained in:
parent
c03206972d
commit
d24a39de31
3 changed files with 56 additions and 12 deletions
|
|
@ -42,9 +42,7 @@ class Channels(singleton.ThreadSafeSingleton):
|
|||
server_sock = socket.create_server(host, port)
|
||||
try:
|
||||
log.info(
|
||||
"ptvsd debugServer waiting for connection on {0}:{1}...",
|
||||
host,
|
||||
port,
|
||||
"ptvsd debugServer waiting for connection on {0}:{1}...", host, port
|
||||
)
|
||||
sock, (ide_host, ide_port) = server_sock.accept()
|
||||
finally:
|
||||
|
|
@ -65,13 +63,44 @@ class Channels(singleton.ThreadSafeSingleton):
|
|||
},
|
||||
)
|
||||
|
||||
|
||||
@singleton.autolocked_method
|
||||
def connect_to_server(self, address):
|
||||
assert self.server is None
|
||||
raise NotImplementedError
|
||||
|
||||
# Import message handlers lazily to avoid circular imports.
|
||||
from ptvsd.adapter import messages
|
||||
|
||||
host, port = address
|
||||
sock = socket.create_client()
|
||||
sock.connect(address)
|
||||
|
||||
server_stream = messaging.JsonIOStream.from_socket(sock, "server")
|
||||
|
||||
self.server = messaging.JsonMessageChannel(
|
||||
server_stream, messages.ServerMessages(), server_stream.name
|
||||
)
|
||||
self.server.start()
|
||||
|
||||
@singleton.autolocked_method
|
||||
def accept_connection_from_server(self, address):
|
||||
assert self.server is None
|
||||
raise NotImplementedError
|
||||
|
||||
# Import message handlers lazily to avoid circular imports.
|
||||
from ptvsd.adapter import messages
|
||||
|
||||
host, port = address
|
||||
server_sock = socket.create_server(host, port)
|
||||
try:
|
||||
log.info(
|
||||
"ptvsd adapter waiting for connection on {0}:{1}...", host, port
|
||||
)
|
||||
sock, (server_host, server_port) = server_sock.accept()
|
||||
finally:
|
||||
server_sock.close()
|
||||
log.info("Debug server connection accepted from {0}:{1}.", server_host, server_port)
|
||||
server_stream = messaging.JsonIOStream.from_socket(sock, "server")
|
||||
|
||||
self.server = messaging.JsonMessageChannel(
|
||||
server_stream, messages.ServerMessages(), server_stream.name
|
||||
)
|
||||
self.server.start()
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ from __future__ import absolute_import, print_function, unicode_literals
|
|||
|
||||
import ptvsd
|
||||
from ptvsd.common import log, messaging, singleton
|
||||
from ptvsd.adapter import channels, debuggee, state
|
||||
from ptvsd.adapter import channels, debuggee, state, options
|
||||
|
||||
|
||||
class Shared(singleton.ThreadSafeSingleton):
|
||||
|
|
@ -136,8 +136,11 @@ class IDEMessages(Messages):
|
|||
# Handles various attributes common to both "launch" and "attach".
|
||||
def _debug_config(self, request):
|
||||
assert request.command in ("launch", "attach")
|
||||
pass # TODO: options and debugOptions
|
||||
pass # TODO: pathMappings (unless server does that entirely?)
|
||||
|
||||
# TODO: Change all old VS style debugger settings to debugOptions
|
||||
# See https://github.com/microsoft/ptvsd/issues/1219
|
||||
pass
|
||||
|
||||
|
||||
@_replay_to_server
|
||||
@_only_allowed_while("initializing")
|
||||
|
|
@ -155,8 +158,10 @@ class IDEMessages(Messages):
|
|||
self.terminate_on_disconnect = False
|
||||
self._debug_config(request)
|
||||
|
||||
# TODO: get address and port
|
||||
channels.connect_to_server()
|
||||
options.host = request.arguments.get("host", options.host)
|
||||
options.port = int(request.arguments.get("port", options.port))
|
||||
|
||||
self._channels.connect_to_server(address=(options.host, options.port))
|
||||
|
||||
return self._configure()
|
||||
|
||||
|
|
@ -166,7 +171,7 @@ class IDEMessages(Messages):
|
|||
def _configure(self):
|
||||
log.debug("Replaying previously received messages to server.")
|
||||
|
||||
for msg in self.initial_messages:
|
||||
for msg in self._initial_messages:
|
||||
# TODO: validate server response to ensure it matches our own earlier.
|
||||
self._server.propagate(msg)
|
||||
|
||||
|
|
|
|||
10
src/ptvsd/adapter/options.py
Normal file
10
src/ptvsd/adapter/options.py
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
# Licensed under the MIT License. See LICENSE in the project root
|
||||
# for license information.
|
||||
|
||||
|
||||
host = "127.0.0.1"
|
||||
"""Default host name for the debug server"""
|
||||
|
||||
port = 5678
|
||||
"""Default port for the debug server"""
|
||||
Loading…
Add table
Add a link
Reference in a new issue