Skip to content

Commit

Permalink
Handle socket error during creation
Browse files Browse the repository at this point in the history
  • Loading branch information
Toni-SM committed Aug 16, 2022
1 parent 06e9f25 commit e8cd645
Showing 1 changed file with 17 additions and 7 deletions.
24 changes: 17 additions & 7 deletions exts/semu.misc.vscode/semu/misc/vscode/scripts/extension.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ def on_startup(self, ext_id):
self._settings = carb.settings.get_settings()
self._socket_ip = self._settings.get("/exts/semu.misc.vscode/socket_ip")
self._socket_port = self._settings.get("/exts/semu.misc.vscode/socket_port")
self._socket_last_error = ""

# menu item
self._editor_menu = omni.kit.ui.get_editor_menu()
Expand All @@ -88,7 +89,7 @@ def on_startup(self, ext_id):
def on_shutdown(self):
# clean up menu item
if self._menu is not None:
self._editor_menu.remove_item(self._menu)
self._editor_menu.remove_item(Extension.MENU_PATH)
self._menu = None
# close the socket
if self._server:
Expand All @@ -101,7 +102,7 @@ def _show_notification(self, *args, **kwargs) -> None:
"""Show extension data in the notification area
"""
if self._server is None:
notification = "Unable to start the socket server at {}:{}".format(self._socket_ip, self._socket_port)
notification = "Unable to start the socket server at {}:{}. {}".format(self._socket_ip, self._socket_port, self._socket_last_error)
status=omni.kit.notification_manager.NotificationStatus.WARNING
else:
notification = "Embedded VS Code socket server is running at {}:{}".format(self._socket_ip, self._socket_port)
Expand Down Expand Up @@ -137,11 +138,18 @@ def data_received(self, data):
_get_event_loop())

async def server_task():
self._server = await _get_event_loop().create_server(protocol_factory=lambda: ServerProtocol(self),
host=self._socket_ip,
port=self._socket_port,
family=socket.AF_INET,
reuse_port=None if sys.platform == 'win32' else True)
try:
self._server = await _get_event_loop().create_server(protocol_factory=lambda: ServerProtocol(self),
host=self._socket_ip,
port=self._socket_port,
family=socket.AF_INET,
reuse_port=None if sys.platform == 'win32' else True)
except Exception as e:
self._server = None
self._socket_last_error = str(e)
carb.log_error(str(e))
return

await self._server.start_serving()

task = _get_event_loop().create_task(server_task())
Expand Down Expand Up @@ -193,6 +201,8 @@ async def _exec_code_async(self, statement: str, transport: asyncio.Transport) -

# add output to reply dictionary for printing
reply["output"] = _stdout.getvalue()
if reply["output"].endswith('\n'):
reply["output"] = reply["output"][:-1]

# send the reply to the client
reply = json.dumps(reply)
Expand Down

0 comments on commit e8cd645

Please sign in to comment.