{"action":"created","issue":{"url":"https://api.github.com/repos/derekparker/delve/issues/88","labels_url":"https://api.github.com/repos/derekparker/delve/issues/88/labels{/name}","comments_url":"https://api.github.com/repos/derekparker/delve/issues/88/comments","events_url":"https://api.github.com/repos/derekparker/delve/issues/88/events","html_url":"https://github.com/derekparker/delve/pull/88","id":63323897,"number":88,"title":"WIP: Refactor to HTTP client/server model","user":{"login":"ironcladlou","id":298299,"avatar_url":"https://avatars.githubusercontent.com/u/298299?v=3","gravatar_id":"","url":"https://api.github.com/users/ironcladlou","html_url":"https://github.com/ironcladlou","followers_url":"https://api.github.com/users/ironcladlou/followers","following_url":"https://api.github.com/users/ironcladlou/following{/other_user}","gists_url":"https://api.github.com/users/ironcladlou/gists{/gist_id}","starred_url":"https://api.github.com/users/ironcladlou/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ironcladlou/subscriptions","organizations_url":"https://api.github.com/users/ironcladlou/orgs","repos_url":"https://api.github.com/users/ironcladlou/repos","events_url":"https://api.github.com/users/ironcladlou/events{/privacy}","received_events_url":"https://api.github.com/users/ironcladlou/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":69,"created_at":"2015-03-20T22:53:04Z","updated_at":"2015-04-02T13:50:18Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/derekparker/delve/pulls/88","html_url":"https://github.com/derekparker/delve/pull/88","diff_url":"https://github.com/derekparker/delve/pull/88.diff","patch_url":"https://github.com/derekparker/delve/pull/88.patch"},"body":"**NOTE** This is a work-in-progress, and the PR is to facilitate ongoing design discussion. This PR is intended to address #22.\r\n\r\n### Goals\r\n\r\n1. Introduce an HTTP server using `net.Listener` to provide a JSON-based remote API to the debugger\r\n  1. Support RESTful operations for state retrieval and commands\r\n  2. Support a long-polling watch requests to support event notifications\r\n2. Provide a Go client interface and default HTTP implementation\r\n4. Refactor the terminal to be a pure API client consumer\r\n\r\nThe original PR is based on [this comment](https://github.com/derekparker/delve/issues/22#issuecomment-84154167) on #22.\r\n"},"comment":{"url":"https://api.github.com/repos/derekparker/delve/issues/comments/88908598","html_url":"https://github.com/derekparker/delve/pull/88#issuecomment-88908598","issue_url":"https://api.github.com/repos/derekparker/delve/issues/88","id":88908598,"user":{"login":"ironcladlou","id":298299,"avatar_url":"https://avatars.githubusercontent.com/u/298299?v=3","gravatar_id":"","url":"https://api.github.com/users/ironcladlou","html_url":"https://github.com/ironcladlou","followers_url":"https://api.github.com/users/ironcladlou/followers","following_url":"https://api.github.com/users/ironcladlou/following{/other_user}","gists_url":"https://api.github.com/users/ironcladlou/gists{/gist_id}","starred_url":"https://api.github.com/users/ironcladlou/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ironcladlou/subscriptions","organizations_url":"https://api.github.com/users/ironcladlou/orgs","repos_url":"https://api.github.com/users/ironcladlou/repos","events_url":"https://api.github.com/users/ironcladlou/events{/privacy}","received_events_url":"https://api.github.com/users/ironcladlou/received_events","type":"User","site_admin":false},"created_at":"2015-04-02T13:50:18Z","updated_at":"2015-04-02T13:50:18Z","body":"Refactored the server/debugger setup/shutdown mechanics. Added (untested) attach support. To stop the debugger, you issue a `GET /detach?kill=true`. I'm not crazy about using a GET but it gets the discussion started. I wasn't sure about adding arguments to the command path.\r\n\r\nThe client call to `Detach` is synchronous, so when the terminal gets a result `Detach`, it knows the debugger is done and the process detached and/or killed, and the terminal can then just exit and no futher action is necessary.\r\n\r\nI had to make a lot of changes to debugger/server for this, so it'll be worth another look."}}