{"action":"created","issue":{"url":"https://api.github.com/repos/netty/netty/issues/3339","labels_url":"https://api.github.com/repos/netty/netty/issues/3339/labels{/name}","comments_url":"https://api.github.com/repos/netty/netty/issues/3339/comments","events_url":"https://api.github.com/repos/netty/netty/issues/3339/events","html_url":"https://github.com/netty/netty/pull/3339","id":54985938,"number":3339,"title":"Back port HTTP/2 codec from master to 4.1","user":{"login":"NiteshKant","id":820005,"avatar_url":"https://avatars.githubusercontent.com/u/820005?v=3","gravatar_id":"","url":"https://api.github.com/users/NiteshKant","html_url":"https://github.com/NiteshKant","followers_url":"https://api.github.com/users/NiteshKant/followers","following_url":"https://api.github.com/users/NiteshKant/following{/other_user}","gists_url":"https://api.github.com/users/NiteshKant/gists{/gist_id}","starred_url":"https://api.github.com/users/NiteshKant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NiteshKant/subscriptions","organizations_url":"https://api.github.com/users/NiteshKant/orgs","repos_url":"https://api.github.com/users/NiteshKant/repos","events_url":"https://api.github.com/users/NiteshKant/events{/privacy}","received_events_url":"https://api.github.com/users/NiteshKant/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-01-21T07:19:33Z","updated_at":"2015-01-21T07:31:28Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/netty/netty/pulls/3339","html_url":"https://github.com/netty/netty/pull/3339","diff_url":"https://github.com/netty/netty/pull/3339.diff","patch_url":"https://github.com/netty/netty/pull/3339.patch"},"body":"##### Motivation\r\n\r\nHTTP/2 codec was implemented in master branch.\r\nSince, master is not yet stable and will be some time before it gets released, backporting it to 4.1, enables people to use the codec with a stable netty version.\r\n\r\n##### Modification:\r\n\r\nThe code has been copied from master branch as is, with minor modifications to suit the `ChannelHandler` API in 4.x.\r\nApart from that change, there are two backward incompatible API changes included, namely,\r\n\r\n- Added an abstract method:\r\n\r\n  ```java\r\npublic abstract Map.Entry<CharSequence, CharSequence> forEachEntry(EntryVisitor<CharSequence> visitor)\r\n            throws Exception;\r\n```\r\n\r\n   to `HttpHeaders` and implemented the same in `DefaultHttpHeaders` as a delegate to the internal `TextHeader` instance.\r\n\r\n- Added a method:\r\n\r\n```java\r\nFullHttpMessage copy(ByteBuf newContent);\r\n```\r\n  in `FullHttpMessage` with the implementations copied from relevant places in the master branch.\r\n\r\n##### Result:\r\n\r\nHTTP/2 codec can be used with netty 4.1"},"comment":{"url":"https://api.github.com/repos/netty/netty/issues/comments/70795710","html_url":"https://github.com/netty/netty/pull/3339#issuecomment-70795710","issue_url":"https://api.github.com/repos/netty/netty/issues/3339","id":70795710,"user":{"login":"normanmaurer","id":439362,"avatar_url":"https://avatars.githubusercontent.com/u/439362?v=3","gravatar_id":"","url":"https://api.github.com/users/normanmaurer","html_url":"https://github.com/normanmaurer","followers_url":"https://api.github.com/users/normanmaurer/followers","following_url":"https://api.github.com/users/normanmaurer/following{/other_user}","gists_url":"https://api.github.com/users/normanmaurer/gists{/gist_id}","starred_url":"https://api.github.com/users/normanmaurer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/normanmaurer/subscriptions","organizations_url":"https://api.github.com/users/normanmaurer/orgs","repos_url":"https://api.github.com/users/normanmaurer/repos","events_url":"https://api.github.com/users/normanmaurer/events{/privacy}","received_events_url":"https://api.github.com/users/normanmaurer/received_events","type":"User","site_admin":false},"created_at":"2015-01-21T07:31:28Z","updated_at":"2015-01-21T07:31:28Z","body":"@netkins accept"}}