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:
Karthik Nadig 2019-07-15 14:35:47 -07:00 committed by GitHub
parent c03206972d
commit d24a39de31
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 56 additions and 12 deletions

View file

@ -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()

View file

@ -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)

View 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"""