Browse Source
* Add dolphinscheduler-extract-base * Add dolphinscheduler-extract-master * Add dolphinscheduler-extract-worker * Add dolphinscheduler-extract-alert3.2.1-prepare
Wenjun Ruan
1 year ago
committed by
GitHub
391 changed files with 5916 additions and 12312 deletions
@ -1,41 +0,0 @@ |
|||||||
/* |
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more |
|
||||||
* contributor license agreements. See the NOTICE file distributed with |
|
||||||
* this work for additional information regarding copyright ownership. |
|
||||||
* The ASF licenses this file to You under the Apache License, Version 2.0 |
|
||||||
* (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.apache.org/licenses/LICENSE-2.0
|
|
||||||
* |
|
||||||
* Unless required by applicable law or agreed to in writing, software |
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, |
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||||
* See the License for the specific language governing permissions and |
|
||||||
* limitations under the License. |
|
||||||
*/ |
|
||||||
|
|
||||||
package org.apache.dolphinscheduler.api.rpc; |
|
||||||
|
|
||||||
import org.apache.dolphinscheduler.remote.NettyRemotingClient; |
|
||||||
import org.apache.dolphinscheduler.remote.command.Message; |
|
||||||
import org.apache.dolphinscheduler.remote.config.NettyClientConfig; |
|
||||||
import org.apache.dolphinscheduler.remote.exceptions.RemotingException; |
|
||||||
import org.apache.dolphinscheduler.remote.utils.Host; |
|
||||||
|
|
||||||
import org.springframework.stereotype.Component; |
|
||||||
|
|
||||||
@Component |
|
||||||
public class ApiRpcClient { |
|
||||||
|
|
||||||
private final NettyRemotingClient nettyRemotingClient; |
|
||||||
|
|
||||||
public ApiRpcClient() { |
|
||||||
this.nettyRemotingClient = new NettyRemotingClient(new NettyClientConfig()); |
|
||||||
} |
|
||||||
|
|
||||||
public void send(Host host, Message message) throws RemotingException { |
|
||||||
nettyRemotingClient.send(host, message); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,202 +0,0 @@ |
|||||||
Apache License |
|
||||||
Version 2.0, January 2004 |
|
||||||
http://www.apache.org/licenses/ |
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION |
|
||||||
|
|
||||||
1. Definitions. |
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction, |
|
||||||
and distribution as defined by Sections 1 through 9 of this document. |
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by |
|
||||||
the copyright owner that is granting the License. |
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all |
|
||||||
other entities that control, are controlled by, or are under common |
|
||||||
control with that entity. For the purposes of this definition, |
|
||||||
"control" means (i) the power, direct or indirect, to cause the |
|
||||||
direction or management of such entity, whether by contract or |
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the |
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity. |
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity |
|
||||||
exercising permissions granted by this License. |
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications, |
|
||||||
including but not limited to software source code, documentation |
|
||||||
source, and configuration files. |
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical |
|
||||||
transformation or translation of a Source form, including but |
|
||||||
not limited to compiled object code, generated documentation, |
|
||||||
and conversions to other media types. |
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or |
|
||||||
Object form, made available under the License, as indicated by a |
|
||||||
copyright notice that is included in or attached to the work |
|
||||||
(an example is provided in the Appendix below). |
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object |
|
||||||
form, that is based on (or derived from) the Work and for which the |
|
||||||
editorial revisions, annotations, elaborations, or other modifications |
|
||||||
represent, as a whole, an original work of authorship. For the purposes |
|
||||||
of this License, Derivative Works shall not include works that remain |
|
||||||
separable from, or merely link (or bind by name) to the interfaces of, |
|
||||||
the Work and Derivative Works thereof. |
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including |
|
||||||
the original version of the Work and any modifications or additions |
|
||||||
to that Work or Derivative Works thereof, that is intentionally |
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner |
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of |
|
||||||
the copyright owner. For the purposes of this definition, "submitted" |
|
||||||
means any form of electronic, verbal, or written communication sent |
|
||||||
to the Licensor or its representatives, including but not limited to |
|
||||||
communication on electronic mailing lists, source code control systems, |
|
||||||
and issue tracking systems that are managed by, or on behalf of, the |
|
||||||
Licensor for the purpose of discussing and improving the Work, but |
|
||||||
excluding communication that is conspicuously marked or otherwise |
|
||||||
designated in writing by the copyright owner as "Not a Contribution." |
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity |
|
||||||
on behalf of whom a Contribution has been received by Licensor and |
|
||||||
subsequently incorporated within the Work. |
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of |
|
||||||
this License, each Contributor hereby grants to You a perpetual, |
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
|
||||||
copyright license to reproduce, prepare Derivative Works of, |
|
||||||
publicly display, publicly perform, sublicense, and distribute the |
|
||||||
Work and such Derivative Works in Source or Object form. |
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of |
|
||||||
this License, each Contributor hereby grants to You a perpetual, |
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
|
||||||
(except as stated in this section) patent license to make, have made, |
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work, |
|
||||||
where such license applies only to those patent claims licensable |
|
||||||
by such Contributor that are necessarily infringed by their |
|
||||||
Contribution(s) alone or by combination of their Contribution(s) |
|
||||||
with the Work to which such Contribution(s) was submitted. If You |
|
||||||
institute patent litigation against any entity (including a |
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work |
|
||||||
or a Contribution incorporated within the Work constitutes direct |
|
||||||
or contributory patent infringement, then any patent licenses |
|
||||||
granted to You under this License for that Work shall terminate |
|
||||||
as of the date such litigation is filed. |
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the |
|
||||||
Work or Derivative Works thereof in any medium, with or without |
|
||||||
modifications, and in Source or Object form, provided that You |
|
||||||
meet the following conditions: |
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or |
|
||||||
Derivative Works a copy of this License; and |
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices |
|
||||||
stating that You changed the files; and |
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works |
|
||||||
that You distribute, all copyright, patent, trademark, and |
|
||||||
attribution notices from the Source form of the Work, |
|
||||||
excluding those notices that do not pertain to any part of |
|
||||||
the Derivative Works; and |
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its |
|
||||||
distribution, then any Derivative Works that You distribute must |
|
||||||
include a readable copy of the attribution notices contained |
|
||||||
within such NOTICE file, excluding those notices that do not |
|
||||||
pertain to any part of the Derivative Works, in at least one |
|
||||||
of the following places: within a NOTICE text file distributed |
|
||||||
as part of the Derivative Works; within the Source form or |
|
||||||
documentation, if provided along with the Derivative Works; or, |
|
||||||
within a display generated by the Derivative Works, if and |
|
||||||
wherever such third-party notices normally appear. The contents |
|
||||||
of the NOTICE file are for informational purposes only and |
|
||||||
do not modify the License. You may add Your own attribution |
|
||||||
notices within Derivative Works that You distribute, alongside |
|
||||||
or as an addendum to the NOTICE text from the Work, provided |
|
||||||
that such additional attribution notices cannot be construed |
|
||||||
as modifying the License. |
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and |
|
||||||
may provide additional or different license terms and conditions |
|
||||||
for use, reproduction, or distribution of Your modifications, or |
|
||||||
for any such Derivative Works as a whole, provided Your use, |
|
||||||
reproduction, and distribution of the Work otherwise complies with |
|
||||||
the conditions stated in this License. |
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise, |
|
||||||
any Contribution intentionally submitted for inclusion in the Work |
|
||||||
by You to the Licensor shall be under the terms and conditions of |
|
||||||
this License, without any additional terms or conditions. |
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify |
|
||||||
the terms of any separate license agreement you may have executed |
|
||||||
with Licensor regarding such Contributions. |
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade |
|
||||||
names, trademarks, service marks, or product names of the Licensor, |
|
||||||
except as required for reasonable and customary use in describing the |
|
||||||
origin of the Work and reproducing the content of the NOTICE file. |
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or |
|
||||||
agreed to in writing, Licensor provides the Work (and each |
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS, |
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
||||||
implied, including, without limitation, any warranties or conditions |
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A |
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the |
|
||||||
appropriateness of using or redistributing the Work and assume any |
|
||||||
risks associated with Your exercise of permissions under this License. |
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory, |
|
||||||
whether in tort (including negligence), contract, or otherwise, |
|
||||||
unless required by applicable law (such as deliberate and grossly |
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be |
|
||||||
liable to You for damages, including any direct, indirect, special, |
|
||||||
incidental, or consequential damages of any character arising as a |
|
||||||
result of this License or out of the use or inability to use the |
|
||||||
Work (including but not limited to damages for loss of goodwill, |
|
||||||
work stoppage, computer failure or malfunction, or any and all |
|
||||||
other commercial damages or losses), even if such Contributor |
|
||||||
has been advised of the possibility of such damages. |
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing |
|
||||||
the Work or Derivative Works thereof, You may choose to offer, |
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity, |
|
||||||
or other liability obligations and/or rights consistent with this |
|
||||||
License. However, in accepting such obligations, You may act only |
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf |
|
||||||
of any other Contributor, and only if You agree to indemnify, |
|
||||||
defend, and hold each Contributor harmless for any liability |
|
||||||
incurred by, or claims asserted against, such Contributor by reason |
|
||||||
of your accepting any such warranty or additional liability. |
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS |
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work. |
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following |
|
||||||
boilerplate notice, with the fields enclosed by brackets "{}" |
|
||||||
replaced with your own identifying information. (Don't include |
|
||||||
the brackets!) The text should be enclosed in the appropriate |
|
||||||
comment syntax for the file format. We also recommend that a |
|
||||||
file or class name and description of purpose be included on the |
|
||||||
same "printed page" as the copyright notice for easier |
|
||||||
identification within third-party archives. |
|
||||||
|
|
||||||
Copyright {yyyy} {name of copyright owner} |
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 |
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software |
|
||||||
distributed under the License is distributed on an "AS IS" BASIS, |
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||||
See the License for the specific language governing permissions and |
|
||||||
limitations under the License. |
|
||||||
|
|
@ -1,469 +0,0 @@ |
|||||||
MOZILLA PUBLIC LICENSE |
|
||||||
Version 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 MPL 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 |
|
||||||
https://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.] |
|
@ -1,202 +0,0 @@ |
|||||||
|
|
||||||
Apache License |
|
||||||
Version 2.0, January 2004 |
|
||||||
http://www.apache.org/licenses/ |
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION |
|
||||||
|
|
||||||
1. Definitions. |
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction, |
|
||||||
and distribution as defined by Sections 1 through 9 of this document. |
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by |
|
||||||
the copyright owner that is granting the License. |
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all |
|
||||||
other entities that control, are controlled by, or are under common |
|
||||||
control with that entity. For the purposes of this definition, |
|
||||||
"control" means (i) the power, direct or indirect, to cause the |
|
||||||
direction or management of such entity, whether by contract or |
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the |
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity. |
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity |
|
||||||
exercising permissions granted by this License. |
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications, |
|
||||||
including but not limited to software source code, documentation |
|
||||||
source, and configuration files. |
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical |
|
||||||
transformation or translation of a Source form, including but |
|
||||||
not limited to compiled object code, generated documentation, |
|
||||||
and conversions to other media types. |
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or |
|
||||||
Object form, made available under the License, as indicated by a |
|
||||||
copyright notice that is included in or attached to the work |
|
||||||
(an example is provided in the Appendix below). |
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object |
|
||||||
form, that is based on (or derived from) the Work and for which the |
|
||||||
editorial revisions, annotations, elaborations, or other modifications |
|
||||||
represent, as a whole, an original work of authorship. For the purposes |
|
||||||
of this License, Derivative Works shall not include works that remain |
|
||||||
separable from, or merely link (or bind by name) to the interfaces of, |
|
||||||
the Work and Derivative Works thereof. |
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including |
|
||||||
the original version of the Work and any modifications or additions |
|
||||||
to that Work or Derivative Works thereof, that is intentionally |
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner |
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of |
|
||||||
the copyright owner. For the purposes of this definition, "submitted" |
|
||||||
means any form of electronic, verbal, or written communication sent |
|
||||||
to the Licensor or its representatives, including but not limited to |
|
||||||
communication on electronic mailing lists, source code control systems, |
|
||||||
and issue tracking systems that are managed by, or on behalf of, the |
|
||||||
Licensor for the purpose of discussing and improving the Work, but |
|
||||||
excluding communication that is conspicuously marked or otherwise |
|
||||||
designated in writing by the copyright owner as "Not a Contribution." |
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity |
|
||||||
on behalf of whom a Contribution has been received by Licensor and |
|
||||||
subsequently incorporated within the Work. |
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of |
|
||||||
this License, each Contributor hereby grants to You a perpetual, |
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
|
||||||
copyright license to reproduce, prepare Derivative Works of, |
|
||||||
publicly display, publicly perform, sublicense, and distribute the |
|
||||||
Work and such Derivative Works in Source or Object form. |
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of |
|
||||||
this License, each Contributor hereby grants to You a perpetual, |
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
|
||||||
(except as stated in this section) patent license to make, have made, |
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work, |
|
||||||
where such license applies only to those patent claims licensable |
|
||||||
by such Contributor that are necessarily infringed by their |
|
||||||
Contribution(s) alone or by combination of their Contribution(s) |
|
||||||
with the Work to which such Contribution(s) was submitted. If You |
|
||||||
institute patent litigation against any entity (including a |
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work |
|
||||||
or a Contribution incorporated within the Work constitutes direct |
|
||||||
or contributory patent infringement, then any patent licenses |
|
||||||
granted to You under this License for that Work shall terminate |
|
||||||
as of the date such litigation is filed. |
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the |
|
||||||
Work or Derivative Works thereof in any medium, with or without |
|
||||||
modifications, and in Source or Object form, provided that You |
|
||||||
meet the following conditions: |
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or |
|
||||||
Derivative Works a copy of this License; and |
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices |
|
||||||
stating that You changed the files; and |
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works |
|
||||||
that You distribute, all copyright, patent, trademark, and |
|
||||||
attribution notices from the Source form of the Work, |
|
||||||
excluding those notices that do not pertain to any part of |
|
||||||
the Derivative Works; and |
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its |
|
||||||
distribution, then any Derivative Works that You distribute must |
|
||||||
include a readable copy of the attribution notices contained |
|
||||||
within such NOTICE file, excluding those notices that do not |
|
||||||
pertain to any part of the Derivative Works, in at least one |
|
||||||
of the following places: within a NOTICE text file distributed |
|
||||||
as part of the Derivative Works; within the Source form or |
|
||||||
documentation, if provided along with the Derivative Works; or, |
|
||||||
within a display generated by the Derivative Works, if and |
|
||||||
wherever such third-party notices normally appear. The contents |
|
||||||
of the NOTICE file are for informational purposes only and |
|
||||||
do not modify the License. You may add Your own attribution |
|
||||||
notices within Derivative Works that You distribute, alongside |
|
||||||
or as an addendum to the NOTICE text from the Work, provided |
|
||||||
that such additional attribution notices cannot be construed |
|
||||||
as modifying the License. |
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and |
|
||||||
may provide additional or different license terms and conditions |
|
||||||
for use, reproduction, or distribution of Your modifications, or |
|
||||||
for any such Derivative Works as a whole, provided Your use, |
|
||||||
reproduction, and distribution of the Work otherwise complies with |
|
||||||
the conditions stated in this License. |
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise, |
|
||||||
any Contribution intentionally submitted for inclusion in the Work |
|
||||||
by You to the Licensor shall be under the terms and conditions of |
|
||||||
this License, without any additional terms or conditions. |
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify |
|
||||||
the terms of any separate license agreement you may have executed |
|
||||||
with Licensor regarding such Contributions. |
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade |
|
||||||
names, trademarks, service marks, or product names of the Licensor, |
|
||||||
except as required for reasonable and customary use in describing the |
|
||||||
origin of the Work and reproducing the content of the NOTICE file. |
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or |
|
||||||
agreed to in writing, Licensor provides the Work (and each |
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS, |
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
||||||
implied, including, without limitation, any warranties or conditions |
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A |
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the |
|
||||||
appropriateness of using or redistributing the Work and assume any |
|
||||||
risks associated with Your exercise of permissions under this License. |
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory, |
|
||||||
whether in tort (including negligence), contract, or otherwise, |
|
||||||
unless required by applicable law (such as deliberate and grossly |
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be |
|
||||||
liable to You for damages, including any direct, indirect, special, |
|
||||||
incidental, or consequential damages of any character arising as a |
|
||||||
result of this License or out of the use or inability to use the |
|
||||||
Work (including but not limited to damages for loss of goodwill, |
|
||||||
work stoppage, computer failure or malfunction, or any and all |
|
||||||
other commercial damages or losses), even if such Contributor |
|
||||||
has been advised of the possibility of such damages. |
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing |
|
||||||
the Work or Derivative Works thereof, You may choose to offer, |
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity, |
|
||||||
or other liability obligations and/or rights consistent with this |
|
||||||
License. However, in accepting such obligations, You may act only |
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf |
|
||||||
of any other Contributor, and only if You agree to indemnify, |
|
||||||
defend, and hold each Contributor harmless for any liability |
|
||||||
incurred by, or claims asserted against, such Contributor by reason |
|
||||||
of your accepting any such warranty or additional liability. |
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS |
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work. |
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following |
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]" |
|
||||||
replaced with your own identifying information. (Don't include |
|
||||||
the brackets!) The text should be enclosed in the appropriate |
|
||||||
comment syntax for the file format. We also recommend that a |
|
||||||
file or class name and description of purpose be included on the |
|
||||||
same "printed page" as the copyright notice for easier |
|
||||||
identification within third-party archives. |
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner] |
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 |
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software |
|
||||||
distributed under the License is distributed on an "AS IS" BASIS, |
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||||
See the License for the specific language governing permissions and |
|
||||||
limitations under the License. |
|
@ -1,202 +0,0 @@ |
|||||||
|
|
||||||
Apache License |
|
||||||
Version 2.0, January 2004 |
|
||||||
http://www.apache.org/licenses/ |
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION |
|
||||||
|
|
||||||
1. Definitions. |
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction, |
|
||||||
and distribution as defined by Sections 1 through 9 of this document. |
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by |
|
||||||
the copyright owner that is granting the License. |
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all |
|
||||||
other entities that control, are controlled by, or are under common |
|
||||||
control with that entity. For the purposes of this definition, |
|
||||||
"control" means (i) the power, direct or indirect, to cause the |
|
||||||
direction or management of such entity, whether by contract or |
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the |
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity. |
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity |
|
||||||
exercising permissions granted by this License. |
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications, |
|
||||||
including but not limited to software source code, documentation |
|
||||||
source, and configuration files. |
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical |
|
||||||
transformation or translation of a Source form, including but |
|
||||||
not limited to compiled object code, generated documentation, |
|
||||||
and conversions to other media types. |
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or |
|
||||||
Object form, made available under the License, as indicated by a |
|
||||||
copyright notice that is included in or attached to the work |
|
||||||
(an example is provided in the Appendix below). |
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object |
|
||||||
form, that is based on (or derived from) the Work and for which the |
|
||||||
editorial revisions, annotations, elaborations, or other modifications |
|
||||||
represent, as a whole, an original work of authorship. For the purposes |
|
||||||
of this License, Derivative Works shall not include works that remain |
|
||||||
separable from, or merely link (or bind by name) to the interfaces of, |
|
||||||
the Work and Derivative Works thereof. |
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including |
|
||||||
the original version of the Work and any modifications or additions |
|
||||||
to that Work or Derivative Works thereof, that is intentionally |
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner |
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of |
|
||||||
the copyright owner. For the purposes of this definition, "submitted" |
|
||||||
means any form of electronic, verbal, or written communication sent |
|
||||||
to the Licensor or its representatives, including but not limited to |
|
||||||
communication on electronic mailing lists, source code control systems, |
|
||||||
and issue tracking systems that are managed by, or on behalf of, the |
|
||||||
Licensor for the purpose of discussing and improving the Work, but |
|
||||||
excluding communication that is conspicuously marked or otherwise |
|
||||||
designated in writing by the copyright owner as "Not a Contribution." |
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity |
|
||||||
on behalf of whom a Contribution has been received by Licensor and |
|
||||||
subsequently incorporated within the Work. |
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of |
|
||||||
this License, each Contributor hereby grants to You a perpetual, |
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
|
||||||
copyright license to reproduce, prepare Derivative Works of, |
|
||||||
publicly display, publicly perform, sublicense, and distribute the |
|
||||||
Work and such Derivative Works in Source or Object form. |
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of |
|
||||||
this License, each Contributor hereby grants to You a perpetual, |
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
|
||||||
(except as stated in this section) patent license to make, have made, |
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work, |
|
||||||
where such license applies only to those patent claims licensable |
|
||||||
by such Contributor that are necessarily infringed by their |
|
||||||
Contribution(s) alone or by combination of their Contribution(s) |
|
||||||
with the Work to which such Contribution(s) was submitted. If You |
|
||||||
institute patent litigation against any entity (including a |
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work |
|
||||||
or a Contribution incorporated within the Work constitutes direct |
|
||||||
or contributory patent infringement, then any patent licenses |
|
||||||
granted to You under this License for that Work shall terminate |
|
||||||
as of the date such litigation is filed. |
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the |
|
||||||
Work or Derivative Works thereof in any medium, with or without |
|
||||||
modifications, and in Source or Object form, provided that You |
|
||||||
meet the following conditions: |
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or |
|
||||||
Derivative Works a copy of this License; and |
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices |
|
||||||
stating that You changed the files; and |
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works |
|
||||||
that You distribute, all copyright, patent, trademark, and |
|
||||||
attribution notices from the Source form of the Work, |
|
||||||
excluding those notices that do not pertain to any part of |
|
||||||
the Derivative Works; and |
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its |
|
||||||
distribution, then any Derivative Works that You distribute must |
|
||||||
include a readable copy of the attribution notices contained |
|
||||||
within such NOTICE file, excluding those notices that do not |
|
||||||
pertain to any part of the Derivative Works, in at least one |
|
||||||
of the following places: within a NOTICE text file distributed |
|
||||||
as part of the Derivative Works; within the Source form or |
|
||||||
documentation, if provided along with the Derivative Works; or, |
|
||||||
within a display generated by the Derivative Works, if and |
|
||||||
wherever such third-party notices normally appear. The contents |
|
||||||
of the NOTICE file are for informational purposes only and |
|
||||||
do not modify the License. You may add Your own attribution |
|
||||||
notices within Derivative Works that You distribute, alongside |
|
||||||
or as an addendum to the NOTICE text from the Work, provided |
|
||||||
that such additional attribution notices cannot be construed |
|
||||||
as modifying the License. |
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and |
|
||||||
may provide additional or different license terms and conditions |
|
||||||
for use, reproduction, or distribution of Your modifications, or |
|
||||||
for any such Derivative Works as a whole, provided Your use, |
|
||||||
reproduction, and distribution of the Work otherwise complies with |
|
||||||
the conditions stated in this License. |
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise, |
|
||||||
any Contribution intentionally submitted for inclusion in the Work |
|
||||||
by You to the Licensor shall be under the terms and conditions of |
|
||||||
this License, without any additional terms or conditions. |
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify |
|
||||||
the terms of any separate license agreement you may have executed |
|
||||||
with Licensor regarding such Contributions. |
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade |
|
||||||
names, trademarks, service marks, or product names of the Licensor, |
|
||||||
except as required for reasonable and customary use in describing the |
|
||||||
origin of the Work and reproducing the content of the NOTICE file. |
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or |
|
||||||
agreed to in writing, Licensor provides the Work (and each |
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS, |
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
||||||
implied, including, without limitation, any warranties or conditions |
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A |
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the |
|
||||||
appropriateness of using or redistributing the Work and assume any |
|
||||||
risks associated with Your exercise of permissions under this License. |
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory, |
|
||||||
whether in tort (including negligence), contract, or otherwise, |
|
||||||
unless required by applicable law (such as deliberate and grossly |
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be |
|
||||||
liable to You for damages, including any direct, indirect, special, |
|
||||||
incidental, or consequential damages of any character arising as a |
|
||||||
result of this License or out of the use or inability to use the |
|
||||||
Work (including but not limited to damages for loss of goodwill, |
|
||||||
work stoppage, computer failure or malfunction, or any and all |
|
||||||
other commercial damages or losses), even if such Contributor |
|
||||||
has been advised of the possibility of such damages. |
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing |
|
||||||
the Work or Derivative Works thereof, You may choose to offer, |
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity, |
|
||||||
or other liability obligations and/or rights consistent with this |
|
||||||
License. However, in accepting such obligations, You may act only |
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf |
|
||||||
of any other Contributor, and only if You agree to indemnify, |
|
||||||
defend, and hold each Contributor harmless for any liability |
|
||||||
incurred by, or claims asserted against, such Contributor by reason |
|
||||||
of your accepting any such warranty or additional liability. |
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS |
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work. |
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following |
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]" |
|
||||||
replaced with your own identifying information. (Don't include |
|
||||||
the brackets!) The text should be enclosed in the appropriate |
|
||||||
comment syntax for the file format. We also recommend that a |
|
||||||
file or class name and description of purpose be included on the |
|
||||||
same "printed page" as the copyright notice for easier |
|
||||||
identification within third-party archives. |
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner] |
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 |
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software |
|
||||||
distributed under the License is distributed on an "AS IS" BASIS, |
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||||
See the License for the specific language governing permissions and |
|
||||||
limitations under the License. |
|
@ -1,202 +0,0 @@ |
|||||||
|
|
||||||
Apache License |
|
||||||
Version 2.0, January 2004 |
|
||||||
http://www.apache.org/licenses/ |
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION |
|
||||||
|
|
||||||
1. Definitions. |
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction, |
|
||||||
and distribution as defined by Sections 1 through 9 of this document. |
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by |
|
||||||
the copyright owner that is granting the License. |
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all |
|
||||||
other entities that control, are controlled by, or are under common |
|
||||||
control with that entity. For the purposes of this definition, |
|
||||||
"control" means (i) the power, direct or indirect, to cause the |
|
||||||
direction or management of such entity, whether by contract or |
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the |
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity. |
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity |
|
||||||
exercising permissions granted by this License. |
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications, |
|
||||||
including but not limited to software source code, documentation |
|
||||||
source, and configuration files. |
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical |
|
||||||
transformation or translation of a Source form, including but |
|
||||||
not limited to compiled object code, generated documentation, |
|
||||||
and conversions to other media types. |
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or |
|
||||||
Object form, made available under the License, as indicated by a |
|
||||||
copyright notice that is included in or attached to the work |
|
||||||
(an example is provided in the Appendix below). |
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object |
|
||||||
form, that is based on (or derived from) the Work and for which the |
|
||||||
editorial revisions, annotations, elaborations, or other modifications |
|
||||||
represent, as a whole, an original work of authorship. For the purposes |
|
||||||
of this License, Derivative Works shall not include works that remain |
|
||||||
separable from, or merely link (or bind by name) to the interfaces of, |
|
||||||
the Work and Derivative Works thereof. |
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including |
|
||||||
the original version of the Work and any modifications or additions |
|
||||||
to that Work or Derivative Works thereof, that is intentionally |
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner |
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of |
|
||||||
the copyright owner. For the purposes of this definition, "submitted" |
|
||||||
means any form of electronic, verbal, or written communication sent |
|
||||||
to the Licensor or its representatives, including but not limited to |
|
||||||
communication on electronic mailing lists, source code control systems, |
|
||||||
and issue tracking systems that are managed by, or on behalf of, the |
|
||||||
Licensor for the purpose of discussing and improving the Work, but |
|
||||||
excluding communication that is conspicuously marked or otherwise |
|
||||||
designated in writing by the copyright owner as "Not a Contribution." |
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity |
|
||||||
on behalf of whom a Contribution has been received by Licensor and |
|
||||||
subsequently incorporated within the Work. |
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of |
|
||||||
this License, each Contributor hereby grants to You a perpetual, |
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
|
||||||
copyright license to reproduce, prepare Derivative Works of, |
|
||||||
publicly display, publicly perform, sublicense, and distribute the |
|
||||||
Work and such Derivative Works in Source or Object form. |
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of |
|
||||||
this License, each Contributor hereby grants to You a perpetual, |
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
|
||||||
(except as stated in this section) patent license to make, have made, |
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work, |
|
||||||
where such license applies only to those patent claims licensable |
|
||||||
by such Contributor that are necessarily infringed by their |
|
||||||
Contribution(s) alone or by combination of their Contribution(s) |
|
||||||
with the Work to which such Contribution(s) was submitted. If You |
|
||||||
institute patent litigation against any entity (including a |
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work |
|
||||||
or a Contribution incorporated within the Work constitutes direct |
|
||||||
or contributory patent infringement, then any patent licenses |
|
||||||
granted to You under this License for that Work shall terminate |
|
||||||
as of the date such litigation is filed. |
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the |
|
||||||
Work or Derivative Works thereof in any medium, with or without |
|
||||||
modifications, and in Source or Object form, provided that You |
|
||||||
meet the following conditions: |
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or |
|
||||||
Derivative Works a copy of this License; and |
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices |
|
||||||
stating that You changed the files; and |
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works |
|
||||||
that You distribute, all copyright, patent, trademark, and |
|
||||||
attribution notices from the Source form of the Work, |
|
||||||
excluding those notices that do not pertain to any part of |
|
||||||
the Derivative Works; and |
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its |
|
||||||
distribution, then any Derivative Works that You distribute must |
|
||||||
include a readable copy of the attribution notices contained |
|
||||||
within such NOTICE file, excluding those notices that do not |
|
||||||
pertain to any part of the Derivative Works, in at least one |
|
||||||
of the following places: within a NOTICE text file distributed |
|
||||||
as part of the Derivative Works; within the Source form or |
|
||||||
documentation, if provided along with the Derivative Works; or, |
|
||||||
within a display generated by the Derivative Works, if and |
|
||||||
wherever such third-party notices normally appear. The contents |
|
||||||
of the NOTICE file are for informational purposes only and |
|
||||||
do not modify the License. You may add Your own attribution |
|
||||||
notices within Derivative Works that You distribute, alongside |
|
||||||
or as an addendum to the NOTICE text from the Work, provided |
|
||||||
that such additional attribution notices cannot be construed |
|
||||||
as modifying the License. |
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and |
|
||||||
may provide additional or different license terms and conditions |
|
||||||
for use, reproduction, or distribution of Your modifications, or |
|
||||||
for any such Derivative Works as a whole, provided Your use, |
|
||||||
reproduction, and distribution of the Work otherwise complies with |
|
||||||
the conditions stated in this License. |
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise, |
|
||||||
any Contribution intentionally submitted for inclusion in the Work |
|
||||||
by You to the Licensor shall be under the terms and conditions of |
|
||||||
this License, without any additional terms or conditions. |
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify |
|
||||||
the terms of any separate license agreement you may have executed |
|
||||||
with Licensor regarding such Contributions. |
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade |
|
||||||
names, trademarks, service marks, or product names of the Licensor, |
|
||||||
except as required for reasonable and customary use in describing the |
|
||||||
origin of the Work and reproducing the content of the NOTICE file. |
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or |
|
||||||
agreed to in writing, Licensor provides the Work (and each |
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS, |
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
||||||
implied, including, without limitation, any warranties or conditions |
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A |
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the |
|
||||||
appropriateness of using or redistributing the Work and assume any |
|
||||||
risks associated with Your exercise of permissions under this License. |
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory, |
|
||||||
whether in tort (including negligence), contract, or otherwise, |
|
||||||
unless required by applicable law (such as deliberate and grossly |
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be |
|
||||||
liable to You for damages, including any direct, indirect, special, |
|
||||||
incidental, or consequential damages of any character arising as a |
|
||||||
result of this License or out of the use or inability to use the |
|
||||||
Work (including but not limited to damages for loss of goodwill, |
|
||||||
work stoppage, computer failure or malfunction, or any and all |
|
||||||
other commercial damages or losses), even if such Contributor |
|
||||||
has been advised of the possibility of such damages. |
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing |
|
||||||
the Work or Derivative Works thereof, You may choose to offer, |
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity, |
|
||||||
or other liability obligations and/or rights consistent with this |
|
||||||
License. However, in accepting such obligations, You may act only |
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf |
|
||||||
of any other Contributor, and only if You agree to indemnify, |
|
||||||
defend, and hold each Contributor harmless for any liability |
|
||||||
incurred by, or claims asserted against, such Contributor by reason |
|
||||||
of your accepting any such warranty or additional liability. |
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS |
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work. |
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following |
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]" |
|
||||||
replaced with your own identifying information. (Don't include |
|
||||||
the brackets!) The text should be enclosed in the appropriate |
|
||||||
comment syntax for the file format. We also recommend that a |
|
||||||
file or class name and description of purpose be included on the |
|
||||||
same "printed page" as the copyright notice for easier |
|
||||||
identification within third-party archives. |
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner] |
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 |
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software |
|
||||||
distributed under the License is distributed on an "AS IS" BASIS, |
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||||
See the License for the specific language governing permissions and |
|
||||||
limitations under the License. |
|
@ -1,202 +0,0 @@ |
|||||||
|
|
||||||
Apache License |
|
||||||
Version 2.0, January 2004 |
|
||||||
http://www.apache.org/licenses/ |
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION |
|
||||||
|
|
||||||
1. Definitions. |
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction, |
|
||||||
and distribution as defined by Sections 1 through 9 of this document. |
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by |
|
||||||
the copyright owner that is granting the License. |
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all |
|
||||||
other entities that control, are controlled by, or are under common |
|
||||||
control with that entity. For the purposes of this definition, |
|
||||||
"control" means (i) the power, direct or indirect, to cause the |
|
||||||
direction or management of such entity, whether by contract or |
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the |
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity. |
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity |
|
||||||
exercising permissions granted by this License. |
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications, |
|
||||||
including but not limited to software source code, documentation |
|
||||||
source, and configuration files. |
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical |
|
||||||
transformation or translation of a Source form, including but |
|
||||||
not limited to compiled object code, generated documentation, |
|
||||||
and conversions to other media types. |
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or |
|
||||||
Object form, made available under the License, as indicated by a |
|
||||||
copyright notice that is included in or attached to the work |
|
||||||
(an example is provided in the Appendix below). |
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object |
|
||||||
form, that is based on (or derived from) the Work and for which the |
|
||||||
editorial revisions, annotations, elaborations, or other modifications |
|
||||||
represent, as a whole, an original work of authorship. For the purposes |
|
||||||
of this License, Derivative Works shall not include works that remain |
|
||||||
separable from, or merely link (or bind by name) to the interfaces of, |
|
||||||
the Work and Derivative Works thereof. |
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including |
|
||||||
the original version of the Work and any modifications or additions |
|
||||||
to that Work or Derivative Works thereof, that is intentionally |
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner |
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of |
|
||||||
the copyright owner. For the purposes of this definition, "submitted" |
|
||||||
means any form of electronic, verbal, or written communication sent |
|
||||||
to the Licensor or its representatives, including but not limited to |
|
||||||
communication on electronic mailing lists, source code control systems, |
|
||||||
and issue tracking systems that are managed by, or on behalf of, the |
|
||||||
Licensor for the purpose of discussing and improving the Work, but |
|
||||||
excluding communication that is conspicuously marked or otherwise |
|
||||||
designated in writing by the copyright owner as "Not a Contribution." |
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity |
|
||||||
on behalf of whom a Contribution has been received by Licensor and |
|
||||||
subsequently incorporated within the Work. |
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of |
|
||||||
this License, each Contributor hereby grants to You a perpetual, |
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
|
||||||
copyright license to reproduce, prepare Derivative Works of, |
|
||||||
publicly display, publicly perform, sublicense, and distribute the |
|
||||||
Work and such Derivative Works in Source or Object form. |
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of |
|
||||||
this License, each Contributor hereby grants to You a perpetual, |
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
|
||||||
(except as stated in this section) patent license to make, have made, |
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work, |
|
||||||
where such license applies only to those patent claims licensable |
|
||||||
by such Contributor that are necessarily infringed by their |
|
||||||
Contribution(s) alone or by combination of their Contribution(s) |
|
||||||
with the Work to which such Contribution(s) was submitted. If You |
|
||||||
institute patent litigation against any entity (including a |
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work |
|
||||||
or a Contribution incorporated within the Work constitutes direct |
|
||||||
or contributory patent infringement, then any patent licenses |
|
||||||
granted to You under this License for that Work shall terminate |
|
||||||
as of the date such litigation is filed. |
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the |
|
||||||
Work or Derivative Works thereof in any medium, with or without |
|
||||||
modifications, and in Source or Object form, provided that You |
|
||||||
meet the following conditions: |
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or |
|
||||||
Derivative Works a copy of this License; and |
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices |
|
||||||
stating that You changed the files; and |
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works |
|
||||||
that You distribute, all copyright, patent, trademark, and |
|
||||||
attribution notices from the Source form of the Work, |
|
||||||
excluding those notices that do not pertain to any part of |
|
||||||
the Derivative Works; and |
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its |
|
||||||
distribution, then any Derivative Works that You distribute must |
|
||||||
include a readable copy of the attribution notices contained |
|
||||||
within such NOTICE file, excluding those notices that do not |
|
||||||
pertain to any part of the Derivative Works, in at least one |
|
||||||
of the following places: within a NOTICE text file distributed |
|
||||||
as part of the Derivative Works; within the Source form or |
|
||||||
documentation, if provided along with the Derivative Works; or, |
|
||||||
within a display generated by the Derivative Works, if and |
|
||||||
wherever such third-party notices normally appear. The contents |
|
||||||
of the NOTICE file are for informational purposes only and |
|
||||||
do not modify the License. You may add Your own attribution |
|
||||||
notices within Derivative Works that You distribute, alongside |
|
||||||
or as an addendum to the NOTICE text from the Work, provided |
|
||||||
that such additional attribution notices cannot be construed |
|
||||||
as modifying the License. |
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and |
|
||||||
may provide additional or different license terms and conditions |
|
||||||
for use, reproduction, or distribution of Your modifications, or |
|
||||||
for any such Derivative Works as a whole, provided Your use, |
|
||||||
reproduction, and distribution of the Work otherwise complies with |
|
||||||
the conditions stated in this License. |
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise, |
|
||||||
any Contribution intentionally submitted for inclusion in the Work |
|
||||||
by You to the Licensor shall be under the terms and conditions of |
|
||||||
this License, without any additional terms or conditions. |
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify |
|
||||||
the terms of any separate license agreement you may have executed |
|
||||||
with Licensor regarding such Contributions. |
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade |
|
||||||
names, trademarks, service marks, or product names of the Licensor, |
|
||||||
except as required for reasonable and customary use in describing the |
|
||||||
origin of the Work and reproducing the content of the NOTICE file. |
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or |
|
||||||
agreed to in writing, Licensor provides the Work (and each |
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS, |
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
||||||
implied, including, without limitation, any warranties or conditions |
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A |
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the |
|
||||||
appropriateness of using or redistributing the Work and assume any |
|
||||||
risks associated with Your exercise of permissions under this License. |
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory, |
|
||||||
whether in tort (including negligence), contract, or otherwise, |
|
||||||
unless required by applicable law (such as deliberate and grossly |
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be |
|
||||||
liable to You for damages, including any direct, indirect, special, |
|
||||||
incidental, or consequential damages of any character arising as a |
|
||||||
result of this License or out of the use or inability to use the |
|
||||||
Work (including but not limited to damages for loss of goodwill, |
|
||||||
work stoppage, computer failure or malfunction, or any and all |
|
||||||
other commercial damages or losses), even if such Contributor |
|
||||||
has been advised of the possibility of such damages. |
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing |
|
||||||
the Work or Derivative Works thereof, You may choose to offer, |
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity, |
|
||||||
or other liability obligations and/or rights consistent with this |
|
||||||
License. However, in accepting such obligations, You may act only |
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf |
|
||||||
of any other Contributor, and only if You agree to indemnify, |
|
||||||
defend, and hold each Contributor harmless for any liability |
|
||||||
incurred by, or claims asserted against, such Contributor by reason |
|
||||||
of your accepting any such warranty or additional liability. |
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS |
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work. |
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following |
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]" |
|
||||||
replaced with your own identifying information. (Don't include |
|
||||||
the brackets!) The text should be enclosed in the appropriate |
|
||||||
comment syntax for the file format. We also recommend that a |
|
||||||
file or class name and description of purpose be included on the |
|
||||||
same "printed page" as the copyright notice for easier |
|
||||||
identification within third-party archives. |
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner] |
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 |
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software |
|
||||||
distributed under the License is distributed on an "AS IS" BASIS, |
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||||
See the License for the specific language governing permissions and |
|
||||||
limitations under the License. |
|
@ -1,13 +0,0 @@ |
|||||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE |
|
||||||
Version 2, December 2004 |
|
||||||
|
|
||||||
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> |
|
||||||
|
|
||||||
Everyone is permitted to copy and distribute verbatim or modified |
|
||||||
copies of this license document, and changing it is allowed as long |
|
||||||
as the name is changed. |
|
||||||
|
|
||||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE |
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
|
||||||
|
|
||||||
0. You just DO WHAT THE FUCK YOU WANT TO. |
|
@ -0,0 +1,39 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!-- |
||||||
|
~ Licensed to the Apache Software Foundation (ASF) under one |
||||||
|
~ or more contributor license agreements. See the NOTICE file |
||||||
|
~ distributed with this work for additional information |
||||||
|
~ regarding copyright ownership. The ASF licenses this file |
||||||
|
~ to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 |
||||||
|
~ |
||||||
|
~ Unless required by applicable law or agreed to in writing, |
||||||
|
~ software distributed under the License is distributed on an |
||||||
|
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
||||||
|
~ KIND, either express or implied. See the License for the |
||||||
|
~ specific language governing permissions and limitations |
||||||
|
~ under the License. |
||||||
|
~ |
||||||
|
--> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-extract</artifactId> |
||||||
|
<version>dev-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>dolphinscheduler-extract-alert</artifactId> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-extract-base</artifactId> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
|
||||||
|
</project> |
@ -0,0 +1,31 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.alert; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.alert.request.AlertSendRequest; |
||||||
|
import org.apache.dolphinscheduler.extract.alert.request.AlertSendResponse; |
||||||
|
import org.apache.dolphinscheduler.extract.base.RpcMethod; |
||||||
|
import org.apache.dolphinscheduler.extract.base.RpcService; |
||||||
|
|
||||||
|
@RpcService |
||||||
|
public interface IAlertOperator { |
||||||
|
|
||||||
|
@RpcMethod |
||||||
|
AlertSendResponse sendAlert(AlertSendRequest alertSendRequest); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,69 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!-- |
||||||
|
~ Licensed to the Apache Software Foundation (ASF) under one |
||||||
|
~ or more contributor license agreements. See the NOTICE file |
||||||
|
~ distributed with this work for additional information |
||||||
|
~ regarding copyright ownership. The ASF licenses this file |
||||||
|
~ to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 |
||||||
|
~ |
||||||
|
~ Unless required by applicable law or agreed to in writing, |
||||||
|
~ software distributed under the License is distributed on an |
||||||
|
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
||||||
|
~ KIND, either express or implied. See the License for the |
||||||
|
~ specific language governing permissions and limitations |
||||||
|
~ under the License. |
||||||
|
~ |
||||||
|
--> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-extract</artifactId> |
||||||
|
<version>dev-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>dolphinscheduler-extract-base</artifactId> |
||||||
|
|
||||||
|
<dependencyManagement> |
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-bom</artifactId> |
||||||
|
<version>${project.version}</version> |
||||||
|
<type>pom</type> |
||||||
|
<scope>import</scope> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
</dependencyManagement> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-common</artifactId> |
||||||
|
<version>${project.version}</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>io.netty</groupId> |
||||||
|
<artifactId>netty-all</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.slf4j</groupId> |
||||||
|
<artifactId>slf4j-api</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.google.guava</groupId> |
||||||
|
<artifactId>guava</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework</groupId> |
||||||
|
<artifactId>spring-context</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
</dependencies> |
||||||
|
|
||||||
|
</project> |
@ -0,0 +1,97 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.base; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.base.future.ResponseFuture; |
||||||
|
import org.apache.dolphinscheduler.extract.base.protocal.HeartBeatTransporter; |
||||||
|
import org.apache.dolphinscheduler.extract.base.protocal.Transporter; |
||||||
|
import org.apache.dolphinscheduler.extract.base.serialize.JsonSerializer; |
||||||
|
import org.apache.dolphinscheduler.extract.base.utils.ChannelUtils; |
||||||
|
|
||||||
|
import java.util.concurrent.ExecutorService; |
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import io.netty.channel.ChannelFutureListener; |
||||||
|
import io.netty.channel.ChannelHandler; |
||||||
|
import io.netty.channel.ChannelHandlerContext; |
||||||
|
import io.netty.channel.ChannelInboundHandlerAdapter; |
||||||
|
import io.netty.handler.timeout.IdleStateEvent; |
||||||
|
|
||||||
|
@ChannelHandler.Sharable |
||||||
|
@Slf4j |
||||||
|
public class NettyClientHandler extends ChannelInboundHandlerAdapter { |
||||||
|
|
||||||
|
private final NettyRemotingClient nettyRemotingClient; |
||||||
|
|
||||||
|
private final ExecutorService callbackExecutor; |
||||||
|
|
||||||
|
public NettyClientHandler(NettyRemotingClient nettyRemotingClient, ExecutorService callbackExecutor) { |
||||||
|
this.nettyRemotingClient = nettyRemotingClient; |
||||||
|
this.callbackExecutor = callbackExecutor; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void channelInactive(ChannelHandlerContext ctx) { |
||||||
|
nettyRemotingClient.closeChannel(ChannelUtils.toAddress(ctx.channel())); |
||||||
|
ctx.channel().close(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void channelRead(ChannelHandlerContext ctx, Object msg) { |
||||||
|
processReceived((Transporter) msg); |
||||||
|
} |
||||||
|
|
||||||
|
private void processReceived(final Transporter transporter) { |
||||||
|
ResponseFuture future = ResponseFuture.getFuture(transporter.getHeader().getOpaque()); |
||||||
|
if (future == null) { |
||||||
|
log.warn("Cannot find the ResponseFuture if transporter: {}", transporter); |
||||||
|
return; |
||||||
|
} |
||||||
|
StandardRpcResponse deserialize = JsonSerializer.deserialize(transporter.getBody(), StandardRpcResponse.class); |
||||||
|
future.setIRpcResponse(deserialize); |
||||||
|
future.release(); |
||||||
|
if (future.getInvokeCallback() != null) { |
||||||
|
future.removeFuture(); |
||||||
|
this.callbackExecutor.submit(future::executeInvokeCallback); |
||||||
|
} else { |
||||||
|
future.putResponse(deserialize); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { |
||||||
|
log.error("NettyClientHandler catch an exception : {}", cause.getMessage(), cause); |
||||||
|
nettyRemotingClient.closeChannel(ChannelUtils.toAddress(ctx.channel())); |
||||||
|
ctx.channel().close(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { |
||||||
|
if (evt instanceof IdleStateEvent) { |
||||||
|
ctx.channel() |
||||||
|
.writeAndFlush(HeartBeatTransporter.getHeartBeatTransporter()) |
||||||
|
.addListener(ChannelFutureListener.CLOSE_ON_FAILURE); |
||||||
|
if (log.isDebugEnabled()) { |
||||||
|
log.debug("Client send heart beat to: {}", ChannelUtils.getRemoteAddress(ctx.channel())); |
||||||
|
} |
||||||
|
} else { |
||||||
|
super.userEventTriggered(ctx, evt); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.base; |
||||||
|
|
||||||
|
import java.lang.annotation.Documented; |
||||||
|
import java.lang.annotation.ElementType; |
||||||
|
import java.lang.annotation.Retention; |
||||||
|
import java.lang.annotation.RetentionPolicy; |
||||||
|
import java.lang.annotation.Target; |
||||||
|
|
||||||
|
@Target(ElementType.METHOD) |
||||||
|
@Retention(RetentionPolicy.RUNTIME) |
||||||
|
@Documented |
||||||
|
public @interface RpcMethod { |
||||||
|
|
||||||
|
long timeout() default 3000L; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,58 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.base.client; |
||||||
|
|
||||||
|
import static com.google.common.base.Preconditions.checkNotNull; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.base.NettyRemotingClient; |
||||||
|
import org.apache.dolphinscheduler.extract.base.RpcMethod; |
||||||
|
import org.apache.dolphinscheduler.extract.base.utils.Host; |
||||||
|
|
||||||
|
import java.lang.reflect.InvocationHandler; |
||||||
|
import java.lang.reflect.Method; |
||||||
|
import java.util.Map; |
||||||
|
import java.util.concurrent.ConcurrentHashMap; |
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
|
||||||
|
@Slf4j |
||||||
|
public class ClientInvocationHandler implements InvocationHandler { |
||||||
|
|
||||||
|
private final NettyRemotingClient nettyRemotingClient; |
||||||
|
|
||||||
|
private final Map<String, ClientMethodInvoker> methodInvokerMap; |
||||||
|
|
||||||
|
private final Host serverHost; |
||||||
|
|
||||||
|
public ClientInvocationHandler(Host serverHost, NettyRemotingClient nettyRemotingClient) { |
||||||
|
this.serverHost = checkNotNull(serverHost); |
||||||
|
this.nettyRemotingClient = checkNotNull(nettyRemotingClient); |
||||||
|
this.methodInvokerMap = new ConcurrentHashMap<>(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { |
||||||
|
if (method.getAnnotation(RpcMethod.class) == null) { |
||||||
|
return method.invoke(proxy, args); |
||||||
|
} |
||||||
|
ClientMethodInvoker methodInvoker = methodInvokerMap.computeIfAbsent( |
||||||
|
method.toGenericString(), m -> new SyncClientMethodInvoker(serverHost, method, nettyRemotingClient)); |
||||||
|
return methodInvoker.invoke(proxy, method, args); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,26 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.base.client; |
||||||
|
|
||||||
|
import java.lang.reflect.Method; |
||||||
|
|
||||||
|
public interface ClientMethodInvoker { |
||||||
|
|
||||||
|
Object invoke(Object proxy, Method method, Object[] args) throws Throwable; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,51 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.base.client; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.base.NettyRemotingClient; |
||||||
|
import org.apache.dolphinscheduler.extract.base.utils.Host; |
||||||
|
|
||||||
|
import java.lang.reflect.Proxy; |
||||||
|
import java.util.Map; |
||||||
|
import java.util.concurrent.ConcurrentHashMap; |
||||||
|
|
||||||
|
/** |
||||||
|
* This class is used to create a proxy client which will transform local method invocation to remove invocation. |
||||||
|
*/ |
||||||
|
public class JdkDynamicRpcClientProxyFactory implements IRpcClientProxyFactory { |
||||||
|
|
||||||
|
private final NettyRemotingClient nettyRemotingClient; |
||||||
|
|
||||||
|
// todo: use guava cache to avoid memory leak
|
||||||
|
private final Map<String, Map<String, Object>> proxyClientCache = new ConcurrentHashMap<>(); |
||||||
|
|
||||||
|
public JdkDynamicRpcClientProxyFactory(NettyRemotingClient nettyRemotingClient) { |
||||||
|
this.nettyRemotingClient = nettyRemotingClient; |
||||||
|
} |
||||||
|
|
||||||
|
@SuppressWarnings("unchecked") |
||||||
|
@Override |
||||||
|
public <T> T getProxyClient(String serverHost, Class<T> clientInterface) { |
||||||
|
return (T) proxyClientCache |
||||||
|
.computeIfAbsent(serverHost, key -> new ConcurrentHashMap<>()) |
||||||
|
.computeIfAbsent(clientInterface.getName(), |
||||||
|
key -> Proxy.newProxyInstance( |
||||||
|
clientInterface.getClassLoader(), new Class[]{clientInterface}, |
||||||
|
new ClientInvocationHandler(Host.of(serverHost), nettyRemotingClient))); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,56 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.base.client; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.base.IRpcResponse; |
||||||
|
import org.apache.dolphinscheduler.extract.base.NettyRemotingClient; |
||||||
|
import org.apache.dolphinscheduler.extract.base.RpcMethod; |
||||||
|
import org.apache.dolphinscheduler.extract.base.StandardRpcRequest; |
||||||
|
import org.apache.dolphinscheduler.extract.base.exception.MethodInvocationException; |
||||||
|
import org.apache.dolphinscheduler.extract.base.protocal.Transporter; |
||||||
|
import org.apache.dolphinscheduler.extract.base.protocal.TransporterHeader; |
||||||
|
import org.apache.dolphinscheduler.extract.base.serialize.JsonSerializer; |
||||||
|
import org.apache.dolphinscheduler.extract.base.utils.Host; |
||||||
|
|
||||||
|
import java.lang.reflect.Method; |
||||||
|
|
||||||
|
public class SyncClientMethodInvoker extends BaseRemoteMethodInvoker { |
||||||
|
|
||||||
|
public SyncClientMethodInvoker(Host serverHost, Method localMethod, NettyRemotingClient nettyRemotingClient) { |
||||||
|
super(serverHost, localMethod, nettyRemotingClient); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { |
||||||
|
RpcMethod sync = method.getAnnotation(RpcMethod.class); |
||||||
|
Transporter transporter = new Transporter(); |
||||||
|
transporter.setBody(JsonSerializer.serialize(StandardRpcRequest.of(args))); |
||||||
|
transporter.setHeader(TransporterHeader.of(methodIdentifier)); |
||||||
|
|
||||||
|
IRpcResponse iRpcResponse = |
||||||
|
nettyRemotingClient.sendSync(serverHost, transporter, sync.timeout()); |
||||||
|
if (!iRpcResponse.isSuccess()) { |
||||||
|
throw MethodInvocationException.of(iRpcResponse.getMessage()); |
||||||
|
} |
||||||
|
if (iRpcResponse.getBody() == null) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
Class<?> responseClass = method.getReturnType(); |
||||||
|
return JsonSerializer.deserialize(iRpcResponse.getBody(), responseClass); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.base.exception; |
||||||
|
|
||||||
|
public class MethodInvocationException extends RuntimeException { |
||||||
|
|
||||||
|
public MethodInvocationException(String message) { |
||||||
|
super(message); |
||||||
|
} |
||||||
|
|
||||||
|
public static MethodInvocationException of(String message) { |
||||||
|
return new MethodInvocationException(message); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,55 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.base.protocal; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.base.StandardRpcRequest; |
||||||
|
import org.apache.dolphinscheduler.extract.base.StandardRpcResponse; |
||||||
|
import org.apache.dolphinscheduler.extract.base.serialize.JsonSerializer; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
import lombok.NonNull; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class Transporter implements Serializable { |
||||||
|
|
||||||
|
private static final long serialVersionUID = -1L; |
||||||
|
|
||||||
|
public static final byte MAGIC = (byte) 0xbabe; |
||||||
|
public static final byte VERSION = 0; |
||||||
|
|
||||||
|
private TransporterHeader header; |
||||||
|
private byte[] body; |
||||||
|
|
||||||
|
public static Transporter of(@NonNull TransporterHeader header, StandardRpcResponse iRpcResponse) { |
||||||
|
return of(header, JsonSerializer.serialize(iRpcResponse)); |
||||||
|
} |
||||||
|
|
||||||
|
public static Transporter of(@NonNull TransporterHeader header, StandardRpcRequest iRpcRequest) { |
||||||
|
return of(header, JsonSerializer.serialize(iRpcRequest)); |
||||||
|
} |
||||||
|
|
||||||
|
public static Transporter of(@NonNull TransporterHeader header, byte[] body) { |
||||||
|
Transporter transporter = new Transporter(); |
||||||
|
transporter.setHeader(header); |
||||||
|
transporter.setBody(body); |
||||||
|
return transporter; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,94 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.base.protocal; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.base.serialize.JsonSerializer; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import io.netty.buffer.ByteBuf; |
||||||
|
import io.netty.channel.ChannelHandlerContext; |
||||||
|
import io.netty.handler.codec.ReplayingDecoder; |
||||||
|
|
||||||
|
@Slf4j |
||||||
|
public class TransporterDecoder extends ReplayingDecoder<TransporterDecoder.State> { |
||||||
|
|
||||||
|
public TransporterDecoder() { |
||||||
|
super(State.MAGIC); |
||||||
|
} |
||||||
|
|
||||||
|
private int headerLength; |
||||||
|
private byte[] header; |
||||||
|
private int bodyLength; |
||||||
|
private byte[] body; |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception { |
||||||
|
switch (state()) { |
||||||
|
case MAGIC: |
||||||
|
checkMagic(in.readByte()); |
||||||
|
checkpoint(State.VERSION); |
||||||
|
case VERSION: |
||||||
|
checkVersion(in.readByte()); |
||||||
|
checkpoint(State.HEADER_LENGTH); |
||||||
|
case HEADER_LENGTH: |
||||||
|
headerLength = in.readInt(); |
||||||
|
checkpoint(State.HEADER); |
||||||
|
case HEADER: |
||||||
|
header = new byte[headerLength]; |
||||||
|
in.readBytes(header); |
||||||
|
checkpoint(State.BODY_LENGTH); |
||||||
|
case BODY_LENGTH: |
||||||
|
bodyLength = in.readInt(); |
||||||
|
checkpoint(State.BODY); |
||||||
|
case BODY: |
||||||
|
body = new byte[bodyLength]; |
||||||
|
in.readBytes(body); |
||||||
|
Transporter transporter = |
||||||
|
Transporter.of(JsonSerializer.deserialize(header, TransporterHeader.class), body); |
||||||
|
out.add(transporter); |
||||||
|
checkpoint(State.MAGIC); |
||||||
|
break; |
||||||
|
default: |
||||||
|
log.warn("unknown decoder state {}", state()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void checkMagic(byte magic) { |
||||||
|
if (magic != Transporter.MAGIC) { |
||||||
|
throw new IllegalArgumentException("illegal packet [magic]" + magic); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void checkVersion(byte version) { |
||||||
|
if (version != Transporter.VERSION) { |
||||||
|
throw new IllegalArgumentException("illegal protocol [version]" + version); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
enum State { |
||||||
|
MAGIC, |
||||||
|
VERSION, |
||||||
|
HEADER_LENGTH, |
||||||
|
HEADER, |
||||||
|
BODY_LENGTH, |
||||||
|
BODY; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,63 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.base.protocal; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.base.serialize.JsonSerializer; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.util.concurrent.atomic.AtomicLong; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class TransporterHeader implements Serializable { |
||||||
|
|
||||||
|
private static final long serialVersionUID = -1L; |
||||||
|
|
||||||
|
private static final AtomicLong REQUEST_ID = new AtomicLong(1); |
||||||
|
|
||||||
|
private String methodIdentifier; |
||||||
|
private long opaque; |
||||||
|
|
||||||
|
// Used for JsonDeSerializer
|
||||||
|
public TransporterHeader() { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public TransporterHeader(String methodIdentifier) { |
||||||
|
this(REQUEST_ID.getAndIncrement(), methodIdentifier); |
||||||
|
} |
||||||
|
|
||||||
|
public TransporterHeader(long opaque, String methodIdentifier) { |
||||||
|
this.opaque = opaque; |
||||||
|
this.methodIdentifier = methodIdentifier; |
||||||
|
} |
||||||
|
|
||||||
|
public static TransporterHeader of(String methodIdentifier) { |
||||||
|
return new TransporterHeader(methodIdentifier); |
||||||
|
} |
||||||
|
|
||||||
|
public static TransporterHeader of(long opaque, String methodIdentifier) { |
||||||
|
return new TransporterHeader(opaque, methodIdentifier); |
||||||
|
} |
||||||
|
|
||||||
|
public byte[] toBytes() { |
||||||
|
return JsonSerializer.serialize(this); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,169 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.base.server; |
||||||
|
|
||||||
|
import static com.google.common.base.Preconditions.checkNotNull; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.base.NettyRemotingServer; |
||||||
|
import org.apache.dolphinscheduler.extract.base.StandardRpcRequest; |
||||||
|
import org.apache.dolphinscheduler.extract.base.StandardRpcResponse; |
||||||
|
import org.apache.dolphinscheduler.extract.base.protocal.HeartBeatTransporter; |
||||||
|
import org.apache.dolphinscheduler.extract.base.protocal.Transporter; |
||||||
|
import org.apache.dolphinscheduler.extract.base.protocal.TransporterHeader; |
||||||
|
import org.apache.dolphinscheduler.extract.base.serialize.JsonSerializer; |
||||||
|
import org.apache.dolphinscheduler.extract.base.utils.ChannelUtils; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
import java.util.concurrent.ConcurrentHashMap; |
||||||
|
import java.util.concurrent.RejectedExecutionException; |
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import io.netty.channel.Channel; |
||||||
|
import io.netty.channel.ChannelConfig; |
||||||
|
import io.netty.channel.ChannelHandler; |
||||||
|
import io.netty.channel.ChannelHandlerContext; |
||||||
|
import io.netty.channel.ChannelInboundHandlerAdapter; |
||||||
|
import io.netty.handler.timeout.IdleStateEvent; |
||||||
|
|
||||||
|
@Slf4j |
||||||
|
@ChannelHandler.Sharable |
||||||
|
public class JdkDynamicServerHandler extends ChannelInboundHandlerAdapter { |
||||||
|
|
||||||
|
private final NettyRemotingServer nettyRemotingServer; |
||||||
|
|
||||||
|
private final Map<String, ServerMethodInvoker> methodInvokerMap; |
||||||
|
|
||||||
|
public JdkDynamicServerHandler(NettyRemotingServer nettyRemotingServer) { |
||||||
|
this.nettyRemotingServer = nettyRemotingServer; |
||||||
|
this.methodInvokerMap = new ConcurrentHashMap<>(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void channelInactive(ChannelHandlerContext ctx) { |
||||||
|
ctx.channel().close(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void channelRead(ChannelHandlerContext ctx, Object msg) { |
||||||
|
processReceived(ctx.channel(), (Transporter) msg); |
||||||
|
} |
||||||
|
|
||||||
|
public void registerMethodInvoker(ServerMethodInvoker methodInvoker) { |
||||||
|
checkNotNull(methodInvoker); |
||||||
|
checkNotNull(methodInvoker.getMethodIdentify()); |
||||||
|
|
||||||
|
methodInvokerMap.put(methodInvoker.getMethodIdentify(), methodInvoker); |
||||||
|
} |
||||||
|
|
||||||
|
private void processReceived(final Channel channel, final Transporter transporter) { |
||||||
|
final String methodIdentifier = transporter.getHeader().getMethodIdentifier(); |
||||||
|
if (HeartBeatTransporter.METHOD_IDENTIFY.equals(methodIdentifier)) { |
||||||
|
if (log.isDebugEnabled()) { |
||||||
|
log.debug("server receive heart beat from: host: {}", ChannelUtils.getRemoteAddress(channel)); |
||||||
|
} |
||||||
|
return; |
||||||
|
} |
||||||
|
ServerMethodInvoker methodInvoker = methodInvokerMap.get(methodIdentifier); |
||||||
|
try { |
||||||
|
if (methodInvoker == null) { |
||||||
|
log.error("Cannot find the ServerMethodInvoker of : {}", transporter); |
||||||
|
StandardRpcResponse iRpcResponse = |
||||||
|
StandardRpcResponse.fail("Cannot find the ServerMethodInvoker of " + methodIdentifier); |
||||||
|
TransporterHeader transporterHeader = |
||||||
|
TransporterHeader.of(transporter.getHeader().getOpaque(), methodIdentifier); |
||||||
|
Transporter response = Transporter.of(transporterHeader, iRpcResponse); |
||||||
|
channel.writeAndFlush(response); |
||||||
|
return; |
||||||
|
} |
||||||
|
nettyRemotingServer.getDefaultExecutor().submit(() -> { |
||||||
|
StandardRpcResponse iRpcResponse; |
||||||
|
try { |
||||||
|
StandardRpcRequest standardRpcRequest = |
||||||
|
JsonSerializer.deserialize(transporter.getBody(), StandardRpcRequest.class); |
||||||
|
Object[] args; |
||||||
|
if (standardRpcRequest.getArgs().length == 0) { |
||||||
|
args = null; |
||||||
|
} else { |
||||||
|
args = new Object[standardRpcRequest.getArgs().length]; |
||||||
|
for (int i = 0; i < standardRpcRequest.getArgs().length; i++) { |
||||||
|
args[i] = JsonSerializer.deserialize(standardRpcRequest.getArgs()[i], |
||||||
|
standardRpcRequest.getArgsTypes()[i]); |
||||||
|
} |
||||||
|
} |
||||||
|
Object result = methodInvoker.invoke(args); |
||||||
|
if (result == null) { |
||||||
|
iRpcResponse = StandardRpcResponse.success(null, null); |
||||||
|
} else { |
||||||
|
iRpcResponse = StandardRpcResponse.success(JsonSerializer.serialize(result), result.getClass()); |
||||||
|
} |
||||||
|
} catch (Throwable e) { |
||||||
|
log.error("Invoke method {} failed, {}.", methodIdentifier, e.getMessage(), e); |
||||||
|
iRpcResponse = StandardRpcResponse.fail(e.getMessage()); |
||||||
|
} |
||||||
|
TransporterHeader transporterHeader = |
||||||
|
TransporterHeader.of(transporter.getHeader().getOpaque(), methodIdentifier); |
||||||
|
Transporter response = Transporter.of(transporterHeader, iRpcResponse); |
||||||
|
channel.writeAndFlush(response); |
||||||
|
}); |
||||||
|
} catch (RejectedExecutionException e) { |
||||||
|
log.warn("NettyRemotingServer's thread pool is full, discard msg {} from {}", transporter, |
||||||
|
ChannelUtils.getRemoteAddress(channel)); |
||||||
|
StandardRpcResponse iRpcResponse = StandardRpcResponse.fail("NettyRemotingServer's thread pool is full"); |
||||||
|
TransporterHeader transporterHeader = |
||||||
|
TransporterHeader.of(transporter.getHeader().getOpaque(), methodIdentifier); |
||||||
|
Transporter response = Transporter.of(transporterHeader, iRpcResponse); |
||||||
|
channel.writeAndFlush(response); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { |
||||||
|
log.error("exceptionCaught : {}", cause.getMessage(), cause); |
||||||
|
ctx.channel().close(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void channelWritabilityChanged(ChannelHandlerContext ctx) { |
||||||
|
Channel ch = ctx.channel(); |
||||||
|
ChannelConfig config = ch.config(); |
||||||
|
|
||||||
|
if (!ch.isWritable()) { |
||||||
|
if (log.isWarnEnabled()) { |
||||||
|
log.warn("{} is not writable, over high water level : {}", |
||||||
|
ch, config.getWriteBufferHighWaterMark()); |
||||||
|
} |
||||||
|
|
||||||
|
config.setAutoRead(false); |
||||||
|
} else { |
||||||
|
if (log.isWarnEnabled()) { |
||||||
|
log.warn("{} is writable, to low water : {}", ch, config.getWriteBufferLowWaterMark()); |
||||||
|
} |
||||||
|
config.setAutoRead(true); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { |
||||||
|
if (evt instanceof IdleStateEvent) { |
||||||
|
ctx.channel().close(); |
||||||
|
} else { |
||||||
|
super.userEventTriggered(ctx, evt); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,46 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.base.server; |
||||||
|
|
||||||
|
import java.lang.reflect.Method; |
||||||
|
|
||||||
|
public class ServerMethodInvokerImpl implements ServerMethodInvoker { |
||||||
|
|
||||||
|
private final Object serviceBean; |
||||||
|
|
||||||
|
private final Method method; |
||||||
|
|
||||||
|
private final String methodIdentify; |
||||||
|
|
||||||
|
public ServerMethodInvokerImpl(Object serviceBean, Method method) { |
||||||
|
this.serviceBean = serviceBean; |
||||||
|
this.method = method; |
||||||
|
this.methodIdentify = method.toGenericString(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object invoke(Object... args) throws Throwable { |
||||||
|
// todo: check the request param when register
|
||||||
|
return method.invoke(serviceBean, args); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getMethodIdentify() { |
||||||
|
return methodIdentify; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,66 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.base.server; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.base.NettyRemotingServer; |
||||||
|
import org.apache.dolphinscheduler.extract.base.RpcMethod; |
||||||
|
import org.apache.dolphinscheduler.extract.base.RpcService; |
||||||
|
|
||||||
|
import java.lang.reflect.Method; |
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
|
||||||
|
import org.springframework.beans.BeansException; |
||||||
|
import org.springframework.beans.factory.config.BeanPostProcessor; |
||||||
|
import org.springframework.lang.Nullable; |
||||||
|
|
||||||
|
@Slf4j |
||||||
|
public class SpringServerMethodInvokerDiscovery implements BeanPostProcessor { |
||||||
|
|
||||||
|
protected final NettyRemotingServer nettyRemotingServer; |
||||||
|
|
||||||
|
public SpringServerMethodInvokerDiscovery(NettyRemotingServer nettyRemotingServer) { |
||||||
|
this.nettyRemotingServer = nettyRemotingServer; |
||||||
|
} |
||||||
|
|
||||||
|
@Nullable |
||||||
|
@Override |
||||||
|
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { |
||||||
|
Class<?>[] interfaces = bean.getClass().getInterfaces(); |
||||||
|
for (Class<?> anInterface : interfaces) { |
||||||
|
if (anInterface.getAnnotation(RpcService.class) == null) { |
||||||
|
continue; |
||||||
|
} |
||||||
|
registerRpcMethodInvoker(anInterface, bean, beanName); |
||||||
|
} |
||||||
|
return bean; |
||||||
|
} |
||||||
|
|
||||||
|
private void registerRpcMethodInvoker(Class<?> anInterface, Object bean, String beanName) { |
||||||
|
Method[] declaredMethods = anInterface.getDeclaredMethods(); |
||||||
|
for (Method method : declaredMethods) { |
||||||
|
RpcMethod rpcMethod = method.getAnnotation(RpcMethod.class); |
||||||
|
if (rpcMethod == null) { |
||||||
|
continue; |
||||||
|
} |
||||||
|
ServerMethodInvoker methodInvoker = new ServerMethodInvokerImpl(bean, method); |
||||||
|
nettyRemotingServer.registerMethodInvoker(methodInvoker); |
||||||
|
log.info("Register ServerMethodInvoker: {} to bean: {}", methodInvoker.getMethodIdentify(), beanName); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,45 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!-- |
||||||
|
~ Licensed to the Apache Software Foundation (ASF) under one |
||||||
|
~ or more contributor license agreements. See the NOTICE file |
||||||
|
~ distributed with this work for additional information |
||||||
|
~ regarding copyright ownership. The ASF licenses this file |
||||||
|
~ to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 |
||||||
|
~ |
||||||
|
~ Unless required by applicable law or agreed to in writing, |
||||||
|
~ software distributed under the License is distributed on an |
||||||
|
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
||||||
|
~ KIND, either express or implied. See the License for the |
||||||
|
~ specific language governing permissions and limitations |
||||||
|
~ under the License. |
||||||
|
~ |
||||||
|
--> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-extract</artifactId> |
||||||
|
<version>dev-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>dolphinscheduler-extract-master</artifactId> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-extract-base</artifactId> |
||||||
|
<version>${project.version}</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.dolphinscheduler</groupId> |
||||||
|
<artifactId>dolphinscheduler-task-api</artifactId> |
||||||
|
<version>${project.version}</version> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
|
||||||
|
</project> |
@ -0,0 +1,50 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.master; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.base.RpcMethod; |
||||||
|
import org.apache.dolphinscheduler.extract.base.RpcService; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.LogicTaskDispatchRequest; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.LogicTaskDispatchResponse; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.LogicTaskKillRequest; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.LogicTaskKillResponse; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.LogicTaskPauseRequest; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.LogicTaskPauseResponse; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.TaskInstanceForceStartRequest; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.TaskInstanceForceStartResponse; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.TaskInstanceWakeupRequest; |
||||||
|
|
||||||
|
@RpcService |
||||||
|
public interface ILogicTaskInstanceOperator { |
||||||
|
|
||||||
|
@RpcMethod |
||||||
|
LogicTaskDispatchResponse dispatchLogicTask(LogicTaskDispatchRequest taskDispatchRequest); |
||||||
|
|
||||||
|
@RpcMethod |
||||||
|
LogicTaskKillResponse killLogicTask(LogicTaskKillRequest taskKillRequest); |
||||||
|
|
||||||
|
@RpcMethod |
||||||
|
LogicTaskPauseResponse pauseLogicTask(LogicTaskPauseRequest taskPauseRequest); |
||||||
|
|
||||||
|
@RpcMethod |
||||||
|
TaskInstanceForceStartResponse forceStartTaskInstance(TaskInstanceForceStartRequest taskForceStartRequest); |
||||||
|
|
||||||
|
@RpcMethod |
||||||
|
void wakeupTaskInstance(TaskInstanceWakeupRequest taskWakeupRequest); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.master; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.base.RpcMethod; |
||||||
|
import org.apache.dolphinscheduler.extract.base.RpcService; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.CacheExpireRequest; |
||||||
|
|
||||||
|
@RpcService |
||||||
|
public interface IMasterCacheService { |
||||||
|
|
||||||
|
@RpcMethod |
||||||
|
void cacheExpire(CacheExpireRequest cacheExpireRequest); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.master; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.base.RpcMethod; |
||||||
|
import org.apache.dolphinscheduler.extract.base.RpcService; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.LogicTaskInstanceLogFileDownloadRequest; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.LogicTaskInstanceLogFileDownloadResponse; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.LogicTaskInstanceLogPageQueryRequest; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.LogicTaskInstanceLogPageQueryResponse; |
||||||
|
|
||||||
|
@RpcService |
||||||
|
public interface IMasterLogService { |
||||||
|
|
||||||
|
@RpcMethod |
||||||
|
LogicTaskInstanceLogFileDownloadResponse getLogicTaskInstanceWholeLogFileBytes(LogicTaskInstanceLogFileDownloadRequest logicTaskInstanceLogFileDownloadRequest); |
||||||
|
|
||||||
|
@RpcMethod |
||||||
|
LogicTaskInstanceLogPageQueryResponse pageQueryLogicTaskInstanceLog(LogicTaskInstanceLogPageQueryRequest taskInstanceLogPageQueryRequest); |
||||||
|
|
||||||
|
@RpcMethod |
||||||
|
void removeLogicTaskInstanceLog(String taskInstanceLogAbsolutePath); |
||||||
|
} |
@ -0,0 +1,31 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.master; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.base.RpcMethod; |
||||||
|
import org.apache.dolphinscheduler.extract.base.RpcService; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.StreamingTaskTriggerRequest; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.StreamingTaskTriggerResponse; |
||||||
|
|
||||||
|
@RpcService |
||||||
|
public interface IStreamingTaskOperator { |
||||||
|
|
||||||
|
@RpcMethod |
||||||
|
StreamingTaskTriggerResponse triggerStreamingTask(StreamingTaskTriggerRequest streamingTaskTriggerRequest); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,43 @@ |
|||||||
|
/* |
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
* contributor license agreements. See the NOTICE file distributed with |
||||||
|
* this work for additional information regarding copyright ownership. |
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
* (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.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.apache.dolphinscheduler.extract.master; |
||||||
|
|
||||||
|
import org.apache.dolphinscheduler.extract.base.RpcMethod; |
||||||
|
import org.apache.dolphinscheduler.extract.base.RpcService; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.TaskInstanceExecutionFinishEvent; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.TaskInstanceExecutionInfoEvent; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.TaskInstanceExecutionRunningEvent; |
||||||
|
import org.apache.dolphinscheduler.extract.master.transportor.WorkflowInstanceStateChangeEvent; |
||||||
|
|
||||||
|
@RpcService |
||||||
|
public interface ITaskInstanceExecutionEventListener { |
||||||
|
|
||||||
|
@RpcMethod |
||||||
|
void onTaskInstanceExecutionRunning(TaskInstanceExecutionRunningEvent taskInstanceExecutionRunningEvent); |
||||||
|
|
||||||
|
@RpcMethod |
||||||
|
void onTaskInstanceExecutionFinish(TaskInstanceExecutionFinishEvent taskInstanceExecutionFinishEvent); |
||||||
|
|
||||||
|
@RpcMethod |
||||||
|
void onTaskInstanceExecutionInfoUpdate(TaskInstanceExecutionInfoEvent taskInstanceExecutionInfoEvent); |
||||||
|
|
||||||
|
// todo: Split this into a separate interface
|
||||||
|
@RpcMethod |
||||||
|
void onWorkflowInstanceInstanceStateChange(WorkflowInstanceStateChangeEvent workflowInstanceStateChangeEvent); |
||||||
|
|
||||||
|
} |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue