{"action":"created","comment":{"url":"https://api.github.com/repos/LoomSDK/LoomSDK/pulls/comments/78630017","id":78630017,"diff_hunk":"@@ -61,13 +66,68 @@ typedef int   SOCKET;\n \n lmDefineLogGroup(netLogGroup, \"net\", 1, LoomLogWarn);\n \n+static const int readSpinSleepMs = 5;","path":"loom/common/platform/platformNetwork.c","position":18,"original_position":18,"commit_id":"bb5440a28b1536cecf258b3f4630489f408a522c","original_commit_id":"bb5440a28b1536cecf258b3f4630489f408a522c","user":{"login":"bengarney","id":132844,"avatar_url":"https://avatars.githubusercontent.com/u/132844?v=3","gravatar_id":"","url":"https://api.github.com/users/bengarney","html_url":"https://github.com/bengarney","followers_url":"https://api.github.com/users/bengarney/followers","following_url":"https://api.github.com/users/bengarney/following{/other_user}","gists_url":"https://api.github.com/users/bengarney/gists{/gist_id}","starred_url":"https://api.github.com/users/bengarney/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bengarney/subscriptions","organizations_url":"https://api.github.com/users/bengarney/orgs","repos_url":"https://api.github.com/users/bengarney/repos","events_url":"https://api.github.com/users/bengarney/events{/privacy}","received_events_url":"https://api.github.com/users/bengarney/received_events","type":"User","site_admin":false},"body":"Should we comment what these are? They seem important.","created_at":"2016-09-13T19:43:55Z","updated_at":"2016-09-13T19:43:55Z","html_url":"https://github.com/LoomSDK/LoomSDK/pull/588#discussion_r78630017","pull_request_url":"https://api.github.com/repos/LoomSDK/LoomSDK/pulls/588","_links":{"self":{"href":"https://api.github.com/repos/LoomSDK/LoomSDK/pulls/comments/78630017"},"html":{"href":"https://github.com/LoomSDK/LoomSDK/pull/588#discussion_r78630017"},"pull_request":{"href":"https://api.github.com/repos/LoomSDK/LoomSDK/pulls/588"}}},"pull_request":{"url":"https://api.github.com/repos/LoomSDK/LoomSDK/pulls/588","id":84924758,"html_url":"https://github.com/LoomSDK/LoomSDK/pull/588","diff_url":"https://github.com/LoomSDK/LoomSDK/pull/588.diff","patch_url":"https://github.com/LoomSDK/LoomSDK/pull/588.patch","issue_url":"https://api.github.com/repos/LoomSDK/LoomSDK/issues/588","number":588,"state":"open","locked":false,"title":"Telemetry and bug fix extravaganza","user":{"login":"SmilyOrg","id":1451391,"avatar_url":"https://avatars.githubusercontent.com/u/1451391?v=3","gravatar_id":"","url":"https://api.github.com/users/SmilyOrg","html_url":"https://github.com/SmilyOrg","followers_url":"https://api.github.com/users/SmilyOrg/followers","following_url":"https://api.github.com/users/SmilyOrg/following{/other_user}","gists_url":"https://api.github.com/users/SmilyOrg/gists{/gist_id}","starred_url":"https://api.github.com/users/SmilyOrg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SmilyOrg/subscriptions","organizations_url":"https://api.github.com/users/SmilyOrg/orgs","repos_url":"https://api.github.com/users/SmilyOrg/repos","events_url":"https://api.github.com/users/SmilyOrg/events{/privacy}","received_events_url":"https://api.github.com/users/SmilyOrg/received_events","type":"User","site_admin":false},"body":"1. Telemetry now covers more things, notably the (SDL) event loop.\r\n2. Added support for unsigned 64bit integers to NetworkBuffer.\r\n3. Better buffer usage in AssetProtocolHandler.\r\n4. AssetProtocolHandlers can now be freed properly.\r\n5. loom_newArray allocation now skips constructors for fundamental types.\r\n6. Telemetry now uses an event-and-lookup design, which is a bit tougher on bandwidth, but much lower on processing. The bandwidth issue is side-stepped with new buffered network writes.\r\n7. Network writes are now buffered in a bip buffer. This avoids stalls and blocking.\r\n8. The asset agent connection is now more aware of issues on both ends, reads and writes now time out after some time and the connection is dropped.\r\n9. Changed from double to long long in readTimerNano to avoid unnecessary FP ops.\r\n10. Fixed some JSON leaks and simplified implementation / memory management wrt usage a bit.\r\n11. Added a `useCache` parameter to `utByteArray` to expose the underlying `utArray` cache.\r\n12. Added `utByteArray` reading/writing unsigned 64-bit ints.\r\n13. Added temp fix for reading/writing unaligned `utByteArray` strings.\r\n14. Added uthash, a simple hash table for use from C code.\r\n15. Added `utString::alloc` to provide a way to reserve a string buffer in advance.\r\n16. Added an unsigned 64-bit int hash key support to `utHashTable`.\r\n17. Changed some SQLite code to use the newer JSON APIs that manage memory automatically.\r\n18. Fixed texture mipmapping code to actually allocate properly.\r\n19. Fixed some internal string functions to use the lua string length and not recompute all the time with strlen, noticable with larger strings.\r\n20. Fixed a bool warning for `openURL`.\r\n21. Made a `MemberInfo` check function faster by avoiding string length computation.\r\n22. Added `LoomProfilerRoot` to `MethodBase` to support the new telemetry system.\r\n23. Fixed some telemetry server memory leaks.\r\n24. Added a ping timeout to the asset agent connection.\r\n25. Added support for multiple \"root\" tick ranges to the telemetry client.\r\n26. Added display of write/read overhead to telemetry client.","created_at":"2016-09-12T18:56:14Z","updated_at":"2016-09-13T19:43:55Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e7eba822da9778c9cc4adbd687bb21aef11d8b38","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/LoomSDK/LoomSDK/pulls/588/commits","review_comments_url":"https://api.github.com/repos/LoomSDK/LoomSDK/pulls/588/comments","review_comment_url":"https://api.github.com/repos/LoomSDK/LoomSDK/pulls/comments{/number}","comments_url":"https://api.github.com/repos/LoomSDK/LoomSDK/issues/588/comments","statuses_url":"https://api.github.com/repos/LoomSDK/LoomSDK/statuses/bb5440a28b1536cecf258b3f4630489f408a522c","head":{"label":"LoomSDK:ML-TelemetryEtc","ref":"ML-TelemetryEtc","sha":"bb5440a28b1536cecf258b3f4630489f408a522c","user":{"login":"LoomSDK","id":5264050,"avatar_url":"https://avatars.githubusercontent.com/u/5264050?v=3","gravatar_id":"","url":"https://api.github.com/users/LoomSDK","html_url":"https://github.com/LoomSDK","followers_url":"https://api.github.com/users/LoomSDK/followers","following_url":"https://api.github.com/users/LoomSDK/following{/other_user}","gists_url":"https://api.github.com/users/LoomSDK/gists{/gist_id}","starred_url":"https://api.github.com/users/LoomSDK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LoomSDK/subscriptions","organizations_url":"https://api.github.com/users/LoomSDK/orgs","repos_url":"https://api.github.com/users/LoomSDK/repos","events_url":"https://api.github.com/users/LoomSDK/events{/privacy}","received_events_url":"https://api.github.com/users/LoomSDK/received_events","type":"Organization","site_admin":false},"repo":{"id":12335264,"name":"LoomSDK","full_name":"LoomSDK/LoomSDK","owner":{"login":"LoomSDK","id":5264050,"avatar_url":"https://avatars.githubusercontent.com/u/5264050?v=3","gravatar_id":"","url":"https://api.github.com/users/LoomSDK","html_url":"https://github.com/LoomSDK","followers_url":"https://api.github.com/users/LoomSDK/followers","following_url":"https://api.github.com/users/LoomSDK/following{/other_user}","gists_url":"https://api.github.com/users/LoomSDK/gists{/gist_id}","starred_url":"https://api.github.com/users/LoomSDK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LoomSDK/subscriptions","organizations_url":"https://api.github.com/users/LoomSDK/orgs","repos_url":"https://api.github.com/users/LoomSDK/repos","events_url":"https://api.github.com/users/LoomSDK/events{/privacy}","received_events_url":"https://api.github.com/users/LoomSDK/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/LoomSDK/LoomSDK","description":"The Loom SDK, a native mobile app and game framework.","fork":false,"url":"https://api.github.com/repos/LoomSDK/LoomSDK","forks_url":"https://api.github.com/repos/LoomSDK/LoomSDK/forks","keys_url":"https://api.github.com/repos/LoomSDK/LoomSDK/keys{/key_id}","collaborators_url":"https://api.github.com/repos/LoomSDK/LoomSDK/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/LoomSDK/LoomSDK/teams","hooks_url":"https://api.github.com/repos/LoomSDK/LoomSDK/hooks","issue_events_url":"https://api.github.com/repos/LoomSDK/LoomSDK/issues/events{/number}","events_url":"https://api.github.com/repos/LoomSDK/LoomSDK/events","assignees_url":"https://api.github.com/repos/LoomSDK/LoomSDK/assignees{/user}","branches_url":"https://api.github.com/repos/LoomSDK/LoomSDK/branches{/branch}","tags_url":"https://api.github.com/repos/LoomSDK/LoomSDK/tags","blobs_url":"https://api.github.com/repos/LoomSDK/LoomSDK/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/LoomSDK/LoomSDK/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/LoomSDK/LoomSDK/git/refs{/sha}","trees_url":"https://api.github.com/repos/LoomSDK/LoomSDK/git/trees{/sha}","statuses_url":"https://api.github.com/repos/LoomSDK/LoomSDK/statuses/{sha}","languages_url":"https://api.github.com/repos/LoomSDK/LoomSDK/languages","stargazers_url":"https://api.github.com/repos/LoomSDK/LoomSDK/stargazers","contributors_url":"https://api.github.com/repos/LoomSDK/LoomSDK/contributors","subscribers_url":"https://api.github.com/repos/LoomSDK/LoomSDK/subscribers","subscription_url":"https://api.github.com/repos/LoomSDK/LoomSDK/subscription","commits_url":"https://api.github.com/repos/LoomSDK/LoomSDK/commits{/sha}","git_commits_url":"https://api.github.com/repos/LoomSDK/LoomSDK/git/commits{/sha}","comments_url":"https://api.github.com/repos/LoomSDK/LoomSDK/comments{/number}","issue_comment_url":"https://api.github.com/repos/LoomSDK/LoomSDK/issues/comments{/number}","contents_url":"https://api.github.com/repos/LoomSDK/LoomSDK/contents/{+path}","compare_url":"https://api.github.com/repos/LoomSDK/LoomSDK/compare/{base}...{head}","merges_url":"https://api.github.com/repos/LoomSDK/LoomSDK/merges","archive_url":"https://api.github.com/repos/LoomSDK/LoomSDK/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/LoomSDK/LoomSDK/downloads","issues_url":"https://api.github.com/repos/LoomSDK/LoomSDK/issues{/number}","pulls_url":"https://api.github.com/repos/LoomSDK/LoomSDK/pulls{/number}","milestones_url":"https://api.github.com/repos/LoomSDK/LoomSDK/milestones{/number}","notifications_url":"https://api.github.com/repos/LoomSDK/LoomSDK/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/LoomSDK/LoomSDK/labels{/name}","releases_url":"https://api.github.com/repos/LoomSDK/LoomSDK/releases{/id}","deployments_url":"https://api.github.com/repos/LoomSDK/LoomSDK/deployments","created_at":"2013-08-24T00:09:22Z","updated_at":"2016-07-29T14:14:10Z","pushed_at":"2016-09-12T19:16:16Z","git_url":"git://github.com/LoomSDK/LoomSDK.git","ssh_url":"git@github.com:LoomSDK/LoomSDK.git","clone_url":"https://github.com/LoomSDK/LoomSDK.git","svn_url":"https://github.com/LoomSDK/LoomSDK","homepage":"http://www.LoomSDK.com","size":361891,"stargazers_count":195,"watchers_count":195,"language":"LoomScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":53,"mirror_url":null,"open_issues_count":6,"forks":53,"open_issues":6,"watchers":195,"default_branch":"master"}},"base":{"label":"LoomSDK:master","ref":"master","sha":"5a6a9dc80914c14468f6f06990b49f23dada6ae5","user":{"login":"LoomSDK","id":5264050,"avatar_url":"https://avatars.githubusercontent.com/u/5264050?v=3","gravatar_id":"","url":"https://api.github.com/users/LoomSDK","html_url":"https://github.com/LoomSDK","followers_url":"https://api.github.com/users/LoomSDK/followers","following_url":"https://api.github.com/users/LoomSDK/following{/other_user}","gists_url":"https://api.github.com/users/LoomSDK/gists{/gist_id}","starred_url":"https://api.github.com/users/LoomSDK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LoomSDK/subscriptions","organizations_url":"https://api.github.com/users/LoomSDK/orgs","repos_url":"https://api.github.com/users/LoomSDK/repos","events_url":"https://api.github.com/users/LoomSDK/events{/privacy}","received_events_url":"https://api.github.com/users/LoomSDK/received_events","type":"Organization","site_admin":false},"repo":{"id":12335264,"name":"LoomSDK","full_name":"LoomSDK/LoomSDK","owner":{"login":"LoomSDK","id":5264050,"avatar_url":"https://avatars.githubusercontent.com/u/5264050?v=3","gravatar_id":"","url":"https://api.github.com/users/LoomSDK","html_url":"https://github.com/LoomSDK","followers_url":"https://api.github.com/users/LoomSDK/followers","following_url":"https://api.github.com/users/LoomSDK/following{/other_user}","gists_url":"https://api.github.com/users/LoomSDK/gists{/gist_id}","starred_url":"https://api.github.com/users/LoomSDK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LoomSDK/subscriptions","organizations_url":"https://api.github.com/users/LoomSDK/orgs","repos_url":"https://api.github.com/users/LoomSDK/repos","events_url":"https://api.github.com/users/LoomSDK/events{/privacy}","received_events_url":"https://api.github.com/users/LoomSDK/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/LoomSDK/LoomSDK","description":"The Loom SDK, a native mobile app and game framework.","fork":false,"url":"https://api.github.com/repos/LoomSDK/LoomSDK","forks_url":"https://api.github.com/repos/LoomSDK/LoomSDK/forks","keys_url":"https://api.github.com/repos/LoomSDK/LoomSDK/keys{/key_id}","collaborators_url":"https://api.github.com/repos/LoomSDK/LoomSDK/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/LoomSDK/LoomSDK/teams","hooks_url":"https://api.github.com/repos/LoomSDK/LoomSDK/hooks","issue_events_url":"https://api.github.com/repos/LoomSDK/LoomSDK/issues/events{/number}","events_url":"https://api.github.com/repos/LoomSDK/LoomSDK/events","assignees_url":"https://api.github.com/repos/LoomSDK/LoomSDK/assignees{/user}","branches_url":"https://api.github.com/repos/LoomSDK/LoomSDK/branches{/branch}","tags_url":"https://api.github.com/repos/LoomSDK/LoomSDK/tags","blobs_url":"https://api.github.com/repos/LoomSDK/LoomSDK/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/LoomSDK/LoomSDK/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/LoomSDK/LoomSDK/git/refs{/sha}","trees_url":"https://api.github.com/repos/LoomSDK/LoomSDK/git/trees{/sha}","statuses_url":"https://api.github.com/repos/LoomSDK/LoomSDK/statuses/{sha}","languages_url":"https://api.github.com/repos/LoomSDK/LoomSDK/languages","stargazers_url":"https://api.github.com/repos/LoomSDK/LoomSDK/stargazers","contributors_url":"https://api.github.com/repos/LoomSDK/LoomSDK/contributors","subscribers_url":"https://api.github.com/repos/LoomSDK/LoomSDK/subscribers","subscription_url":"https://api.github.com/repos/LoomSDK/LoomSDK/subscription","commits_url":"https://api.github.com/repos/LoomSDK/LoomSDK/commits{/sha}","git_commits_url":"https://api.github.com/repos/LoomSDK/LoomSDK/git/commits{/sha}","comments_url":"https://api.github.com/repos/LoomSDK/LoomSDK/comments{/number}","issue_comment_url":"https://api.github.com/repos/LoomSDK/LoomSDK/issues/comments{/number}","contents_url":"https://api.github.com/repos/LoomSDK/LoomSDK/contents/{+path}","compare_url":"https://api.github.com/repos/LoomSDK/LoomSDK/compare/{base}...{head}","merges_url":"https://api.github.com/repos/LoomSDK/LoomSDK/merges","archive_url":"https://api.github.com/repos/LoomSDK/LoomSDK/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/LoomSDK/LoomSDK/downloads","issues_url":"https://api.github.com/repos/LoomSDK/LoomSDK/issues{/number}","pulls_url":"https://api.github.com/repos/LoomSDK/LoomSDK/pulls{/number}","milestones_url":"https://api.github.com/repos/LoomSDK/LoomSDK/milestones{/number}","notifications_url":"https://api.github.com/repos/LoomSDK/LoomSDK/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/LoomSDK/LoomSDK/labels{/name}","releases_url":"https://api.github.com/repos/LoomSDK/LoomSDK/releases{/id}","deployments_url":"https://api.github.com/repos/LoomSDK/LoomSDK/deployments","created_at":"2013-08-24T00:09:22Z","updated_at":"2016-07-29T14:14:10Z","pushed_at":"2016-09-12T19:16:16Z","git_url":"git://github.com/LoomSDK/LoomSDK.git","ssh_url":"git@github.com:LoomSDK/LoomSDK.git","clone_url":"https://github.com/LoomSDK/LoomSDK.git","svn_url":"https://github.com/LoomSDK/LoomSDK","homepage":"http://www.LoomSDK.com","size":361891,"stargazers_count":195,"watchers_count":195,"language":"LoomScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":53,"mirror_url":null,"open_issues_count":6,"forks":53,"open_issues":6,"watchers":195,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/LoomSDK/LoomSDK/pulls/588"},"html":{"href":"https://github.com/LoomSDK/LoomSDK/pull/588"},"issue":{"href":"https://api.github.com/repos/LoomSDK/LoomSDK/issues/588"},"comments":{"href":"https://api.github.com/repos/LoomSDK/LoomSDK/issues/588/comments"},"review_comments":{"href":"https://api.github.com/repos/LoomSDK/LoomSDK/pulls/588/comments"},"review_comment":{"href":"https://api.github.com/repos/LoomSDK/LoomSDK/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/LoomSDK/LoomSDK/pulls/588/commits"},"statuses":{"href":"https://api.github.com/repos/LoomSDK/LoomSDK/statuses/bb5440a28b1536cecf258b3f4630489f408a522c"}}}}
{"actor":{"display_login":"bengarney"}}