mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-25 00:02:41 +01:00
Aphlict, simple notification server
Summary: This is purely a prototype at the moment, but the basic functionality sort of works. I'm not sure how far I want to go with this but I think we might be able to get somewhere without it being gross. The idea here is to build a notification server WITHOUT using Comet, since Comet is extremely difficult and complicated. Instead, I use Flash on the client. LocalConnection allows flash instances to talk to each other and connect() can be used as a locking primitive. This allows all the instances to elect a master instance in a race-safe way. The master is responsible for opening a single connnection to the server. On the server, I use Node.js since PHP is pretty unsuitable for this task. See Github Issue #3: https://github.com/facebook/phabricator/issues/3 One thing I need to figure out next is if I can reasonably do SSL/TSL over Flash (it looks like I can, in theory, with the as3crypto library) or if the server needs to just send down version information and trigger a separate Ajax call on the client. Test Plan: Created a client pool and connected it to the server, with election and failover apparently working correctly. Reviewed By: aran Reviewers: Girish, aran, jungejason, tuomaspelkonen, davidrecordon Commenters: Girish, davidrecordon CC: aran, epriestley, Girish, davidrecordon Differential Revision: 284
This commit is contained in:
parent
7e675b6687
commit
84731e8f00
14 changed files with 1994 additions and 0 deletions
581
externals/vegas/LICENSE
vendored
Normal file
581
externals/vegas/LICENSE
vendored
Normal file
|
@ -0,0 +1,581 @@
|
|||
Mozilla Public License 1.1 (MPL 1.1)
|
||||
|
||||
1. Definitions.
|
||||
|
||||
1.0.1. "Commercial Use" means distribution or
|
||||
otherwise making the Covered Code available to a third
|
||||
party.
|
||||
|
||||
1.1. ''Contributor'' means each entity that creates or
|
||||
contributes to the creation of Modifications.
|
||||
|
||||
1.2. ''Contributor Version'' means the combination of
|
||||
the Original Code, prior Modifications used by
|
||||
a Contributor, and the Modifications made by that
|
||||
particular Contributor.
|
||||
|
||||
1.3. ''Covered Code'' means the Original Code or
|
||||
Modifications or the combination of the Original Code
|
||||
and Modifications, in each case including portions
|
||||
thereof.
|
||||
|
||||
1.4. ''Electronic Distribution Mechanism'' means a
|
||||
mechanism generally accepted in the software
|
||||
development community for the electronic transfer of
|
||||
data.
|
||||
|
||||
1.5. ''Executable'' means Covered Code in any form
|
||||
other than Source Code.
|
||||
|
||||
1.6. ''Initial Developer'' means the individual or
|
||||
entity identified as the Initial Developer in the
|
||||
Source Code notice required by Exhibit A.
|
||||
|
||||
1.7. ''Larger Work'' means a work which combines
|
||||
Covered Code or portions thereof with code not
|
||||
governed by the terms of this License.
|
||||
|
||||
1.8. ''License'' means this document.
|
||||
|
||||
1.8.1. "Licensable" means having the right to grant,
|
||||
to the maximum extent possible, whether at the time of
|
||||
the initial grant or subsequently acquired, any and
|
||||
all of the rights conveyed herein.
|
||||
|
||||
1.9. ''Modifications'' means any addition to or
|
||||
deletion from the substance or structure of either the
|
||||
Original Code or any previous Modifications. When
|
||||
Covered Code is released as a series of files, a
|
||||
Modification is:
|
||||
|
||||
A. Any addition to or deletion from the contents
|
||||
of a file containing Original Code or previous
|
||||
Modifications.
|
||||
|
||||
B. Any new file that contains any part of the
|
||||
Original Code or previous Modifications.
|
||||
|
||||
1.10. ''Original Code'' means Source Code of computer
|
||||
software code which is described in the Source Code
|
||||
notice required by Exhibit A as Original Code, and
|
||||
which, at the time of its release under this License
|
||||
is not already Covered Code governed by this License.
|
||||
|
||||
1.10.1. "Patent Claims" means any patent claim(s), now
|
||||
owned or hereafter acquired, including without
|
||||
limitation, method, process, and apparatus claims, in
|
||||
any patent Licensable by grantor.
|
||||
|
||||
1.11. ''Source Code'' means the preferred form of the
|
||||
Covered Code for making modifications to it, including
|
||||
all modules it contains, plus any associated interface
|
||||
definition files, scripts used to control compilation
|
||||
and installation of an Executable, or source code
|
||||
differential comparisons against either the Original
|
||||
Code or another well known, available Covered Code of
|
||||
the Contributor's choice. The Source Code can be in a
|
||||
compressed or archival form, provided the appropriate
|
||||
decompression or de-archiving software is widely
|
||||
available for no charge.
|
||||
|
||||
1.12. "You'' (or "Your") means an individual or a
|
||||
legal entity exercising rights under, and complying
|
||||
with all of the terms of, this License or a future
|
||||
version of this License issued under Section 6.1. For
|
||||
legal entities, "You'' includes any entity which
|
||||
controls, is controlled by, or is under common control
|
||||
with You. For purposes of this definition, "control''
|
||||
means (a) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by
|
||||
contract or otherwise, or (b) ownership of more than
|
||||
fifty percent (50%) of the outstanding shares or
|
||||
beneficial ownership of such entity.
|
||||
|
||||
|
||||
2. Source Code License.
|
||||
|
||||
2.1. The Initial Developer Grant.
|
||||
The Initial Developer hereby grants You a world-wide,
|
||||
royalty-free, non-exclusive license, subject to third
|
||||
party intellectual property claims:
|
||||
(a) under intellectual property rights (other
|
||||
than patent or trademark) Licensable by Initial
|
||||
Developer to use, reproduce, modify, display,
|
||||
perform, sublicense and distribute the Original
|
||||
Code (or portions thereof) with or without
|
||||
Modifications, and/or as part of a Larger Work;
|
||||
and
|
||||
|
||||
(b) under Patents Claims infringed by the making,
|
||||
using or selling of Original Code, to make, have
|
||||
made, use, practice, sell, and offer for sale,
|
||||
and/or otherwise dispose of the Original Code (or
|
||||
portions thereof).
|
||||
|
||||
(c) the licenses granted in this Section 2.1(a)
|
||||
and (b) are effective on the date Initial
|
||||
Developer first distributes Original Code under
|
||||
the terms of this License.
|
||||
|
||||
(d) Notwithstanding Section 2.1(b) above, no
|
||||
patent license is granted: 1) for code that You
|
||||
delete from the Original Code; 2) separate from
|
||||
the Original Code; or 3) for infringements
|
||||
caused by: i) the modification of the Original
|
||||
Code or ii) the combination of the Original Code
|
||||
with other software or devices.
|
||||
|
||||
2.2. Contributor Grant.
|
||||
Subject to third party intellectual property claims,
|
||||
each Contributor hereby grants You a world-wide,
|
||||
royalty-free, non-exclusive license
|
||||
|
||||
(a) under intellectual property rights (other
|
||||
than patent or trademark) Licensable by
|
||||
Contributor, to use, reproduce, modify, display,
|
||||
perform, sublicense and distribute the
|
||||
Modifications created by such Contributor (or
|
||||
portions thereof) either on an unmodified basis,
|
||||
with other Modifications, as Covered Code and/or
|
||||
as part of a Larger Work;
|
||||
and
|
||||
|
||||
(b) under Patent Claims infringed by the making,
|
||||
using, or selling of Modifications made by that
|
||||
Contributor either alone and/or in combination
|
||||
with its Contributor Version (or portions of such
|
||||
combination), to make, use, sell, offer for sale,
|
||||
have made, and/or otherwise dispose of: 1)
|
||||
Modifications made by that Contributor (or
|
||||
portions thereof); and 2) the combination of
|
||||
Modifications made by that Contributor with its
|
||||
Contributor Version (or portions of such
|
||||
combination).
|
||||
|
||||
(c) the licenses granted in Sections 2.2(a) and
|
||||
2.2(b) are effective on the date Contributor
|
||||
first makes Commercial Use of the Covered Code.
|
||||
|
||||
(d) Notwithstanding Section 2.2(b) above, no
|
||||
patent license is granted: 1) for any code that
|
||||
Contributor has deleted from the Contributor
|
||||
Version; 2) separate from the Contributor
|
||||
Version; 3) for infringements caused by: i)
|
||||
third party modifications of Contributor Version
|
||||
or ii) the combination of Modifications made by
|
||||
that Contributor with other software (except as
|
||||
part of the Contributor Version) or other
|
||||
devices; or 4) under Patent Claims infringed by
|
||||
Covered Code in the absence of Modifications made
|
||||
by that Contributor.
|
||||
|
||||
|
||||
3. Distribution Obligations.
|
||||
|
||||
3.1. Application of License.
|
||||
The Modifications which You create or to which You
|
||||
contribute are governed by the terms of this License,
|
||||
including without limitation Section 2.2. The Source
|
||||
Code version of Covered Code may be distributed only
|
||||
under the terms of this License or a future version of
|
||||
this License released under Section 6.1, and You must
|
||||
include a copy of this License with every copy of the
|
||||
Source Code You distribute. You may not offer or
|
||||
impose any terms on any Source Code version that
|
||||
alters or restricts the applicable version of this
|
||||
License or the recipients' rights hereunder. However,
|
||||
You may include an additional document offering the
|
||||
additional rights described in Section 3.5.
|
||||
|
||||
3.2. Availability of Source Code.
|
||||
Any Modification which You create or to which You
|
||||
contribute must be made available in Source Code form
|
||||
under the terms of this License either on the same
|
||||
media as an Executable version or via an accepted
|
||||
Electronic Distribution Mechanism to anyone to whom
|
||||
you made an Executable version available; and if made
|
||||
available via Electronic Distribution Mechanism, must
|
||||
remain available for at least twelve (12) months after
|
||||
the date it initially became available, or at least
|
||||
six (6) months after a subsequent version of that
|
||||
particular Modification has been made available to
|
||||
such recipients. You are responsible for ensuring that
|
||||
the Source Code version remains available even if the
|
||||
Electronic Distribution Mechanism is maintained by a
|
||||
third party.
|
||||
|
||||
3.3. Description of Modifications.
|
||||
You must cause all Covered Code to which You
|
||||
contribute to contain a file documenting the changes
|
||||
You made to create that Covered Code and the date of
|
||||
any change. You must include a prominent statement
|
||||
that the Modification is derived, directly or
|
||||
indirectly, from Original Code provided by the Initial
|
||||
Developer and including the name of the Initial
|
||||
Developer in (a) the Source Code, and (b) in any
|
||||
notice in an Executable version or related
|
||||
documentation in which You describe the origin or
|
||||
ownership of the Covered Code.
|
||||
|
||||
3.4. Intellectual Property Matters
|
||||
(a) Third Party Claims.
|
||||
If Contributor has knowledge that a license under
|
||||
a third party's intellectual property rights is
|
||||
required to exercise the rights granted by such
|
||||
Contributor under Sections 2.1 or 2.2,
|
||||
Contributor must include a text file with the
|
||||
Source Code distribution titled "LEGAL'' which
|
||||
describes the claim and the party making the
|
||||
claim in sufficient detail that a recipient will
|
||||
know whom to contact. If Contributor obtains such
|
||||
knowledge after the Modification is made
|
||||
available as described in Section 3.2,
|
||||
Contributor shall promptly modify the LEGAL file
|
||||
in all copies Contributor makes available
|
||||
thereafter and shall take other steps (such as
|
||||
notifying appropriate mailing lists or
|
||||
newsgroups) reasonably calculated to inform those
|
||||
who received the Covered Code that new knowledge
|
||||
has been obtained.
|
||||
|
||||
(b) Contributor APIs.
|
||||
If Contributor's Modifications include an
|
||||
application programming interface and Contributor
|
||||
has knowledge of patent licenses which are
|
||||
reasonably necessary to implement that API,
|
||||
Contributor must also include this information in
|
||||
the LEGAL file.
|
||||
|
||||
(c) Representations.
|
||||
Contributor represents that, except as disclosed
|
||||
pursuant to Section 3.4(a) above, Contributor
|
||||
believes that Contributor's Modifications are
|
||||
Contributor's original creation(s) and/or
|
||||
Contributor has sufficient rights to grant the
|
||||
rights conveyed by this License.
|
||||
|
||||
3.5. Required Notices.
|
||||
You must duplicate the notice in Exhibit A in each
|
||||
file of the Source Code. If it is not possible to put
|
||||
such notice in a particular Source Code file due to
|
||||
its structure, then You must include such notice in a
|
||||
location (such as a relevant directory) where a user
|
||||
would be likely to look for such a notice. If You
|
||||
created one or more Modification(s) You may add your
|
||||
name as a Contributor to the notice described in
|
||||
Exhibit A. You must also duplicate this License in
|
||||
any documentation for the Source Code where You
|
||||
describe recipients' rights or ownership rights
|
||||
relating to Covered Code. You may choose to offer,
|
||||
and to charge a fee for, warranty, support, indemnity
|
||||
or liability obligations to one or more recipients of
|
||||
Covered Code. However, You may do so only on Your own
|
||||
behalf, and not on behalf of the Initial Developer or
|
||||
any Contributor. You must make it absolutely clear
|
||||
than any such warranty, support, indemnity or
|
||||
liability obligation is offered by You alone, and You
|
||||
hereby agree to indemnify the Initial Developer and
|
||||
every Contributor for any liability incurred by the
|
||||
Initial Developer or such Contributor as a result of
|
||||
warranty, support, indemnity or liability terms You
|
||||
offer.
|
||||
|
||||
3.6. Distribution of Executable Versions.
|
||||
You may distribute Covered Code in Executable form
|
||||
only if the requirements of Section 3.1-3.5 have been
|
||||
met for that Covered Code, and if You include a notice
|
||||
stating that the Source Code version of the Covered
|
||||
Code is available under the terms of this License,
|
||||
including a description of how and where You have
|
||||
fulfilled the obligations of Section 3.2. The notice
|
||||
must be conspicuously included in any notice in an
|
||||
Executable version, related documentation or
|
||||
collateral in which You describe recipients' rights
|
||||
relating to the Covered Code. You may distribute the
|
||||
Executable version of Covered Code or ownership rights
|
||||
under a license of Your choice, which may contain
|
||||
terms different from this License, provided that You
|
||||
are in compliance with the terms of this License and
|
||||
that the license for the Executable version does not
|
||||
attempt to limit or alter the recipient's rights in
|
||||
the Source Code version from the rights set forth in
|
||||
this License. If You distribute the Executable version
|
||||
under a different license You must make it absolutely
|
||||
clear that any terms which differ from this License
|
||||
are offered by You alone, not by the Initial Developer
|
||||
or any Contributor. You hereby agree to indemnify the
|
||||
Initial Developer and every Contributor for any
|
||||
liability incurred by the Initial Developer or such
|
||||
Contributor as a result of any such terms You offer.
|
||||
|
||||
3.7. Larger Works.
|
||||
You may create a Larger Work by combining Covered Code
|
||||
with other code not governed by the terms of this
|
||||
License and distribute the Larger Work as a single
|
||||
product. In such a case, You must make sure the
|
||||
requirements of this License are fulfilled for the
|
||||
Covered Code.
|
||||
|
||||
|
||||
4. Inability to Comply Due to Statute or Regulation.
|
||||
|
||||
If it is impossible for You to comply with any of the
|
||||
terms of this License with respect to some or all of
|
||||
the Covered Code due to statute, judicial order, or
|
||||
regulation then You must: (a) comply with the terms of
|
||||
this License to the maximum extent possible; and (b)
|
||||
describe the limitations and the code they affect.
|
||||
Such description must be included in the LEGAL file
|
||||
described in Section 3.4 and must be included with all
|
||||
distributions of the Source Code. Except to the extent
|
||||
prohibited by statute or regulation, such description
|
||||
must be sufficiently detailed for a recipient of
|
||||
ordinary skill to be able to understand it.
|
||||
|
||||
|
||||
5. Application of this License.
|
||||
|
||||
This License applies to code to which the Initial
|
||||
Developer has attached the notice in Exhibit A and to
|
||||
related Covered Code.
|
||||
|
||||
|
||||
6. Versions of the License.
|
||||
|
||||
6.1. New Versions.
|
||||
Netscape Communications Corporation (''Netscape'') may
|
||||
publish revised and/or new versions of the License
|
||||
from time to time. Each version will be given a
|
||||
distinguishing version number.
|
||||
|
||||
6.2. Effect of New Versions.
|
||||
Once Covered Code has been published under a
|
||||
particular version of the License, You may always
|
||||
continue to use it under the terms of that version.
|
||||
You may also choose to use such Covered Code under the
|
||||
terms of any subsequent version of the License
|
||||
published by Netscape. No one other than Netscape has
|
||||
the right to modify the terms applicable to Covered
|
||||
Code created under this License.
|
||||
|
||||
6.3. Derivative Works.
|
||||
If You create or use a modified version of this
|
||||
License (which you may only do in order to apply it to
|
||||
code which is not already Covered Code governed by
|
||||
this License), You must (a) rename Your license so
|
||||
that the phrases ''Mozilla'', ''MOZILLAPL'',
|
||||
''MOZPL'', ''Netscape'', "MPL", ''NPL'' or any
|
||||
confusingly similar phrase do not appear in your
|
||||
license (except to note that your license differs from
|
||||
this License) and (b) otherwise make it clear that
|
||||
Your version of the license contains terms which
|
||||
differ from the Mozilla Public License and Netscape
|
||||
Public License. (Filling in the name of the Initial
|
||||
Developer, Original Code or Contributor in the notice
|
||||
described in Exhibit A shall not of themselves be
|
||||
deemed to be modifications of this License.)
|
||||
|
||||
|
||||
7. DISCLAIMER OF WARRANTY.
|
||||
|
||||
COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS
|
||||
IS'' BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION,
|
||||
WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS,
|
||||
MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-
|
||||
INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
|
||||
PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD
|
||||
ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU
|
||||
(NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR)
|
||||
ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR
|
||||
CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
|
||||
ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED
|
||||
CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
|
||||
DISCLAIMER.
|
||||
|
||||
|
||||
8. TERMINATION.
|
||||
|
||||
8.1. This License and the rights granted hereunder
|
||||
will terminate automatically if You fail to comply
|
||||
with terms herein and fail to cure such breach within
|
||||
30 days of becoming aware of the breach. All
|
||||
sublicenses to the Covered Code which are properly
|
||||
granted shall survive any termination of this License.
|
||||
Provisions which, by their nature, must remain in
|
||||
effect beyond the termination of this License shall
|
||||
survive.
|
||||
|
||||
8.2. If You initiate litigation by asserting a patent
|
||||
infringement claim (excluding declatory judgment
|
||||
actions) against Initial Developer or a Contributor
|
||||
(the Initial Developer or Contributor against whom You
|
||||
file such action is referred to as "Participant")
|
||||
alleging that:
|
||||
|
||||
(a) such Participant's Contributor Version directly
|
||||
or indirectly infringes any patent, then any and all
|
||||
rights granted by such Participant to You under
|
||||
Sections 2.1 and/or 2.2 of this License shall, upon 60
|
||||
days notice from Participant terminate prospectively,
|
||||
unless if within 60 days after receipt of notice You
|
||||
either: (i) agree in writing to pay Participant a
|
||||
mutually agreeable reasonable royalty for Your past
|
||||
and future use of Modifications made by such
|
||||
Participant, or (ii) withdraw Your litigation claim
|
||||
with respect to the Contributor Version against such
|
||||
Participant. If within 60 days of notice, a
|
||||
reasonable royalty and payment arrangement are not
|
||||
mutually agreed upon in writing by the parties or the
|
||||
litigation claim is not withdrawn, the rights granted
|
||||
by Participant to You under Sections 2.1 and/or 2.2
|
||||
automatically terminate at the expiration of the 60
|
||||
day notice period specified above.
|
||||
|
||||
(b) any software, hardware, or device, other than
|
||||
such Participant's Contributor Version, directly or
|
||||
indirectly infringes any patent, then any rights
|
||||
granted to You by such Participant under Sections 2.1
|
||||
(b) and 2.2(b) are revoked effective as of the date
|
||||
You first made, used, sold, distributed, or had made,
|
||||
Modifications made by that Participant.
|
||||
|
||||
8.3. If You assert a patent infringement claim
|
||||
against Participant alleging that such Participant's
|
||||
Contributor Version directly or indirectly infringes
|
||||
any patent where such claim is resolved (such as by
|
||||
license or settlement) prior to the initiation of
|
||||
patent infringement litigation, then the reasonable
|
||||
value of the licenses granted by such Participant
|
||||
under Sections 2.1 or 2.2 shall be taken into account
|
||||
in determining the amount or value of any payment or
|
||||
license.
|
||||
|
||||
8.4. In the event of termination under Sections 8.1
|
||||
or 8.2 above, all end user license agreements
|
||||
(excluding distributors and resellers) which have been
|
||||
validly granted by You or any distributor hereunder
|
||||
prior to termination shall survive termination.
|
||||
|
||||
|
||||
9. LIMITATION OF LIABILITY.
|
||||
|
||||
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY,
|
||||
WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR
|
||||
OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER
|
||||
CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR
|
||||
ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY
|
||||
PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
|
||||
CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING,
|
||||
WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK
|
||||
STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND
|
||||
ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH
|
||||
PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT
|
||||
APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
|
||||
RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
|
||||
APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME
|
||||
JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION
|
||||
OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS
|
||||
EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
|
||||
10. U.S. GOVERNMENT END USERS.
|
||||
|
||||
The Covered Code is a ''commercial item,'' as that
|
||||
term is defined in 48 C.F.R. 2.101 (Oct. 1995),
|
||||
consisting of ''commercial computer software'' and
|
||||
''commercial computer software documentation,'' as
|
||||
such terms are used in 48 C.F.R. 12.212 (Sept. 1995).
|
||||
Consistent with 48 C.F.R. 12.212 and 48 C.F.R.
|
||||
227.7202-1 through 227.7202-4 (June 1995), all U.S.
|
||||
Government End Users acquire Covered Code with only
|
||||
those rights set forth herein.
|
||||
|
||||
|
||||
11. MISCELLANEOUS.
|
||||
|
||||
This License represents the complete agreement
|
||||
concerning subject matter hereof. If any provision of
|
||||
this License is held to be unenforceable, such
|
||||
provision shall be reformed only to the extent
|
||||
necessary to make it enforceable. This License shall
|
||||
be governed by California law provisions (except to
|
||||
the extent applicable law, if any, provides
|
||||
otherwise), excluding its conflict-of-law provisions.
|
||||
With respect to disputes in which at least one party
|
||||
is a citizen of, or an entity chartered or registered
|
||||
to do business in the United States of America, any
|
||||
litigation relating to this License shall be subject
|
||||
to the jurisdiction of the Federal Courts of the
|
||||
Northern District of California, with venue lying in
|
||||
Santa Clara County, California, with the losing party
|
||||
responsible for costs, including without limitation,
|
||||
court costs and reasonable attorneys' fees and
|
||||
expenses. The application of the United Nations
|
||||
Convention on Contracts for the International Sale of
|
||||
Goods is expressly excluded. Any law or regulation
|
||||
which provides that the language of a contract shall
|
||||
be construed against the drafter shall not apply to
|
||||
this License.
|
||||
|
||||
|
||||
12. RESPONSIBILITY FOR CLAIMS.
|
||||
|
||||
As between Initial Developer and the Contributors,
|
||||
each party is responsible for claims and damages
|
||||
arising, directly or indirectly, out of its
|
||||
utilization of rights under this License and You agree
|
||||
to work with Initial Developer and Contributors to
|
||||
distribute such responsibility on an equitable basis.
|
||||
Nothing herein is intended or shall be deemed to
|
||||
constitute any admission of liability.
|
||||
|
||||
|
||||
13. MULTIPLE-LICENSED CODE.
|
||||
|
||||
Initial Developer may designate portions of the
|
||||
Covered Code as Multiple-Licensed. Multiple-Licensed
|
||||
means that the Initial Developer permits you to
|
||||
utilize portions of the Covered Code under Your choice
|
||||
of the NPL or the alternative licenses, if any,
|
||||
specified by the Initial Developer in the file
|
||||
described in Exhibit A.
|
||||
|
||||
|
||||
|
||||
EXHIBIT A - Mozilla Public License.
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the License.
|
||||
|
||||
The Original Code is ______________________________________.
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
________________________.
|
||||
Portions created by ______________________ are Copyright (C) ______
|
||||
_______________________. All Rights Reserved.
|
||||
|
||||
Contributor(s): ______________________________________.
|
||||
|
||||
Alternatively, the contents of this file may be used under the terms of
|
||||
the _____ license (the [___] License), in which case the provisions of
|
||||
[______] License are applicable instead of those above. If you wish to
|
||||
allow use of your version of this file only under the terms of the [____]
|
||||
License and not to allow others to use your version of this file under
|
||||
the MPL, indicate your decision by deleting the provisions above and
|
||||
replace them with the notice and other provisions required by the [___]
|
||||
License. If you do not delete the provisions above, a recipient may use
|
||||
your version of this file under either the MPL or the [___] License.
|
||||
|
||||
[NOTE: The text of this Exhibit A may differ slightly from the text of
|
||||
the notices in the Source Code files of the Original Code. You should use
|
||||
the text of this Exhibit A rather than the text found in the Original Code
|
||||
Source Code for Your Modifications.]
|
||||
|
29
externals/vegas/README
vendored
Normal file
29
externals/vegas/README
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
VEGAS AS3 - version 1.8.5.2228
|
||||
|
||||
The "vegas.swc" library contains all the AS3 source code of the VEGAS project with all this extensions.
|
||||
|
||||
LICENCE
|
||||
|
||||
Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
|
||||
PROJECT PAGES
|
||||
|
||||
* http://code.google.com/p/vegas/
|
||||
|
||||
DOCUMENTATION & CO
|
||||
|
||||
* http://code.google.com/p/vegas/ (tutorials and install)
|
||||
* http://code.google.com/p/vegas/issues/list (issues)
|
||||
* http://www.ekameleon.net/vegas/docs
|
||||
|
||||
* http://www.ekameleon.net/blog/ (french blog)
|
||||
|
||||
ABOUT AUTHOR
|
||||
|
||||
* Author : ALCARAZ Marc (eKameleon)
|
||||
* Link : http://www.ekameleon.net/blog
|
||||
* Mail : ekameleon@gmail.com
|
||||
|
||||
NOTES
|
||||
|
||||
The vegas.swc file target now the FlashPlayer 10.2 and build with the Flex SDK 4.5.0.19786.
|
86
externals/vegas/src/system/Serializer.as
vendored
Normal file
86
externals/vegas/src/system/Serializer.as
vendored
Normal file
|
@ -0,0 +1,86 @@
|
|||
/*
|
||||
Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
The Original Code is [maashaack framework].
|
||||
|
||||
The Initial Developers of the Original Code are
|
||||
Zwetan Kjukov <zwetan@gmail.com> and Marc Alcaraz <ekameleon@gmail.com>.
|
||||
Portions created by the Initial Developers are Copyright (C) 2006-2011
|
||||
the Initial Developers. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
|
||||
Alternatively, the contents of this file may be used under the terms of
|
||||
either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
of those above. If you wish to allow use of your version of this file only
|
||||
under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
use your version of this file under the terms of the MPL, indicate your
|
||||
decision by deleting the provisions above and replace them with the notice
|
||||
and other provisions required by the LGPL or the GPL. If you do not delete
|
||||
the provisions above, a recipient may use your version of this file under
|
||||
the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*/
|
||||
|
||||
package system
|
||||
{
|
||||
|
||||
/**
|
||||
* Defines what a Serializer have to implements to be integrated in the framework.
|
||||
* <p><b>Note :</b> Every serializers (eden, json, wddx, etc.) should implement it.</p>
|
||||
*/
|
||||
public interface Serializer
|
||||
{
|
||||
/**
|
||||
* The prettyIndent value of the serializer.
|
||||
*/
|
||||
function get prettyIndent():int;
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
function set prettyIndent( value:int ):void;
|
||||
|
||||
/**
|
||||
* The prettyPrinting value of the serializer.
|
||||
*/
|
||||
function get prettyPrinting():Boolean;
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
function set prettyPrinting( value:Boolean ):void;
|
||||
|
||||
/**
|
||||
* The identor String value of the serializer.
|
||||
*/
|
||||
function get indentor():String;
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
function set indentor( value:String ):void;
|
||||
|
||||
/**
|
||||
* Deserialize the specified String source representation.
|
||||
*/
|
||||
function deserialize( source:String ):*;
|
||||
|
||||
/**
|
||||
* Serialize the specified object.
|
||||
*/
|
||||
function serialize( value:* ):String;
|
||||
}
|
||||
}
|
||||
|
107
externals/vegas/src/vegas/strings/JSON.as
vendored
Normal file
107
externals/vegas/src/vegas/strings/JSON.as
vendored
Normal file
|
@ -0,0 +1,107 @@
|
|||
/*
|
||||
|
||||
Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the License.
|
||||
|
||||
The Original Code is VEGAS Framework.
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
ALCARAZ Marc (aka eKameleon) <ekameleon@gmail.com>.
|
||||
Portions created by the Initial Developer are Copyright (C) 2004-2011
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s) :
|
||||
|
||||
Alternatively, the contents of this file may be used under the terms of
|
||||
either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
of those above. If you wish to allow use of your version of this file only
|
||||
under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
use your version of this file under the terms of the MPL, indicate your
|
||||
decision by deleting the provisions above and replace them with the notice
|
||||
and other provisions required by the LGPL or the GPL. If you do not delete
|
||||
the provisions above, a recipient may use your version of this file under
|
||||
the terms of any one of the MPL, the GPL or the LGPL.
|
||||
|
||||
*/
|
||||
package vegas.strings
|
||||
{
|
||||
import vegas.strings.json.JSONSerializer;
|
||||
|
||||
/**
|
||||
* <code class="prettyprint">JSON</code> (JavaScript object Notation) is a lightweight data-interchange format.
|
||||
* <p>More information in the official site : <a href="http://www.JSON.org/">http://www.JSON.org</a></p>
|
||||
* <p>Add Hexa Digits tool in deserialize method - <a href="http://code.google.com/p/edenrr/">eden inspiration</a></p>
|
||||
*
|
||||
* @example Example
|
||||
* <listing version="3.0">
|
||||
* <code class="prettyprint">
|
||||
* import core.getClassName ;
|
||||
*
|
||||
* import vegas.strings.JSON;
|
||||
* import vegas.strings.errors.JSONError;
|
||||
*
|
||||
* // --- Init
|
||||
*
|
||||
* var a:Array = [2, true, "hello"] ;
|
||||
* var o:Object = { prop1 : 1 , prop2 : 2 } ;
|
||||
* var s:String = "hello world" ;
|
||||
* var n:Number = 4 ;
|
||||
* var b:Boolean = true ;
|
||||
*
|
||||
* trace("# Serialize \r") ;
|
||||
*
|
||||
* trace("- a : " + JSON.serialize( a ) ) ;
|
||||
* trace("- o : " + JSON.serialize( o ) ) ;
|
||||
* trace("- s : " + JSON.serialize( s ) ) ;
|
||||
* trace("- n : " + JSON.serialize( n ) ) ;
|
||||
* trace("- b : " + JSON.serialize( b ) ) ;
|
||||
*
|
||||
* trace ("\r# Deserialize \r") ;
|
||||
*
|
||||
* var source:String = '[ { "prop1" : 0xFF0000 , prop2:2, prop3:"hello", prop4:true} , 2, true, 3, [3, 2] ]' ;
|
||||
*
|
||||
* o = JSON.deserialize(source) ;
|
||||
*
|
||||
* var l:uint = o.length ;
|
||||
* for (var i:uint = 0 ; i < l ; i++)
|
||||
* {
|
||||
* trace("> " + i + " : " + o[i] + " -> typeof :: " + typeof(o[i])) ;
|
||||
* if (typeof(o[i]) == "object")
|
||||
* {
|
||||
* for (var each:String in o[i])
|
||||
* {
|
||||
* trace(" > " + each + " : " + o[i][each] + " :: " + getClassName(o[i][each]) ) ;
|
||||
* }
|
||||
* }
|
||||
* }
|
||||
*
|
||||
* trace ("\r# JSONError \r") ;
|
||||
*
|
||||
* source = "[3, 2," ; // test1
|
||||
*
|
||||
* // var source:String = '{"prop1":coucou"}' ; // test2
|
||||
*
|
||||
* try
|
||||
* {
|
||||
* var errorObj:Object = JSON.deserialize(source) ;
|
||||
* }
|
||||
* catch( e:JSONError )
|
||||
* {
|
||||
* trace( e.toString() ) ;
|
||||
* }
|
||||
* </code>
|
||||
* </listing>
|
||||
*/
|
||||
public var JSON:JSONSerializer = new JSONSerializer() ;
|
||||
}
|
84
externals/vegas/src/vegas/strings/json/JSONError.as
vendored
Normal file
84
externals/vegas/src/vegas/strings/json/JSONError.as
vendored
Normal file
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
|
||||
Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the License.
|
||||
|
||||
The Original Code is VEGAS Framework.
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
ALCARAZ Marc (aka eKameleon) <ekameleon@gmail.com>.
|
||||
Portions created by the Initial Developer are Copyright (C) 2004-2011
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s) :
|
||||
|
||||
Alternatively, the contents of this file may be used under the terms of
|
||||
either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
of those above. If you wish to allow use of your version of this file only
|
||||
under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
use your version of this file under the terms of the MPL, indicate your
|
||||
decision by deleting the provisions above and replace them with the notice
|
||||
and other provisions required by the LGPL or the GPL. If you do not delete
|
||||
the provisions above, a recipient may use your version of this file under
|
||||
the terms of any one of the MPL, the GPL or the LGPL.
|
||||
|
||||
*/
|
||||
|
||||
package vegas.strings.json
|
||||
{
|
||||
/**
|
||||
* This JSONError is throw in the JSON static methods.
|
||||
*/
|
||||
public class JSONError extends Error
|
||||
{
|
||||
/**
|
||||
* Creates a new JSONError instance.
|
||||
*/
|
||||
public function JSONError( message:String, at:uint, source:String , id:int=0 )
|
||||
{
|
||||
super( message , id );
|
||||
name = "JSONError" ;
|
||||
this.at = at ;
|
||||
this.source = source ;
|
||||
}
|
||||
|
||||
/**
|
||||
* The position of char with an error parsing in the JSON String representation.
|
||||
*/
|
||||
public var at:uint ;
|
||||
|
||||
/**
|
||||
* The source ot the bad parsing.
|
||||
*/
|
||||
public var source:String ;
|
||||
|
||||
/**
|
||||
* Returns a String representation of the object.
|
||||
* @return a String representation of the object.
|
||||
*/
|
||||
public function toString():String
|
||||
{
|
||||
var msg:String = "## " + name + " : " + message + " ##" ;
|
||||
if (!isNaN(at))
|
||||
{
|
||||
msg += ", at:" + at ;
|
||||
}
|
||||
if ( source != null )
|
||||
{
|
||||
msg += " in \"" + source + "\"";
|
||||
}
|
||||
return msg ;
|
||||
}
|
||||
}
|
||||
}
|
757
externals/vegas/src/vegas/strings/json/JSONSerializer.as
vendored
Normal file
757
externals/vegas/src/vegas/strings/json/JSONSerializer.as
vendored
Normal file
|
@ -0,0 +1,757 @@
|
|||
/*
|
||||
|
||||
Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the License.
|
||||
|
||||
The Original Code is VEGAS Framework.
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
ALCARAZ Marc (aka eKameleon) <ekameleon@gmail.com>.
|
||||
Portions created by the Initial Developer are Copyright (C) 2004-2011
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s) :
|
||||
|
||||
Alternatively, the contents of this file may be used under the terms of
|
||||
either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
of those above. If you wish to allow use of your version of this file only
|
||||
under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
use your version of this file under the terms of the MPL, indicate your
|
||||
decision by deleting the provisions above and replace them with the notice
|
||||
and other provisions required by the LGPL or the GPL. If you do not delete
|
||||
the provisions above, a recipient may use your version of this file under
|
||||
the terms of any one of the MPL, the GPL or the LGPL.
|
||||
|
||||
*/
|
||||
|
||||
package vegas.strings.json
|
||||
{
|
||||
import system.Serializer;
|
||||
|
||||
/**
|
||||
* This class is the concrete class of the JSON singleton.
|
||||
* <code class="prettyprint">JSON</code> (JavaScript object Notation) is a lightweight data-interchange format.
|
||||
* <p>More information in the official site : <a href="http://www.JSON.org/">http://www.JSON.org</a></p>
|
||||
* <p>Add Hexa Digits tool in deserialize method - <a href="http://code.google.com/p/edenrr/">eden inspiration</a></p>
|
||||
* <p><b>Example :</b></p>
|
||||
* <pre class="prettyprint">
|
||||
* import core.getClassName ;
|
||||
*
|
||||
* import vegas.strings.JSON;
|
||||
* import vegas.strings.JSONError;
|
||||
*
|
||||
* // --- Init
|
||||
*
|
||||
* var a:Array = [2, true, "hello"] ;
|
||||
* var o:Object = { prop1 : 1 , prop2 : 2 } ;
|
||||
* var s:String = "hello world" ;
|
||||
* var n:Number = 4 ;
|
||||
* var b:Boolean = true ;
|
||||
*
|
||||
* trace("Serialize") ;
|
||||
*
|
||||
* trace("- a : " + JSON.serialize( a ) ) ;
|
||||
* trace("- o : " + JSON.serialize( o ) ) ;
|
||||
* trace("- s : " + JSON.serialize( s ) ) ;
|
||||
* trace("- n : " + JSON.serialize( n ) ) ;
|
||||
* trace("- b : " + JSON.serialize( b ) ) ;
|
||||
*
|
||||
* trace ("Deserialize") ;
|
||||
*
|
||||
* var source:String = '[ { "prop1" : 0xFF0000 , prop2:2, prop3:"hello", prop4:true} , 2, true, 3, [3, 2] ]' ;
|
||||
*
|
||||
* o = JSON.deserialize(source) ;
|
||||
*
|
||||
* var l:uint = o.length ;
|
||||
* for (var i:uint = 0 ; i < l ; i++)
|
||||
* {
|
||||
* trace("- " + i + " : " + o[i] + " , typeof :: " + typeof(o[i])) ;
|
||||
* if (typeof(o[i]) == "object")
|
||||
* {
|
||||
* for (var each:String in o[i])
|
||||
* {
|
||||
* trace(" + " + each + " : " + o[i][each] + " :: " + getClassName(o[i][each]) ) ;
|
||||
* }
|
||||
* }
|
||||
* }
|
||||
*
|
||||
* trace ("JSONError") ;
|
||||
*
|
||||
* source = "[3, 2," ; // test1
|
||||
*
|
||||
* // var source:String = '{"prop1":coucou"}' ; // test2
|
||||
*
|
||||
* try
|
||||
* {
|
||||
* var errorObj:Object = JSON.deserialize(source) ;
|
||||
* }
|
||||
* catch( e:JSONError )
|
||||
* {
|
||||
* trace( e.toString() ) ;
|
||||
* }
|
||||
* </pre>
|
||||
*/
|
||||
public class JSONSerializer implements Serializer
|
||||
{
|
||||
/**
|
||||
* Creates a new JSONSerializer instance.
|
||||
*/
|
||||
public function JSONSerializer()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* The source to evaluate.
|
||||
*/
|
||||
public var source:String ;
|
||||
|
||||
/**
|
||||
* Indicates the indentor string representation.
|
||||
*/
|
||||
public function get indentor():String
|
||||
{
|
||||
return _indentor;
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
public function set indentor(value:String):void
|
||||
{
|
||||
_indentor = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates the pretty indent value.
|
||||
*/
|
||||
public function get prettyIndent():int
|
||||
{
|
||||
return _prettyIndent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
public function set prettyIndent(value:int):void
|
||||
{
|
||||
_prettyIndent = value ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates the pretty printing flag value.
|
||||
*/
|
||||
public function get prettyPrinting():Boolean
|
||||
{
|
||||
return _prettyPrinting ;
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
public function set prettyPrinting(value:Boolean):void
|
||||
{
|
||||
_prettyPrinting = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse a string and interpret the source code to the correct object construct.
|
||||
* <p><b>Example :</b></p>
|
||||
* <pre class="prettyprint">
|
||||
* "hello world" --> "hello world"
|
||||
* "0xFF" --> 255
|
||||
* "{a:1,"b":2}" --> {a:1,b:2}
|
||||
* </pre>
|
||||
* @return a string representing the data.
|
||||
*/
|
||||
public function deserialize( source:String ):*
|
||||
{
|
||||
this.source = source ;
|
||||
at = 0 ;
|
||||
ch = ' ' ;
|
||||
return value() ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Serialize the specified value object passed-in argument.
|
||||
*/
|
||||
public function serialize( value:* ):String
|
||||
{
|
||||
var c:String ; // char
|
||||
var i:int ;
|
||||
var l:int ;
|
||||
var s:String = '' ;
|
||||
var v:* ;
|
||||
var tof:String = typeof(value) ;
|
||||
switch (tof)
|
||||
{
|
||||
case 'object' :
|
||||
{
|
||||
if (value)
|
||||
{
|
||||
if (value is Array)
|
||||
{
|
||||
l = (value as Array).length ;
|
||||
for (i = 0 ; i < l ; ++i)
|
||||
{
|
||||
v = serialize(value[i]);
|
||||
if (s) s += ',' ;
|
||||
s += v ;
|
||||
}
|
||||
return '[' + s + ']';
|
||||
}
|
||||
else if ( typeof( value.toString ) != 'undefined')
|
||||
{
|
||||
for (var prop:String in value)
|
||||
{
|
||||
v = value[prop];
|
||||
if ( (typeof(v) != 'undefined') && (typeof(v) != 'function') )
|
||||
{
|
||||
v = serialize(v);
|
||||
if (s)
|
||||
{
|
||||
s += ',' ;
|
||||
}
|
||||
s += serialize(prop) + ':' + v ;
|
||||
}
|
||||
}
|
||||
return "{" + s + "}";
|
||||
}
|
||||
}
|
||||
return 'null';
|
||||
}
|
||||
case 'number':
|
||||
{
|
||||
return isFinite(value) ? String(value) : 'null' ;
|
||||
}
|
||||
case 'string' :
|
||||
{
|
||||
l = (value as String).length ;
|
||||
s = '"' ;
|
||||
for (i = 0 ; i < l ; i += 1)
|
||||
{
|
||||
c = (value as String).charAt(i) ;
|
||||
if (c >= ' ')
|
||||
{
|
||||
if (c == '\\' || c == '"')
|
||||
{
|
||||
s += '\\';
|
||||
}
|
||||
s += c;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (c)
|
||||
{
|
||||
case '\b':
|
||||
{
|
||||
s += '\\b';
|
||||
break ;
|
||||
}
|
||||
case '\f' :
|
||||
{
|
||||
s += '\\f' ;
|
||||
break ;
|
||||
}
|
||||
case '\n' :
|
||||
{
|
||||
s += '\\n' ;
|
||||
break ;
|
||||
}
|
||||
case '\r':
|
||||
{
|
||||
s += '\\r' ;
|
||||
break ;
|
||||
}
|
||||
case '\t':
|
||||
{
|
||||
s += '\\t' ;
|
||||
break ;
|
||||
}
|
||||
default:
|
||||
{
|
||||
var code:Number = c.charCodeAt() ;
|
||||
s += '\\u00' + String(Math.floor(code / 16).toString(16)) + ((code % 16).toString(16)) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return s + '"' ;
|
||||
}
|
||||
case 'boolean' :
|
||||
{
|
||||
return String(value);
|
||||
}
|
||||
default :
|
||||
{
|
||||
return 'null';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The current position of the iterator in the source.
|
||||
*/
|
||||
protected var at:Number = 0 ;
|
||||
|
||||
/**
|
||||
* The current character of the iterator in the source.
|
||||
*/
|
||||
protected var ch:String = ' ' ;
|
||||
|
||||
/**
|
||||
* Check the Array objects in the source expression.
|
||||
*/
|
||||
protected function array():Array
|
||||
{
|
||||
var a:Array = [];
|
||||
if ( ch == '[' )
|
||||
{
|
||||
next() ;
|
||||
white() ;
|
||||
if (ch == ']')
|
||||
{
|
||||
next();
|
||||
return a;
|
||||
}
|
||||
while (ch)
|
||||
{
|
||||
a.push( value() ) ;
|
||||
white();
|
||||
if (ch == ']')
|
||||
{
|
||||
next();
|
||||
return a;
|
||||
}
|
||||
else if (ch != ',')
|
||||
{
|
||||
break;
|
||||
}
|
||||
next();
|
||||
white();
|
||||
}
|
||||
}
|
||||
error( JSONStrings.badArray );
|
||||
return null ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws a JSONError with the passed-in message.
|
||||
*/
|
||||
protected function error( m:String ):void
|
||||
{
|
||||
throw new JSONError( m, at - 1 , source) ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates if the passed-in character is a digit.
|
||||
*/
|
||||
protected function isDigit( c:String ):Boolean
|
||||
{
|
||||
return( ("0" <= c) && (c <= "9") );
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates if the passed-in character is a hexadecimal digit.
|
||||
*/
|
||||
protected function isHexDigit( c:String ):Boolean
|
||||
{
|
||||
return( isDigit( c ) || (("A" <= c) && (c <= "F")) || (("a" <= c) && (c <= "f")) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates if the current character is a key.
|
||||
*/
|
||||
protected function key():*
|
||||
{
|
||||
var s:String = ch ;
|
||||
var semiColon:int = source.indexOf( ':' , at ) ;
|
||||
var quoteIndex:int = source.indexOf( '"' , at ) ;
|
||||
var squoteIndex:int = source.indexOf( "'" , at ) ;
|
||||
if( (quoteIndex <= semiColon && quoteIndex > -1) || (squoteIndex <= semiColon && squoteIndex > -1))
|
||||
{
|
||||
s = string() ;
|
||||
white() ;
|
||||
if(ch == ':')
|
||||
{
|
||||
return s;
|
||||
}
|
||||
else
|
||||
{
|
||||
error(JSONStrings.badKey);
|
||||
}
|
||||
}
|
||||
while ( next() ) // Use key handling
|
||||
{
|
||||
if (ch == ':')
|
||||
{
|
||||
return s;
|
||||
}
|
||||
if(ch <= ' ')
|
||||
{
|
||||
//
|
||||
}
|
||||
else
|
||||
{
|
||||
s += ch;
|
||||
}
|
||||
}
|
||||
error( JSONStrings.badKey ) ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the next character in the source String representation.
|
||||
* @return the next character in the source String representation.
|
||||
*/
|
||||
protected function next():String
|
||||
{
|
||||
ch = source.charAt(at);
|
||||
at += 1;
|
||||
return ch;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the Number values in the source expression.
|
||||
*/
|
||||
protected function number():*
|
||||
{
|
||||
|
||||
var n:* = '' ;
|
||||
var v:* ;
|
||||
var hex:String = '' ;
|
||||
var sign:String = '' ;
|
||||
if (ch == '-')
|
||||
{
|
||||
n = '-';
|
||||
sign = n ;
|
||||
next();
|
||||
}
|
||||
if( ch == "0" )
|
||||
{
|
||||
next() ;
|
||||
if( ( ch == "x") || ( ch == "X") )
|
||||
{
|
||||
next();
|
||||
while( isHexDigit( ch ) )
|
||||
{
|
||||
hex += ch ;
|
||||
next();
|
||||
}
|
||||
if( hex == "" )
|
||||
{
|
||||
error(JSONStrings.malFormedHexadecimal) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
return Number( sign + "0x" + hex ) ;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
n += "0" ;
|
||||
}
|
||||
}
|
||||
while ( isDigit(ch) )
|
||||
{
|
||||
n += ch ;
|
||||
next() ;
|
||||
}
|
||||
if (ch == '.')
|
||||
{
|
||||
n += '.';
|
||||
while (next() && ch >= '0' && ch <= '9')
|
||||
{
|
||||
n += ch ;
|
||||
}
|
||||
}
|
||||
v = 1 * n ;
|
||||
if (!isFinite(v))
|
||||
{
|
||||
error( JSONStrings.badNumber );
|
||||
}
|
||||
else
|
||||
{
|
||||
return v ;
|
||||
}
|
||||
return NaN ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the Object values in the source expression.
|
||||
*/
|
||||
protected function object():*
|
||||
{
|
||||
var k:* = {} ;
|
||||
var o:* = {} ;
|
||||
if (ch == '{')
|
||||
{
|
||||
next();
|
||||
white();
|
||||
if (ch == '}')
|
||||
{
|
||||
next() ;
|
||||
return o ;
|
||||
}
|
||||
while (ch)
|
||||
{
|
||||
k = key() ;
|
||||
white();
|
||||
if (ch != ':')
|
||||
{
|
||||
break;
|
||||
}
|
||||
next();
|
||||
o[k] = value() ;
|
||||
white();
|
||||
if (ch == '}')
|
||||
{
|
||||
next();
|
||||
return o;
|
||||
}
|
||||
else if (ch != ',')
|
||||
{
|
||||
break;
|
||||
}
|
||||
next();
|
||||
white();
|
||||
}
|
||||
}
|
||||
error( JSONStrings.badObject ) ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the string objects in the source expression.
|
||||
*/
|
||||
protected function string():*
|
||||
{
|
||||
var i:* = '' ;
|
||||
var s:* = '' ;
|
||||
var t:* ;
|
||||
var u:* ;
|
||||
var outer:Boolean ;
|
||||
if (ch == '"' || ch == "'" )
|
||||
{
|
||||
var outerChar:String = ch ;
|
||||
while ( next() )
|
||||
{
|
||||
if (ch == outerChar)
|
||||
{
|
||||
next() ;
|
||||
return s ;
|
||||
}
|
||||
else if (ch == '\\')
|
||||
{
|
||||
switch ( next() )
|
||||
{
|
||||
case 'b':
|
||||
{
|
||||
s += '\b' ;
|
||||
break ;
|
||||
}
|
||||
case 'f' :
|
||||
{
|
||||
s += '\f';
|
||||
break ;
|
||||
}
|
||||
case 'n':
|
||||
{
|
||||
s += '\n';
|
||||
break ;
|
||||
}
|
||||
case 'r' :
|
||||
{
|
||||
s += '\r';
|
||||
break ;
|
||||
}
|
||||
case 't' :
|
||||
{
|
||||
s += '\t' ;
|
||||
break ;
|
||||
}
|
||||
case 'u' :
|
||||
{
|
||||
u = 0;
|
||||
for (i = 0; i < 4; i += 1)
|
||||
{
|
||||
t = parseInt( next() , 16 ) ;
|
||||
if (!isFinite(t))
|
||||
{
|
||||
outer = true;
|
||||
break;
|
||||
}
|
||||
u = u * 16 + t;
|
||||
}
|
||||
if(outer)
|
||||
{
|
||||
outer = false;
|
||||
break;
|
||||
}
|
||||
s += String.fromCharCode(u);
|
||||
break;
|
||||
}
|
||||
default :
|
||||
{
|
||||
s += ch;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
s += ch;
|
||||
}
|
||||
}
|
||||
}
|
||||
error( JSONStrings.badString );
|
||||
return null ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Evaluates the values in the source expression.
|
||||
*/
|
||||
protected function value():*
|
||||
{
|
||||
white() ;
|
||||
if (ch == '{' )
|
||||
{
|
||||
return object();
|
||||
}
|
||||
else if ( ch == '[' )
|
||||
{
|
||||
return array();
|
||||
}
|
||||
else if ( ch == '"' || ch == "'" )
|
||||
{
|
||||
return string();
|
||||
}
|
||||
else if ( ch == '-' )
|
||||
{
|
||||
return number();
|
||||
}
|
||||
else
|
||||
{
|
||||
return ( ch >= '0' && ch <= '9' ) ? number() : word() ;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check all white spaces.
|
||||
*/
|
||||
protected function white():void
|
||||
{
|
||||
while (ch)
|
||||
{
|
||||
if (ch <= ' ')
|
||||
{
|
||||
next();
|
||||
}
|
||||
else if (ch == '/')
|
||||
{
|
||||
switch ( next() )
|
||||
{
|
||||
case '/' :
|
||||
{
|
||||
while ( next() && ch != '\n' && ch != '\r')
|
||||
{
|
||||
}
|
||||
break;
|
||||
}
|
||||
case '*' :
|
||||
{
|
||||
next();
|
||||
for (;;)
|
||||
{
|
||||
if (ch)
|
||||
{
|
||||
if (ch == '*')
|
||||
{
|
||||
if ( next() == '/' )
|
||||
{
|
||||
next();
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
next();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
error( JSONStrings.unterminatedComment );
|
||||
}
|
||||
}
|
||||
break ;
|
||||
}
|
||||
default :
|
||||
{
|
||||
error( JSONStrings.syntaxError );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
break ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check all special words in the source to evaluate.
|
||||
*/
|
||||
protected function word():*
|
||||
{
|
||||
if (ch == 't')
|
||||
{
|
||||
if (next() == 'r' && next() == 'u' && next() == 'e')
|
||||
{
|
||||
next() ;
|
||||
return true ;
|
||||
}
|
||||
}
|
||||
else if ( ch == 'f' )
|
||||
{
|
||||
if (next() == 'a' && next() == 'l' && next() == 's' && next() == 'e')
|
||||
{
|
||||
next() ;
|
||||
return false ;
|
||||
}
|
||||
}
|
||||
else if ( ch == 'n' )
|
||||
{
|
||||
if (next() == 'u' && next() == 'l' && next() == 'l')
|
||||
{
|
||||
next() ;
|
||||
return null ;
|
||||
}
|
||||
}
|
||||
error( JSONStrings.syntaxError );
|
||||
return null ;
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
private var _prettyIndent:int = 0 ;
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
private var _prettyPrinting:Boolean ;
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
private var _indentor:String = " " ;
|
||||
}
|
||||
}
|
85
externals/vegas/src/vegas/strings/json/JSONStrings.as
vendored
Normal file
85
externals/vegas/src/vegas/strings/json/JSONStrings.as
vendored
Normal file
|
@ -0,0 +1,85 @@
|
|||
/*
|
||||
|
||||
Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
|
||||
The contents of this file are subject to the Mozilla Public License Version
|
||||
1.1 (the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS" basis,
|
||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the License.
|
||||
|
||||
The Original Code is VEGAS Framework.
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
ALCARAZ Marc (aka eKameleon) <ekameleon@gmail.com>.
|
||||
Portions created by the Initial Developer are Copyright (C) 2004-2011
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s) :
|
||||
|
||||
Alternatively, the contents of this file may be used under the terms of
|
||||
either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
of those above. If you wish to allow use of your version of this file only
|
||||
under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
use your version of this file under the terms of the MPL, indicate your
|
||||
decision by deleting the provisions above and replace them with the notice
|
||||
and other provisions required by the LGPL or the GPL. If you do not delete
|
||||
the provisions above, a recipient may use your version of this file under
|
||||
the terms of any one of the MPL, the GPL or the LGPL.
|
||||
|
||||
*/
|
||||
|
||||
package vegas.strings.json
|
||||
{
|
||||
/**
|
||||
* The string messages used in the JSON class.
|
||||
*/
|
||||
public class JSONStrings
|
||||
{
|
||||
/**
|
||||
* The bad Array error message.
|
||||
*/
|
||||
public static var badArray:String = "Bad Array" ;
|
||||
|
||||
/**
|
||||
* The bad key error message.
|
||||
*/
|
||||
public static var badKey:String = "Bad key" ;
|
||||
|
||||
/**
|
||||
* The bad Number error message.
|
||||
*/
|
||||
public static var badNumber:String = "Bad Number" ;
|
||||
|
||||
/**
|
||||
* The bad Object error message.
|
||||
*/
|
||||
public static var badObject:String = "Bad Object" ;
|
||||
|
||||
/**
|
||||
* The bad String error message.
|
||||
*/
|
||||
public static var badString:String = "Bad String" ;
|
||||
|
||||
/**
|
||||
* The mal formed Hexadecimal error message.
|
||||
*/
|
||||
public static var malFormedHexadecimal:String = "Mal formed Hexadecimal" ;
|
||||
|
||||
/**
|
||||
* The syntax error message.
|
||||
*/
|
||||
public static var syntaxError:String = "Syntax Error" ;
|
||||
|
||||
/**
|
||||
* The unterminated comment error message.
|
||||
*/
|
||||
public static var unterminatedComment:String = "Unterminated Comment" ;
|
||||
}
|
||||
}
|
|
@ -33,6 +33,11 @@ class PhabricatorLintEngine extends PhutilLintEngine {
|
|||
$linters[] = $javelin_linter;
|
||||
|
||||
foreach ($paths as $path) {
|
||||
if (strpos($path, 'support/aphlict/') !== false) {
|
||||
// This stuff is Node.js, not Javelin, so don't apply the Javelin
|
||||
// linter.
|
||||
continue;
|
||||
}
|
||||
if (preg_match('/\.js$/', $path)) {
|
||||
$javelin_linter->addPath($path);
|
||||
$javelin_linter->addData($path, $this->loadData($path));
|
||||
|
|
27
support/aphlict/client/build_aphlict_client.sh
Executable file
27
support/aphlict/client/build_aphlict_client.sh
Executable file
|
@ -0,0 +1,27 @@
|
|||
#!/bin/sh
|
||||
|
||||
BASEDIR=`dirname $0`
|
||||
ROOT=`cd $BASEDIR/../../../ && pwd`;
|
||||
|
||||
if [ -z "$MXMLC" ]; then
|
||||
echo "ERROR: Define environmental variable MXMLC to point to 'mxmlc' binary.";
|
||||
exit 1;
|
||||
fi;
|
||||
|
||||
set -e
|
||||
set -x
|
||||
|
||||
# cp -R $ROOT/externals/vegas/src $BASEDIR/src/vegas
|
||||
|
||||
(cd $BASEDIR && $MXMLC \
|
||||
-output aphlict.swf \
|
||||
-default-background-color=0x444444 \
|
||||
-default-size=500,500 \
|
||||
-target-player=10.2.0 \
|
||||
-warnings=true \
|
||||
-debug=true \
|
||||
-source-path=$ROOT/externals/vegas/src \
|
||||
-static-link-runtime-shared-libraries=true \
|
||||
src/Aphlict.as)
|
||||
|
||||
mv $BASEDIR/aphlict.swf $ROOT/webroot/rsrc/swf/aphlict.swf
|
162
support/aphlict/client/src/Aphlict.as
Normal file
162
support/aphlict/client/src/Aphlict.as
Normal file
|
@ -0,0 +1,162 @@
|
|||
package {
|
||||
|
||||
import flash.net.*;
|
||||
import flash.utils.*;
|
||||
import flash.media.*;
|
||||
import flash.display.*;
|
||||
import flash.events.*;
|
||||
import flash.external.ExternalInterface;
|
||||
|
||||
import com.phabricator.*;
|
||||
|
||||
import vegas.strings.JSON;
|
||||
|
||||
public class Aphlict extends Sprite {
|
||||
|
||||
private var client:String;
|
||||
|
||||
private var master:LocalConnection;
|
||||
private var recv:LocalConnection;
|
||||
private var send:LocalConnection;
|
||||
|
||||
private var receiver:AphlictReceiver;
|
||||
private var loyalUntil:Number = 0;
|
||||
private var subjects:Array;
|
||||
private var frequency:Number = 100;
|
||||
|
||||
private var socket:Socket;
|
||||
private var readBuffer:ByteArray;
|
||||
|
||||
public function Aphlict() {
|
||||
super();
|
||||
|
||||
this.master = null;
|
||||
this.receiver = new AphlictReceiver(this);
|
||||
this.subjects = [];
|
||||
|
||||
this.send = new LocalConnection();
|
||||
|
||||
this.recv = new LocalConnection();
|
||||
this.recv.client = this.receiver;
|
||||
for (var ii:Number = 0; ii < 32; ii++) {
|
||||
try {
|
||||
this.recv.connect('aphlict_subject_' + ii);
|
||||
this.client = 'aphlict_subject_' + ii;
|
||||
} catch (x:Error) {
|
||||
// Some other Aphlict client is holding that ID.
|
||||
}
|
||||
}
|
||||
|
||||
if (!this.client) {
|
||||
// Too many clients open already, just exit.
|
||||
return;
|
||||
}
|
||||
|
||||
this.usurp();
|
||||
}
|
||||
|
||||
private function usurp():void {
|
||||
if (this.master) {
|
||||
for (var ii:Number = 0; ii < this.subjects.length; ii++) {
|
||||
if (this.subjects[ii] == this.client) {
|
||||
continue;
|
||||
}
|
||||
this.send.send(this.subjects[ii], 'remainLoyal');
|
||||
}
|
||||
} else if (this.loyalUntil < new Date().getTime()) {
|
||||
var recv:LocalConnection = new LocalConnection();
|
||||
recv.client = this.receiver;
|
||||
try {
|
||||
recv.connect('aphlict_master');
|
||||
this.master = recv;
|
||||
this.subjects = [this.client];
|
||||
|
||||
this.connectToServer();
|
||||
|
||||
} catch (x:Error) {
|
||||
// Can't become the master.
|
||||
}
|
||||
|
||||
if (!this.master) {
|
||||
this.send.send('aphlict_master', 'becomeLoyal', this.client);
|
||||
this.remainLoyal();
|
||||
}
|
||||
}
|
||||
setTimeout(this.usurp, this.frequency);
|
||||
}
|
||||
|
||||
public function connectToServer():void {
|
||||
var socket:Socket = new Socket();
|
||||
|
||||
socket.addEventListener(Event.CONNECT, didConnectSocket);
|
||||
socket.addEventListener(Event.CLOSE, didCloseSocket);
|
||||
socket.addEventListener(IOErrorEvent.IO_ERROR, didErrorSocket);
|
||||
socket.addEventListener(ProgressEvent.SOCKET_DATA, didReceiveSocket);
|
||||
|
||||
socket.connect('127.0.0.1', 2600);
|
||||
|
||||
this.readBuffer = new ByteArray();
|
||||
this.socket = socket;
|
||||
}
|
||||
|
||||
private function didConnectSocket(event:Event):void {
|
||||
this.log("Connect!");
|
||||
}
|
||||
|
||||
private function didCloseSocket(event:Event):void {
|
||||
this.log("Close!");
|
||||
}
|
||||
|
||||
private function didErrorSocket(event:Event):void {
|
||||
this.log("Error!");
|
||||
}
|
||||
|
||||
private function didReceiveSocket(event:Event):void {
|
||||
var b:ByteArray = this.readBuffer;
|
||||
this.socket.readBytes(b, b.length);
|
||||
|
||||
do {
|
||||
b = this.readBuffer;
|
||||
b.position = 0;
|
||||
|
||||
if (b.length <= 8) {
|
||||
break;
|
||||
}
|
||||
|
||||
var msg_len:Number = parseInt(b.readUTFBytes(8), 10);
|
||||
if (b.length >= msg_len + 8) {
|
||||
var bytes:String = b.readUTFBytes(msg_len);
|
||||
var data:Object = JSON.deserialize(bytes);
|
||||
var t:ByteArray = new ByteArray();
|
||||
t.writeBytes(b, msg_len + 8);
|
||||
this.readBuffer = t;
|
||||
|
||||
for (var ii:Number = 0; ii < this.subjects.length; ii++) {
|
||||
this.send.send(this.subjects[ii], 'receiveMessage', data);
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
} while (true);
|
||||
|
||||
}
|
||||
|
||||
public function remainLoyal():void {
|
||||
this.loyalUntil = new Date().getTime() + (2 * this.frequency);
|
||||
}
|
||||
|
||||
public function becomeLoyal(subject:String):void {
|
||||
this.subjects.push(subject);
|
||||
}
|
||||
|
||||
public function receiveMessage(msg:Object):void {
|
||||
this.log("Received message!");
|
||||
}
|
||||
|
||||
public function log(msg:String):void {
|
||||
ExternalInterface.call('console.log', msg);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package com.phabricator {
|
||||
|
||||
public class AphlictReceiver {
|
||||
|
||||
private var core:Object;
|
||||
|
||||
public function AphlictReceiver(core:Object) {
|
||||
this.core = core;
|
||||
}
|
||||
|
||||
public function remainLoyal():void {
|
||||
this.core.remainLoyal();
|
||||
}
|
||||
|
||||
public function becomeLoyal(subject:String):void {
|
||||
this.core.becomeLoyal(subject);
|
||||
}
|
||||
|
||||
public function receiveMessage(msg:Object):void {
|
||||
this.core.receiveMessage(msg);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
42
support/aphlict/server/aphlict_server.js
Executable file
42
support/aphlict/server/aphlict_server.js
Executable file
|
@ -0,0 +1,42 @@
|
|||
var net = require('net');
|
||||
|
||||
function getFlashPolicy() {
|
||||
return [
|
||||
'<?xml version="1.0"?>',
|
||||
'<!DOCTYPE cross-domain-policy SYSTEM ' +
|
||||
'"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">',
|
||||
'<cross-domain-policy>',
|
||||
'<allow-access-from domain="*" to-ports="*"/>',
|
||||
'</cross-domain-policy>'
|
||||
].join("\n");
|
||||
}
|
||||
|
||||
net.createServer(function(socket) {
|
||||
socket.on('data', function() {
|
||||
socket.write(getFlashPolicy() + '\0');
|
||||
});
|
||||
}).listen(843);
|
||||
|
||||
var sp_server = net.createServer(function(socket) {
|
||||
function xwrite() {
|
||||
var data = {hi: "hello"};
|
||||
var serial = JSON.stringify(data);
|
||||
|
||||
var length = Buffer.byteLength(serial, 'utf8');
|
||||
length = length.toString();
|
||||
while (length.length < 8) {
|
||||
length = "0" + length;
|
||||
}
|
||||
|
||||
socket.write(length + serial);
|
||||
|
||||
console.log('write : ' + length + serial);
|
||||
}
|
||||
|
||||
socket.on('connect', function() {
|
||||
|
||||
xwrite();
|
||||
setInterval(xwrite, 1000);
|
||||
|
||||
});
|
||||
}).listen(2600);
|
BIN
webroot/rsrc/swf/aphlict.swf
Normal file
BIN
webroot/rsrc/swf/aphlict.swf
Normal file
Binary file not shown.
4
webroot/rsrc/swf/test.html
Executable file
4
webroot/rsrc/swf/test.html
Executable file
|
@ -0,0 +1,4 @@
|
|||
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400" id="movie_name" align="middle">
|
||||
<param name="movie" value="aphlict.swf" />
|
||||
<param name="allowScriptAccess" value="always" />
|
||||
</object>
|
Loading…
Reference in a new issue