{"action":"created","issue":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/9464","repository_url":"https://api.github.com/repos/RIOT-OS/RIOT","labels_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/9464/labels{/name}","comments_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/9464/comments","events_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/9464/events","html_url":"https://github.com/RIOT-OS/RIOT/pull/9464","id":337048283,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk4MzU1NjU3","number":9464,"title":"net: add Asymcute, an asynchronous MQTT-SN client implementation","user":{"login":"haukepetersen","id":620834,"node_id":"MDQ6VXNlcjYyMDgzNA==","avatar_url":"https://avatars3.githubusercontent.com/u/620834?v=4","gravatar_id":"","url":"https://api.github.com/users/haukepetersen","html_url":"https://github.com/haukepetersen","followers_url":"https://api.github.com/users/haukepetersen/followers","following_url":"https://api.github.com/users/haukepetersen/following{/other_user}","gists_url":"https://api.github.com/users/haukepetersen/gists{/gist_id}","starred_url":"https://api.github.com/users/haukepetersen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haukepetersen/subscriptions","organizations_url":"https://api.github.com/users/haukepetersen/orgs","repos_url":"https://api.github.com/users/haukepetersen/repos","events_url":"https://api.github.com/users/haukepetersen/events{/privacy}","received_events_url":"https://api.github.com/users/haukepetersen/received_events","type":"User","site_admin":false},"labels":[{"id":214816571,"node_id":"MDU6TGFiZWwyMTQ4MTY1NzE=","url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/Ready%20for%20CI%20build","name":"Ready for CI build","color":"bfdadc","default":false},{"id":127387257,"node_id":"MDU6TGFiZWwxMjczODcyNTc=","url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/Waiting%20For%20Other%20PR","name":"Waiting For Other PR","color":"009800","default":false},{"id":86443543,"node_id":"MDU6TGFiZWw4NjQ0MzU0Mw==","url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/network","name":"network","color":"8f00cc","default":false},{"id":97458574,"node_id":"MDU6TGFiZWw5NzQ1ODU3NA==","url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/new%20feature","name":"new feature","color":"e11d21","default":false}],"state":"open","locked":false,"assignee":{"login":"miri64","id":675644,"node_id":"MDQ6VXNlcjY3NTY0NA==","avatar_url":"https://avatars1.githubusercontent.com/u/675644?v=4","gravatar_id":"","url":"https://api.github.com/users/miri64","html_url":"https://github.com/miri64","followers_url":"https://api.github.com/users/miri64/followers","following_url":"https://api.github.com/users/miri64/following{/other_user}","gists_url":"https://api.github.com/users/miri64/gists{/gist_id}","starred_url":"https://api.github.com/users/miri64/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/miri64/subscriptions","organizations_url":"https://api.github.com/users/miri64/orgs","repos_url":"https://api.github.com/users/miri64/repos","events_url":"https://api.github.com/users/miri64/events{/privacy}","received_events_url":"https://api.github.com/users/miri64/received_events","type":"User","site_admin":false},"assignees":[{"login":"miri64","id":675644,"node_id":"MDQ6VXNlcjY3NTY0NA==","avatar_url":"https://avatars1.githubusercontent.com/u/675644?v=4","gravatar_id":"","url":"https://api.github.com/users/miri64","html_url":"https://github.com/miri64","followers_url":"https://api.github.com/users/miri64/followers","following_url":"https://api.github.com/users/miri64/following{/other_user}","gists_url":"https://api.github.com/users/miri64/gists{/gist_id}","starred_url":"https://api.github.com/users/miri64/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/miri64/subscriptions","organizations_url":"https://api.github.com/users/miri64/orgs","repos_url":"https://api.github.com/users/miri64/repos","events_url":"https://api.github.com/users/miri64/events{/privacy}","received_events_url":"https://api.github.com/users/miri64/received_events","type":"User","site_admin":false},{"login":"cgundogan","id":739129,"node_id":"MDQ6VXNlcjczOTEyOQ==","avatar_url":"https://avatars2.githubusercontent.com/u/739129?v=4","gravatar_id":"","url":"https://api.github.com/users/cgundogan","html_url":"https://github.com/cgundogan","followers_url":"https://api.github.com/users/cgundogan/followers","following_url":"https://api.github.com/users/cgundogan/following{/other_user}","gists_url":"https://api.github.com/users/cgundogan/gists{/gist_id}","starred_url":"https://api.github.com/users/cgundogan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cgundogan/subscriptions","organizations_url":"https://api.github.com/users/cgundogan/orgs","repos_url":"https://api.github.com/users/cgundogan/repos","events_url":"https://api.github.com/users/cgundogan/events{/privacy}","received_events_url":"https://api.github.com/users/cgundogan/received_events","type":"User","site_admin":false},{"login":"kb2ma","id":2944058,"node_id":"MDQ6VXNlcjI5NDQwNTg=","avatar_url":"https://avatars0.githubusercontent.com/u/2944058?v=4","gravatar_id":"","url":"https://api.github.com/users/kb2ma","html_url":"https://github.com/kb2ma","followers_url":"https://api.github.com/users/kb2ma/followers","following_url":"https://api.github.com/users/kb2ma/following{/other_user}","gists_url":"https://api.github.com/users/kb2ma/gists{/gist_id}","starred_url":"https://api.github.com/users/kb2ma/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kb2ma/subscriptions","organizations_url":"https://api.github.com/users/kb2ma/orgs","repos_url":"https://api.github.com/users/kb2ma/repos","events_url":"https://api.github.com/users/kb2ma/events{/privacy}","received_events_url":"https://api.github.com/users/kb2ma/received_events","type":"User","site_admin":false},{"login":"PeterKietzmann","id":7765855,"node_id":"MDQ6VXNlcjc3NjU4NTU=","avatar_url":"https://avatars3.githubusercontent.com/u/7765855?v=4","gravatar_id":"","url":"https://api.github.com/users/PeterKietzmann","html_url":"https://github.com/PeterKietzmann","followers_url":"https://api.github.com/users/PeterKietzmann/followers","following_url":"https://api.github.com/users/PeterKietzmann/following{/other_user}","gists_url":"https://api.github.com/users/PeterKietzmann/gists{/gist_id}","starred_url":"https://api.github.com/users/PeterKietzmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PeterKietzmann/subscriptions","organizations_url":"https://api.github.com/users/PeterKietzmann/orgs","repos_url":"https://api.github.com/users/PeterKietzmann/repos","events_url":"https://api.github.com/users/PeterKietzmann/events{/privacy}","received_events_url":"https://api.github.com/users/PeterKietzmann/received_events","type":"User","site_admin":false}],"milestone":null,"comments":9,"created_at":"2018-06-29T15:45:05Z","updated_at":"2018-07-05T13:17:37Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/9464","html_url":"https://github.com/RIOT-OS/RIOT/pull/9464","diff_url":"https://github.com/RIOT-OS/RIOT/pull/9464.diff","patch_url":"https://github.com/RIOT-OS/RIOT/pull/9464.patch"},"body":"### Contribution description\r\nThis PR adds a new `MQTT-SN` client implementation called `Asymcute`. In contrary to the exising `emCute` implementation, this one is completely asynchronous, thus allowing for a higher throughput and for more flexibility to the cost of increased memory usage (both RAM and ROM).\r\n\r\n`Asymcute` is not only able to handle multiple pending requests concurrently, it is also able to connect to more than one gateway at a time.\r\n\r\nThe motivation for implementing a second MQTT-SN client comes mainly from some application layer protocol experiments that we were running earlier this year in the context of our 'I3' research project, where we were measuring certain metrics for MQTT-SN, CoAP and some ICN-based approaches. For this, the existing synchronous `emCute` library was not well suited, so hence the need for a fully asynchronous MQTT-SN client library.\r\n\r\n### Testing\r\nEasiest way (using native):\r\n- run a local mqtt-sn broker using the build in `rsmb` make target (see #9459)\r\n- run the `examples/asymcute_mqttsn` application under `native`\r\n- play, also hard-kill (`kill -9`) the `rsmb` instance to see the effect due to time out on keep-alive messages. For this it makes sense though to reduce the keep alive interval (override ASYMCUTE_KEEPALIVE).\r\n\r\n### Issues/PRs references\r\nrebased/depending on #9459"},"comment":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/comments/402718500","html_url":"https://github.com/RIOT-OS/RIOT/pull/9464#issuecomment-402718500","issue_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/9464","id":402718500,"node_id":"MDEyOklzc3VlQ29tbWVudDQwMjcxODUwMA==","user":{"login":"haukepetersen","id":620834,"node_id":"MDQ6VXNlcjYyMDgzNA==","avatar_url":"https://avatars3.githubusercontent.com/u/620834?v=4","gravatar_id":"","url":"https://api.github.com/users/haukepetersen","html_url":"https://github.com/haukepetersen","followers_url":"https://api.github.com/users/haukepetersen/followers","following_url":"https://api.github.com/users/haukepetersen/following{/other_user}","gists_url":"https://api.github.com/users/haukepetersen/gists{/gist_id}","starred_url":"https://api.github.com/users/haukepetersen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haukepetersen/subscriptions","organizations_url":"https://api.github.com/users/haukepetersen/orgs","repos_url":"https://api.github.com/users/haukepetersen/repos","events_url":"https://api.github.com/users/haukepetersen/events{/privacy}","received_events_url":"https://api.github.com/users/haukepetersen/received_events","type":"User","site_admin":false},"created_at":"2018-07-05T13:17:37Z","updated_at":"2018-07-05T13:17:37Z","author_association":"CONTRIBUTOR","body":"addressed last comments and squashed."}}
{"actor":{"display_login":"haukepetersen"}}