From 7d255aedba4314ff7f79e1c556159f9a3042f4b6 Mon Sep 17 00:00:00 2001 From: Joshua Spence Date: Sat, 7 Jun 2014 15:16:23 -0700 Subject: [PATCH] Improve error handling for Aphlict. Summary: Currently, any error thrown when instantiating an `AphlictMaster` will be assumed to be due to the master already existing. This is a bit overzealous because the [[http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/LocalConnection.html#connect() | documentation]] specifically states than an `ArgumentError` will be throw if "the `LocalConnection` instance is already connected". Test Plan: Inspected the log message. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley, #blessed_reviewers Subscribers: epriestley, Korvin Differential Revision: https://secure.phabricator.com/D9422 --- resources/celerity/map.php | 32 ++++++++++---------- support/aphlict/client/src/AphlictClient.as | 5 +-- webroot/rsrc/swf/aphlict.swf | Bin 5472 -> 5499 bytes 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/resources/celerity/map.php b/resources/celerity/map.php index 65e119deec..b00d3059e9 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -8,7 +8,7 @@ return array( 'names' => array( 'core.pkg.css' => '703a28a5', - 'core.pkg.js' => '9c9c8442', + 'core.pkg.js' => '5f0169b1', 'darkconsole.pkg.js' => 'ca8671ce', 'differential.pkg.css' => '4a93db37', 'differential.pkg.js' => 'eca39a2c', @@ -337,7 +337,7 @@ return array( 'rsrc/image/texture/table_header_tall.png' => 'd56b434f', 'rsrc/js/application/aphlict/Aphlict.js' => '493665ee', 'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => '2a2dba85', - 'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => '258e4342', + 'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => '130086a6', 'rsrc/js/application/auth/behavior-persona-login.js' => '9414ff18', 'rsrc/js/application/config/behavior-reorder-fields.js' => '938aed89', 'rsrc/js/application/conpherence/behavior-menu.js' => '7ee23816', @@ -477,7 +477,7 @@ return array( 'rsrc/js/phuix/PHUIXActionListView.js' => 'b5c256b8', 'rsrc/js/phuix/PHUIXActionView.js' => '6e8cefa4', 'rsrc/js/phuix/PHUIXDropdownMenu.js' => 'bd4c8dca', - 'rsrc/swf/aphlict.swf' => '2816ec25', + 'rsrc/swf/aphlict.swf' => 'b7c2d7aa', ), 'symbols' => array( @@ -528,7 +528,7 @@ return array( 'javelin-aphlict' => '493665ee', 'javelin-behavior' => '8a3ed18b', 'javelin-behavior-aphlict-dropdown' => '2a2dba85', - 'javelin-behavior-aphlict-listen' => '258e4342', + 'javelin-behavior-aphlict-listen' => '130086a6', 'javelin-behavior-aphront-basic-tokenizer' => 'b3a4b884', 'javelin-behavior-aphront-crop' => 'b98fc918', 'javelin-behavior-aphront-drag-and-drop-textarea' => '4a11ea9c', @@ -917,6 +917,18 @@ return array( 4 => 'javelin-util', 5 => 'phabricator-shaped-request', ), + '130086a6' => + array( + 0 => 'javelin-behavior', + 1 => 'javelin-aphlict', + 2 => 'javelin-stratcom', + 3 => 'javelin-request', + 4 => 'javelin-uri', + 5 => 'javelin-dom', + 6 => 'javelin-json', + 7 => 'javelin-router', + 8 => 'phabricator-notification', + ), '1681c4d4' => array( 0 => 'javelin-install', @@ -995,18 +1007,6 @@ return array( 2 => 'javelin-stratcom', 3 => 'phuix-dropdown-menu', ), - '258e4342' => - array( - 0 => 'javelin-behavior', - 1 => 'javelin-aphlict', - 2 => 'javelin-stratcom', - 3 => 'javelin-request', - 4 => 'javelin-uri', - 5 => 'javelin-dom', - 6 => 'javelin-json', - 7 => 'javelin-router', - 8 => 'phabricator-notification', - ), '263aeb8c' => array( 0 => 'javelin-behavior', diff --git a/support/aphlict/client/src/AphlictClient.as b/support/aphlict/client/src/AphlictClient.as index a05c917873..c952eecd5d 100644 --- a/support/aphlict/client/src/AphlictClient.as +++ b/support/aphlict/client/src/AphlictClient.as @@ -80,9 +80,10 @@ package { this.log('Attempting to become the master...'); this.master = new AphlictMaster(this.remoteServer, this.remotePort); this.log('I am the master.'); - } catch (x:Error) { - // Couldn't become the master + } catch (err:ArgumentError) { this.log('Cannot become the master... probably one already exists'); + } catch (err:Error) { + this.error(err); } this.send.send('aphlict_master', 'register', this.client); diff --git a/webroot/rsrc/swf/aphlict.swf b/webroot/rsrc/swf/aphlict.swf index eaf4589a9c6a51e0c50e4ea121fa0871d9ed3499..589e046c3c6d384478ebb268fc98742f0e18f8fe 100644 GIT binary patch literal 5499 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 literal 5472 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