{"action":"created","issue":{"url":"https://api.github.com/repos/cyberjunk/meridian59-dotnet/issues/266","repository_url":"https://api.github.com/repos/cyberjunk/meridian59-dotnet","labels_url":"https://api.github.com/repos/cyberjunk/meridian59-dotnet/issues/266/labels{/name}","comments_url":"https://api.github.com/repos/cyberjunk/meridian59-dotnet/issues/266/comments","events_url":"https://api.github.com/repos/cyberjunk/meridian59-dotnet/issues/266/events","html_url":"https://github.com/cyberjunk/meridian59-dotnet/pull/266","id":350941535,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA4NjYyMTYw","number":266,"title":"Allow .NET patcher to update classic client.","user":{"login":"skittles1","id":4743083,"node_id":"MDQ6VXNlcjQ3NDMwODM=","avatar_url":"https://avatars2.githubusercontent.com/u/4743083?v=4","gravatar_id":"","url":"https://api.github.com/users/skittles1","html_url":"https://github.com/skittles1","followers_url":"https://api.github.com/users/skittles1/followers","following_url":"https://api.github.com/users/skittles1/following{/other_user}","gists_url":"https://api.github.com/users/skittles1/gists{/gist_id}","starred_url":"https://api.github.com/users/skittles1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/skittles1/subscriptions","organizations_url":"https://api.github.com/users/skittles1/orgs","repos_url":"https://api.github.com/users/skittles1/repos","events_url":"https://api.github.com/users/skittles1/events{/privacy}","received_events_url":"https://api.github.com/users/skittles1/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2018-08-15T19:47:44Z","updated_at":"2018-08-17T18:16:07Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/cyberjunk/meridian59-dotnet/pulls/266","html_url":"https://github.com/cyberjunk/meridian59-dotnet/pull/266","diff_url":"https://github.com/cyberjunk/meridian59-dotnet/pull/266.diff","patch_url":"https://github.com/cyberjunk/meridian59-dotnet/pull/266.patch"},"body":"- Generalised some of the patcher features to allow patching classic client in addition to Ogre.\r\n- Simplfied the infobox string addition code - calling function now provides the whole string to display.\r\n- Patcher now checks file hashes against local files in a separate thread (FileScanner class) before beginning download. This allows the correct size of the total download to be displayed in the UI, and no 'already downloaded' files are shown as downloading.\r\n\r\n#### TODO\r\nI've left the file hash checking in the Worker class also as a kind of fallback (basically catch edge cases like users moving files in during the download) but it is mostly superfluous and we could probably remove it.\r\nStill want to test a little more, we've used it to update classic a couple times but still need to update Ogre using it and also try a fresh install."},"comment":{"url":"https://api.github.com/repos/cyberjunk/meridian59-dotnet/issues/comments/413948075","html_url":"https://github.com/cyberjunk/meridian59-dotnet/pull/266#issuecomment-413948075","issue_url":"https://api.github.com/repos/cyberjunk/meridian59-dotnet/issues/266","id":413948075,"node_id":"MDEyOklzc3VlQ29tbWVudDQxMzk0ODA3NQ==","user":{"login":"skittles1","id":4743083,"node_id":"MDQ6VXNlcjQ3NDMwODM=","avatar_url":"https://avatars2.githubusercontent.com/u/4743083?v=4","gravatar_id":"","url":"https://api.github.com/users/skittles1","html_url":"https://github.com/skittles1","followers_url":"https://api.github.com/users/skittles1/followers","following_url":"https://api.github.com/users/skittles1/following{/other_user}","gists_url":"https://api.github.com/users/skittles1/gists{/gist_id}","starred_url":"https://api.github.com/users/skittles1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/skittles1/subscriptions","organizations_url":"https://api.github.com/users/skittles1/orgs","repos_url":"https://api.github.com/users/skittles1/repos","events_url":"https://api.github.com/users/skittles1/events{/privacy}","received_events_url":"https://api.github.com/users/skittles1/received_events","type":"User","site_admin":false},"created_at":"2018-08-17T18:16:07Z","updated_at":"2018-08-17T18:16:07Z","author_association":"CONTRIBUTOR","body":"I rewrote it using the worker class to scan the files prior to downloading.\r\n\r\nI also moved all the stats to a new class for (theoretically) easy access between the threads but in practice even with the locks the values seem to get messed up, e.g. incrementing PatchDownloadStats.TotalFilesChecked vs calling IncrementFiles() with 8 threads running will cause TotalFilesChecked to be 5-15 files short when accessing the property directly. My solution was going to be to add functions to perform whatever accesses necessary but perhaps i'm just doing something wrong with the lock objects? Property access works correctly with 2 worker threads but breaks on 4 and 8 threads."}}
{"actor":{"display_login":"skittles1"}}