{"action":"created","issue":{"url":"https://api.github.com/repos/uWebSockets/uWebSockets/issues/180","repository_url":"https://api.github.com/repos/uWebSockets/uWebSockets","labels_url":"https://api.github.com/repos/uWebSockets/uWebSockets/issues/180/labels{/name}","comments_url":"https://api.github.com/repos/uWebSockets/uWebSockets/issues/180/comments","events_url":"https://api.github.com/repos/uWebSockets/uWebSockets/issues/180/events","html_url":"https://github.com/uWebSockets/uWebSockets/issues/180","id":164027733,"number":180,"title":"dependency header in public header files","user":{"login":"chemhack","id":39768,"avatar_url":"https://avatars.githubusercontent.com/u/39768?v=3","gravatar_id":"","url":"https://api.github.com/users/chemhack","html_url":"https://github.com/chemhack","followers_url":"https://api.github.com/users/chemhack/followers","following_url":"https://api.github.com/users/chemhack/following{/other_user}","gists_url":"https://api.github.com/users/chemhack/gists{/gist_id}","starred_url":"https://api.github.com/users/chemhack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chemhack/subscriptions","organizations_url":"https://api.github.com/users/chemhack/orgs","repos_url":"https://api.github.com/users/chemhack/repos","events_url":"https://api.github.com/users/chemhack/events{/privacy}","received_events_url":"https://api.github.com/users/chemhack/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/uWebSockets/uWebSockets/labels/c++","name":"c++","color":"fbca04"},{"url":"https://api.github.com/repos/uWebSockets/uWebSockets/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-07-06T08:48:45Z","updated_at":"2016-07-13T10:14:03Z","closed_at":null,"body":"libuv, zlib and openssl 's header files are referenced in header files referenced by uWS.h. \r\n\r\nWhen using uWS and a dependency for a third-party building target(not build with cmake in the same project), those libraries' headers need to be available to the third-party target as well.\r\n\r\nConsidering uWS's C++ API do not explicitly require libuv or openssl datatypes, is it possible to hide uWS's implementation details from public headers? \r\n\r\nPimpl idiom can solve this, but will make the source structure a little bit ugly. \r\n\r\n@alexhultman what do you think? "},"comment":{"url":"https://api.github.com/repos/uWebSockets/uWebSockets/issues/comments/232314736","html_url":"https://github.com/uWebSockets/uWebSockets/issues/180#issuecomment-232314736","issue_url":"https://api.github.com/repos/uWebSockets/uWebSockets/issues/180","id":232314736,"user":{"login":"chemhack","id":39768,"avatar_url":"https://avatars.githubusercontent.com/u/39768?v=3","gravatar_id":"","url":"https://api.github.com/users/chemhack","html_url":"https://github.com/chemhack","followers_url":"https://api.github.com/users/chemhack/followers","following_url":"https://api.github.com/users/chemhack/following{/other_user}","gists_url":"https://api.github.com/users/chemhack/gists{/gist_id}","starred_url":"https://api.github.com/users/chemhack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chemhack/subscriptions","organizations_url":"https://api.github.com/users/chemhack/orgs","repos_url":"https://api.github.com/users/chemhack/repos","events_url":"https://api.github.com/users/chemhack/events{/privacy}","received_events_url":"https://api.github.com/users/chemhack/received_events","type":"User","site_admin":false},"created_at":"2016-07-13T10:14:03Z","updated_at":"2016-07-13T10:14:03Z","body":"I looked into it last few days, there are a few problems to be discussed before I can implement this.\r\n\r\nServer.h:\r\n- `SSLContext` do not need to exposed publicly. We can add a new struct with cert/key paths for Server's constructor.\r\n- `onUpgrade` callback is using `uv_os_sock_t`, this can be solved by our own os_sock_t.\r\n\r\nWebSocket.h\r\n- `WebSocket` class is only a thin wrapper around `uv_poll_t*`, it doesn't make too much sense to add a wrapper for `WebSocket`. I would suggest just make use `void*` instead. \r\n\r\nRegarding performance, if we only make a wrapper for `Server` class, performance harm is close to zero, as the `Server` class is only used to init configs(constructor), and set callbacks. \r\n\r\n@alexhultman if you agree i can implement necessary changes. "}}
{"actor":{"display_login":"chemhack"}}