[PushService] Update daemon & library to 2.4 version 65/40365/1 accepted/tizen/mobile/20150605.023905 accepted/tizen/tv/20150605.024106 accepted/tizen/wearable/20150605.095007 submit/tizen_common/20150604.888888 submit/tizen_mobile/20150603.051354 submit/tizen_tv/20150603.051405 submit/tizen_wearable/20150604.095442
authorHaJun, Sung <hajun.sung@samsung.com>
Wed, 3 Jun 2015 04:50:00 +0000 (13:50 +0900)
committerHaJun, Sung <hajun.sung@samsung.com>
Wed, 3 Jun 2015 04:50:00 +0000 (13:50 +0900)
Change-Id: Id643558cc970963d40f6ea04daafc6d6cc5f184e
Signed-off-by: HaJun, Sung <hajun.sung@samsung.com>
48 files changed:
LICENSE [new file with mode: 0644]
LICENSE.Flora [deleted file]
NOTICE [changed mode: 0755->0644]
aarch64/bin/push_tool [new file with mode: 0755]
aarch64/bin/pushd [new file with mode: 0755]
aarch64/lib64/libpush.so [new symlink]
aarch64/lib64/libpush.so.0 [new symlink]
aarch64/lib64/libpush.so.0.2.12 [new file with mode: 0644]
aarch64/share/push/PushServerTrust.cer [new file with mode: 0644]
arm/bin/push_tool
arm/bin/pushd
arm/etc/init.d/pushd [deleted file]
arm/etc/rc.d/rc3.d/S90pushd [deleted symlink]
arm/etc/rc.d/rc5.d/S90pushd [deleted symlink]
arm/include/push.h [deleted file]
arm/lib/libpush.so.0.2.12
arm/lib/systemd/user/pushd.service [deleted file]
arm/lib/systemd/user/tizen-middleware.target.wants/pushd.service [deleted symlink]
doc/images/capi_messaging_push_overview1.png [new file with mode: 0755]
doc/push-service_doc.h [new file with mode: 0755]
doc/push_doc.h [new file with mode: 0755]
include/push-service.h [new file with mode: 0644]
include/push.h [new file with mode: 0644]
include/pushlog.h [new file with mode: 0644]
libpush.manifest [new file with mode: 0644]
packaging/init_push_DB.sh [deleted file]
packaging/libpush-devel.manifest [deleted file]
packaging/libpush.manifest [deleted file]
packaging/push-bin.manifest [deleted file]
packaging/push-tool.manifest [deleted file]
packaging/push.manifest [deleted file]
packaging/push.spec
packaging/pushd.service [changed mode: 0644->0755]
push-bin.manifest [new file with mode: 0644]
push-tool.manifest [new file with mode: 0644]
push.pc [moved from arm/lib/pkgconfig/push.pc with 99% similarity]
share/push/prd-dl-key.pem [new file with mode: 0644]
share/push/push_sslkey.pem [new file with mode: 0644]
x86/bin/push_tool
x86/bin/pushd
x86/etc/init.d/pushd [deleted file]
x86/etc/rc.d/rc3.d/S90pushd [deleted symlink]
x86/etc/rc.d/rc5.d/S90pushd [deleted symlink]
x86/include/push.h [deleted file]
x86/lib/libpush.so.0.2.12
x86/lib/pkgconfig/push.pc [deleted file]
x86/lib/systemd/user/pushd.service [deleted file]
x86/lib/systemd/user/tizen-middleware.target.wants/pushd.service [deleted symlink]

diff --git a/LICENSE b/LICENSE
new file mode 100644 (file)
index 0000000..9c13a9b
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,204 @@
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+\r
+                                 Apache License\r
+                           Version 2.0, January 2004\r
+                        http://www.apache.org/licenses/\r
+\r
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\r
+\r
+   1. Definitions.\r
+\r
+      "License" shall mean the terms and conditions for use, reproduction,\r
+      and distribution as defined by Sections 1 through 9 of this document.\r
+\r
+      "Licensor" shall mean the copyright owner or entity authorized by\r
+      the copyright owner that is granting the License.\r
+\r
+      "Legal Entity" shall mean the union of the acting entity and all\r
+      other entities that control, are controlled by, or are under common\r
+      control with that entity. For the purposes of this definition,\r
+      "control" means (i) the power, direct or indirect, to cause the\r
+      direction or management of such entity, whether by contract or\r
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the\r
+      outstanding shares, or (iii) beneficial ownership of such entity.\r
+\r
+      "You" (or "Your") shall mean an individual or Legal Entity\r
+      exercising permissions granted by this License.\r
+\r
+      "Source" form shall mean the preferred form for making modifications,\r
+      including but not limited to software source code, documentation\r
+      source, and configuration files.\r
+\r
+      "Object" form shall mean any form resulting from mechanical\r
+      transformation or translation of a Source form, including but\r
+      not limited to compiled object code, generated documentation,\r
+      and conversions to other media types.\r
+\r
+      "Work" shall mean the work of authorship, whether in Source or\r
+      Object form, made available under the License, as indicated by a\r
+      copyright notice that is included in or attached to the work\r
+      (an example is provided in the Appendix below).\r
+\r
+      "Derivative Works" shall mean any work, whether in Source or Object\r
+      form, that is based on (or derived from) the Work and for which the\r
+      editorial revisions, annotations, elaborations, or other modifications\r
+      represent, as a whole, an original work of authorship. For the purposes\r
+      of this License, Derivative Works shall not include works that remain\r
+      separable from, or merely link (or bind by name) to the interfaces of,\r
+      the Work and Derivative Works thereof.\r
+\r
+      "Contribution" shall mean any work of authorship, including\r
+      the original version of the Work and any modifications or additions\r
+      to that Work or Derivative Works thereof, that is intentionally\r
+      submitted to Licensor for inclusion in the Work by the copyright owner\r
+      or by an individual or Legal Entity authorized to submit on behalf of\r
+      the copyright owner. For the purposes of this definition, "submitted"\r
+      means any form of electronic, verbal, or written communication sent\r
+      to the Licensor or its representatives, including but not limited to\r
+      communication on electronic mailing lists, source code control systems,\r
+      and issue tracking systems that are managed by, or on behalf of, the\r
+      Licensor for the purpose of discussing and improving the Work, but\r
+      excluding communication that is conspicuously marked or otherwise\r
+      designated in writing by the copyright owner as "Not a Contribution."\r
+\r
+      "Contributor" shall mean Licensor and any individual or Legal Entity\r
+      on behalf of whom a Contribution has been received by Licensor and\r
+      subsequently incorporated within the Work.\r
+\r
+   2. Grant of Copyright License. Subject to the terms and conditions of\r
+      this License, each Contributor hereby grants to You a perpetual,\r
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r
+      copyright license to reproduce, prepare Derivative Works of,\r
+      publicly display, publicly perform, sublicense, and distribute the\r
+      Work and such Derivative Works in Source or Object form.\r
+\r
+   3. Grant of Patent License. Subject to the terms and conditions of\r
+      this License, each Contributor hereby grants to You a perpetual,\r
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r
+      (except as stated in this section) patent license to make, have made,\r
+      use, offer to sell, sell, import, and otherwise transfer the Work,\r
+      where such license applies only to those patent claims licensable\r
+      by such Contributor that are necessarily infringed by their\r
+      Contribution(s) alone or by combination of their Contribution(s)\r
+      with the Work to which such Contribution(s) was submitted. If You\r
+      institute patent litigation against any entity (including a\r
+      cross-claim or counterclaim in a lawsuit) alleging that the Work\r
+      or a Contribution incorporated within the Work constitutes direct\r
+      or contributory patent infringement, then any patent licenses\r
+      granted to You under this License for that Work shall terminate\r
+      as of the date such litigation is filed.\r
+\r
+   4. Redistribution. You may reproduce and distribute copies of the\r
+      Work or Derivative Works thereof in any medium, with or without\r
+      modifications, and in Source or Object form, provided that You\r
+      meet the following conditions:\r
+\r
+      (a) You must give any other recipients of the Work or\r
+          Derivative Works a copy of this License; and\r
+\r
+      (b) You must cause any modified files to carry prominent notices\r
+          stating that You changed the files; and\r
+\r
+      (c) You must retain, in the Source form of any Derivative Works\r
+          that You distribute, all copyright, patent, trademark, and\r
+          attribution notices from the Source form of the Work,\r
+          excluding those notices that do not pertain to any part of\r
+          the Derivative Works; and\r
+\r
+      (d) If the Work includes a "NOTICE" text file as part of its\r
+          distribution, then any Derivative Works that You distribute must\r
+          include a readable copy of the attribution notices contained\r
+          within such NOTICE file, excluding those notices that do not\r
+          pertain to any part of the Derivative Works, in at least one\r
+          of the following places: within a NOTICE text file distributed\r
+          as part of the Derivative Works; within the Source form or\r
+          documentation, if provided along with the Derivative Works; or,\r
+          within a display generated by the Derivative Works, if and\r
+          wherever such third-party notices normally appear. The contents\r
+          of the NOTICE file are for informational purposes only and\r
+          do not modify the License. You may add Your own attribution\r
+          notices within Derivative Works that You distribute, alongside\r
+          or as an addendum to the NOTICE text from the Work, provided\r
+          that such additional attribution notices cannot be construed\r
+          as modifying the License.\r
+\r
+      You may add Your own copyright statement to Your modifications and\r
+      may provide additional or different license terms and conditions\r
+      for use, reproduction, or distribution of Your modifications, or\r
+      for any such Derivative Works as a whole, provided Your use,\r
+      reproduction, and distribution of the Work otherwise complies with\r
+      the conditions stated in this License.\r
+\r
+   5. Submission of Contributions. Unless You explicitly state otherwise,\r
+      any Contribution intentionally submitted for inclusion in the Work\r
+      by You to the Licensor shall be under the terms and conditions of\r
+      this License, without any additional terms or conditions.\r
+      Notwithstanding the above, nothing herein shall supersede or modify\r
+      the terms of any separate license agreement you may have executed\r
+      with Licensor regarding such Contributions.\r
+\r
+   6. Trademarks. This License does not grant permission to use the trade\r
+      names, trademarks, service marks, or product names of the Licensor,\r
+      except as required for reasonable and customary use in describing the\r
+      origin of the Work and reproducing the content of the NOTICE file.\r
+\r
+   7. Disclaimer of Warranty. Unless required by applicable law or\r
+      agreed to in writing, Licensor provides the Work (and each\r
+      Contributor provides its Contributions) on an "AS IS" BASIS,\r
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\r
+      implied, including, without limitation, any warranties or conditions\r
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\r
+      PARTICULAR PURPOSE. You are solely responsible for determining the\r
+      appropriateness of using or redistributing the Work and assume any\r
+      risks associated with Your exercise of permissions under this License.\r
+\r
+   8. Limitation of Liability. In no event and under no legal theory,\r
+      whether in tort (including negligence), contract, or otherwise,\r
+      unless required by applicable law (such as deliberate and grossly\r
+      negligent acts) or agreed to in writing, shall any Contributor be\r
+      liable to You for damages, including any direct, indirect, special,\r
+      incidental, or consequential damages of any character arising as a\r
+      result of this License or out of the use or inability to use the\r
+      Work (including but not limited to damages for loss of goodwill,\r
+      work stoppage, computer failure or malfunction, or any and all\r
+      other commercial damages or losses), even if such Contributor\r
+      has been advised of the possibility of such damages.\r
+\r
+   9. Accepting Warranty or Additional Liability. While redistributing\r
+      the Work or Derivative Works thereof, You may choose to offer,\r
+      and charge a fee for, acceptance of support, warranty, indemnity,\r
+      or other liability obligations and/or rights consistent with this\r
+      License. However, in accepting such obligations, You may act only\r
+      on Your own behalf and on Your sole responsibility, not on behalf\r
+      of any other Contributor, and only if You agree to indemnify,\r
+      defend, and hold each Contributor harmless for any liability\r
+      incurred by, or claims asserted against, such Contributor by reason\r
+      of your accepting any such warranty or additional liability.\r
+\r
+   END OF TERMS AND CONDITIONS\r
+\r
+   APPENDIX: How to apply the Apache License to your work.\r
+\r
+      To apply the Apache License to your work, attach the following\r
+      boilerplate notice, with the fields enclosed by brackets "[]"\r
+      replaced with your own identifying information. (Don't include\r
+      the brackets!)  The text should be enclosed in the appropriate\r
+      comment syntax for the file format. We also recommend that a\r
+      file or class name and description of purpose be included on the\r
+      same "printed page" as the copyright notice for easier\r
+      identification within third-party archives.\r
+\r
+   Copyright [yyyy] [name of copyright owner]\r
+\r
+   Licensed under the Apache License, Version 2.0 (the "License");\r
+   you may not use this file except in compliance with the License.\r
+   You may obtain a copy of the License at\r
+\r
+       http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+   Unless required by applicable law or agreed to in writing, software\r
+   distributed under the License is distributed on an "AS IS" BASIS,\r
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+   See the License for the specific language governing permissions and\r
+   limitations under the License.\r
+\r
diff --git a/LICENSE.Flora b/LICENSE.Flora
deleted file mode 100755 (executable)
index 571fe79..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-Flora License
-
-Version 1.1, April, 2013
-
-http://floralicense.org/license/
-
-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.
-
-"Tizen Certified Platform" shall mean a software platform that complies
-with the standards set forth in the Tizen Compliance Specification
-and passes the Tizen Compliance Tests as defined from time to time
-by the Tizen Technical Steering Group and certified by the Tizen
-Association or its designated agent.
-
-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
-solely as incorporated into a Tizen Certified Platform, 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 solely
-as incorporated into a Tizen Certified Platform 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 pursuant to the copyright license
-above, in any medium, with or without modifications, and in Source or
-Object form, provided that You meet the following conditions:
-
-  1. You must give any other recipients of the Work or Derivative Works
-     a copy of this License; and
-  2. You must cause any modified files to carry prominent notices stating
-     that You changed the files; and
-  3. 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
-  4. 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
-     and your own copyright statement or terms and conditions do not conflict
-     the conditions stated in the License including section 3.
-
-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 Flora License to your work
-
-To apply the Flora 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 Flora License, Version 1.1 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://floralicense.org/license/
-
-   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.
-
diff --git a/NOTICE b/NOTICE
old mode 100755 (executable)
new mode 100644 (file)
index ab41d9f..ded3804
--- a/NOTICE
+++ b/NOTICE
@@ -1,3 +1 @@
-Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. All rights reserved.
-Except as noted, this software is licensed under Flora License, Version 1.1
-Please, see the LICENSE.Flora file for Flora License, Version 1.1 terms and conditions.
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
\ No newline at end of file
diff --git a/aarch64/bin/push_tool b/aarch64/bin/push_tool
new file mode 100755 (executable)
index 0000000..d707e81
Binary files /dev/null and b/aarch64/bin/push_tool differ
diff --git a/aarch64/bin/pushd b/aarch64/bin/pushd
new file mode 100755 (executable)
index 0000000..1e13889
Binary files /dev/null and b/aarch64/bin/pushd differ
diff --git a/aarch64/lib64/libpush.so b/aarch64/lib64/libpush.so
new file mode 120000 (symlink)
index 0000000..42d3ebb
--- /dev/null
@@ -0,0 +1 @@
+libpush.so.0
\ No newline at end of file
diff --git a/aarch64/lib64/libpush.so.0 b/aarch64/lib64/libpush.so.0
new file mode 120000 (symlink)
index 0000000..e8cbc23
--- /dev/null
@@ -0,0 +1 @@
+libpush.so.0.2.12
\ No newline at end of file
diff --git a/aarch64/lib64/libpush.so.0.2.12 b/aarch64/lib64/libpush.so.0.2.12
new file mode 100644 (file)
index 0000000..81ca4c7
Binary files /dev/null and b/aarch64/lib64/libpush.so.0.2.12 differ
diff --git a/aarch64/share/push/PushServerTrust.cer b/aarch64/share/push/PushServerTrust.cer
new file mode 100644 (file)
index 0000000..7fb8bb2
--- /dev/null
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDGDCCAoGgAwIBAgIJAPMld7YDENSnMA0GCSqGSIb3DQEBBQUAMIGkMQswCQYD
+VQQGEwJLUjEUMBIGA1UECAwLR3llb25nZ2kgZG8xDjAMBgNVBAcMBVN1d29uMSUw
+IwYDVQQKDBxTQU1TVU5HIEVMRUNUUk9OSUNTIENPLiwgTFREMR4wHAYDVQQDDBUq
+LnB1c2guc2Ftc3VuZ29zcC5jb20xKDAmBgkqhkiG9w0BCQEWGWFkbWluQHB1c2gu
+c2Ftc3VuZ29zcC5jb20wHhcNOTkxMjMxMTUwMjEwWhcNNDkxMjE4MTUwMjEwWjCB
+pDELMAkGA1UEBhMCS1IxFDASBgNVBAgMC0d5ZW9uZ2dpIGRvMQ4wDAYDVQQHDAVT
+dXdvbjElMCMGA1UECgwcU0FNU1VORyBFTEVDVFJPTklDUyBDTy4sIExURDEeMBwG
+A1UEAwwVKi5wdXNoLnNhbXN1bmdvc3AuY29tMSgwJgYJKoZIhvcNAQkBFhlhZG1p
+bkBwdXNoLnNhbXN1bmdvc3AuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDS/wx087bX6AA7bz/rPd/AOtm8g1ebRfENevGCnMrnU43PlryjjQjgKxwMO1R5
+Mdvv9IsSdoGIKj5h5VZlWbuiCx5pPqf62Owu3DjVLLuHWmlFkb7y6mKfshAcGCVq
+azjayWF9NpmOPnJDlFOZHTu+5X0+KEyx/W7kS6gcB5WIRwIDAQABo1AwTjAdBgNV
+HQ4EFgQUWMjZPBPgzaBussvwASa64F2DMFEwHwYDVR0jBBgwFoAUWMjZPBPgzaBu
+ssvwASa64F2DMFEwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQBpsXfr
+Fyd3rdKRzyBh/aJgY+XLZf5/TZYhtv2OLv5kMK0EkS0CEduPK5LeZwOhWgLIGpsl
+m8F2WNFttqP6fsAHExLTUlyqt4HT0CdzUtypjgsUPK5GBqEvz6+iQP+hZ4NKuxNB
+kci9Q85y89ANKtHvKxN1vu7gqArGFyIOJDVC8w==
+-----END CERTIFICATE-----
index 7836306..d707e81 100755 (executable)
Binary files a/arm/bin/push_tool and b/arm/bin/push_tool differ
index 950b89f..6845ec8 100755 (executable)
Binary files a/arm/bin/pushd and b/arm/bin/pushd differ
diff --git a/arm/etc/init.d/pushd b/arm/etc/init.d/pushd
deleted file mode 100755 (executable)
index 09f9681..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/sh
-
-DESC="Push service daemon"
-NAME=pushd
-DAEMON=/usr/bin/$NAME
-SCRIPTNAME=/etc/init.d/$NAME
-
-[ -x "$DAEMON" ] || exit 0
-
-do_start() {
-       PID=`pidof $NAME`
-       [ -z "$PID" ] || return 1
-       $DAEMON
-       RETVAL=$?
-       return "$RETVAL"
-}
-
-do_stop() {
-       PID=`pidof $NAME`
-       if [ -n "$PID" ]; then
-               kill $PID
-       fi
-       return 0
-}
-
-prt_res() {
-       RETVAL=$1
-
-       case "$RETVAL" in
-               0|1)
-                       echo "... done."
-                       RETVAL=0
-                       ;;
-               *)
-                       echo "... failed!"
-                       RETVAL=1
-                       ;;
-       esac
-
-       return $RETVAL
-}
-
-case "$1" in
-       start)
-               echo "Starting $DESC" "$NAME"
-               do_start
-               prt_res $?
-               ;;
-       stop)
-               echo "Stopping $DESC" "$NAME"
-               do_stop
-               prt_res $?
-               ;;
-       *)
-               echo "Usage: $SCRIPTNAME {start|stop}" >&2
-               exit 3
-               ;;
-esac
-
diff --git a/arm/etc/rc.d/rc3.d/S90pushd b/arm/etc/rc.d/rc3.d/S90pushd
deleted file mode 120000 (symlink)
index 70c8ff9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/etc/init.d/pushd
\ No newline at end of file
diff --git a/arm/etc/rc.d/rc5.d/S90pushd b/arm/etc/rc.d/rc5.d/S90pushd
deleted file mode 120000 (symlink)
index 70c8ff9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/etc/init.d/pushd
\ No newline at end of file
diff --git a/arm/include/push.h b/arm/include/push.h
deleted file mode 100755 (executable)
index 882d8a9..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-//
-// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Flora License, Version 1.1 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://floralicense.org/license/
-//
-// 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.
-//
-
-#ifndef __PUSH_LIB_H__
-#define __PUSH_LIB_H__
-
-#include <errno.h>
-#include <app.h>
-
-#define PUSH_APP_DATA_KEY  "http://tizen.org/appcontrol/data/push/appdata"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @addtogroup CAPI_MESSAGING_PUSH_MODULE
- * @{
- */
-
-/**
- * @file push.h
- * @ingroup CAPI_MESSAGING_FRAMEWORK
- * @brief Support to receive push notifications
- */
-
-/**
- * @brief Enumerations of error codes for push API
- */
-typedef enum {
-       PUSH_ERROR_NONE = 0,   /**< Successful */
-       PUSH_ERROR_OUT_OF_MEMORY = -ENOMEM,   /**< Out of memory */
-       PUSH_ERROR_INVALID_PARAMETER = -EINVAL,   /**< Invalid parameter */
-       PUSH_ERROR_NOT_CONNECTED = -ENOTCONN,  /**< Not connected */
-       PUSH_ERROR_NO_DATA = -ENODATA,  /**< No data available */
-       PUSH_ERROR_OPERATION_FAILED = -0x00004300, /**< Internal operation failed */
-} push_error_e;
-
-/**
- * @brief Enumerations of registration state
- */
-typedef enum {
-       PUSH_STATE_REGISTERED,   /**< Registred */
-       PUSH_STATE_UNREGISTERED, /**< Unregistered */
-       PUSH_STATE_ERROR,       /**< Error */
-} push_state_e;
-
-/**
- * @brief Enumerations of result
- */
-typedef enum {
-       PUSH_RESULT_SUCCESS,  /**< Successful */
-       PUSH_RESULT_TIMEOUT,  /**< Request timed out */
-       PUSH_RESULT_SERVER_ERROR,  /**< Push server error */
-       PUSH_RESULT_SYSTEM_ERROR,  /**< System error */
-} push_result_e;
-
-/**
- * @brief Handle of a connection to the push service
- */
-typedef struct push_connection_s *push_connection_h;
-
-/**
- * @brief Handle of a notification delivered from the push server
- */
-typedef struct push_notification_s *push_notification_h;
-
-/**
- * @brief State callback
- * @remarks This callback will be invoked when the regisration state is
- * refreshed. If the registration or degistration has been succeeded,
- * then this state callback must be called. In addition, the state
- * can be changed if the push server deregisters the application.
- * @param[in] state Registration state
- * @param[in] err  Error message
- * @param[in] user_data User data passed to this callback
- * @see push_connect()
- */
-typedef void (*push_state_cb)(
-               push_state_e state, const char *err, void *user_data);
-
-/**
- * @brief Notifcation callback
- * @param[in] notification A handle of notification containing its payload.
- * The handle is available inside this callback only.
- * @param[in] user_data User data passed to this callback
- * @see push_connect(), push_get_notification_data()
- */
-typedef void (*push_notify_cb)(
-               push_notification_h noti, void *user_data);
-
-/**
- * @brief Result callback
- * @param[in] result Registration/deregistration result
- * @param[in] msg Result message from the push server or NULL
- * @param[in] user_data User data passed to this callback
- * @see push_register(), push_deregister()
- */
-typedef void (*push_result_cb)(push_result_e result, const char *msg, void *user_data);
-
-/**
- * @brief Connects to the push service and sets callback functions
- * @remarks If there is a connection between an application and the push service,
- * the notify callback passes the notification upon its arrival.
- * Otherwise, the push service posts a UI notification to alert users.
- * Connection should be freed with @ref push_disconnect() by you.
- * @param[in] app_id The application ID
- * @param[in] state_cb State callback function
- * @param[in] notify_cb Notify callback function
- * @param[in] user_data User data to pass to <I>state_cb</I> and <I>notify_cb</I>
- * @param[out] connection The connection handle to the push service
- * @return 0 on success, otherwise a negative error value.
- * @retval PUSH_ERROR_NONE Successful
- * @retval PUSH_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval PUSH_ERROR_OUT_OF_MEMORY Out of memory
- * @retval PUSH_ERROR_OPERATION_FAILED Operation failed
- * @pre There is no connection for the <I>app_id</I> to the push service
- * @post The state callback will be called to let you know the current
- * registration state immediately.
- * @see push_disconnect()
- */
-int push_connect(const char *app_id, push_state_cb state_callback,
-               push_notify_cb notify_callback, void *user_data,
-               push_connection_h *connection);
-
-/**
- * @brief Closes the connection and releases all its resources
- * @remarks If you call this function in the push callback functions,
- *          it may cause your application crash.
- * @param[in] connection Handle of a connection to the push service
- * @see push_connect()
- */
-void push_disconnect(push_connection_h connection);
-
-/**
- * @brief Registers an application to the push server
- * @param[in] connection The connection handle to the push service
- * @param[in] service A @ref Service handle to launch an application by
- * an posted UI notification
- * @param[in] result_cb  Result callback function
- * @param[in] user_data  User data to pass to <I>result_cb</I>
- * @return 0 on success, otherwise a negative error value.
- * @retval PUSH_ERROR_NONE Successful
- * @retval PUSH_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval PUSH_ERROR_OUT_OF_MEMORY Out of memory
- * @retval PUSH_ERROR_NOT_CONNECTED No connection to the push service
- * @retval PUSH_ERROR_OPERATION_FAILED Operation failed
- * @pre The application should be connected to the push service
- * @post For successful result, the state callback should be invoked
- * @see push_deregister()
- */
-int push_register(push_connection_h connection,        service_h service,
-               push_result_cb result_callback, void *user_data);
-
-/**
- * @brief Deregisters an application from the Push server
- * @param[in] connection The connection handle to the push service
- * @param[in] result_cb Result callback function
- * @param[in] user_data User data to pass to <I>result_cb</I>
- * @return 0 on success, otherwise a negative error value.
- * @retval PUSH_ERROR_NONE Successful
- * @retval PUSH_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval PUSH_ERROR_OUT_OF_MEMORY Out of memory
- * @retval PUSH_ERROR_NOT_CONNECTED No connection to the push service
- * @retval PUSH_ERROR_OPERATION_FAILED Operation failed
- * @pre The application should be connected to the push service
- * @post In result, the state callback will be invoked
- * @see push_register()
- */
-int push_deregister(push_connection_h connection, push_result_cb callback,
-               void *user_data);
-
-/**
- * @brief Gets notification data which its server sent
- * @remark The <I>data</I> must be released with free() by you
- * @param[in] notification The notification handle
- * @param[out] data The notification data\n
- *                  Set NULL if error but <I>PUSH_ERROR_INVALID_PARAMETER</I>
- * @return 0 on success, otherwise a negative error value.
- * @retval PUSH_ERROR_NONE Successful
- * @retval PUSH_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval PUSH_ERROR_OUT_OF_MEMORY Out of memory
- * @retval PUSH_ERROR_NO_DATA No data available
- * @see push_notify_cb()
- * @see push_get_unread_notification()
- */
-int push_get_notification_data(push_notification_h notification, char **data);
-
-
-/**
- * @brief Gets the notification message which its server sent
- * @remark The <I>msg</I> must be released with free() by you
- * @param[in] notification The notification handle
- * @param[out] data The notification message\n
- *                  Set NULL if error but <I>PUSH_ERROR_INVALID_PARAMETER</I>
- * @return 0 on success, otherwise a negative error value.
- * @retval PUSH_ERROR_NONE Successful
- * @retval PUSH_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval PUSH_ERROR_OUT_OF_MEMORY Out of memory
- * @retval PUSH_ERROR_NO_DATA No data available
- * @see push_notify_cb()
- * @see push_get_unread_notification()
- */
-int push_get_notification_message(push_notification_h notification,
-               char **msg);
-
-/**
- * @brief Gets the received time of the notification message
- *
- * @param[in] notification The notification handle
- * @param[out] received_time The received time of the notification message. \n
- *                           The @a received_time is based on UTC.
- * @return 0 on success, otherwise a negative error value.
- * @retval PUSH_ERROR_NONE Successful
- * @retval PUSH_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval PUSH_ERROR_NO_DATA No data available
- *
- * @see push_notify_cb()
- * @see push_get_unread_notification()
- */
-int push_get_notification_time(push_notification_h notification, long long int *received_time);
-
-/**
- * @brief Gets an unread notification message from the push server
- *
- * @remark This method will be deprecated.
- * @remark @a noti must be released with push_free_notification() by you
- *
- * @details If an application receives an unread message with this method, the message is removed from the system. \n
- *          This method can be called repeatedly until it returns <I>PUSH_ERROR_NO_DATA</I> \n
- *          But, this method does NOT guarantee order and reliability of notification messages. \n
- *          Some notification messages can be dropped when the system message queue is full.
- *
- * @param[in] connection The connection handle to the push service
- * @param[out] noti The notification handle
- * @return 0 on success, otherwise a negative error value.
- * @retval PUSH_ERROR_NONE Successful
- * @retval PUSH_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval PUSH_ERROR_OUT_OF_MEMORY Out of memory
- * @retval PUSH_ERROR_NO_DATA No data available
- *
- * @see push_get_notification_message()
- * @see push_get_notification_time()
- * @see push_get_notification_data()
- */
-int push_get_unread_notification(push_connection_h connection,
-               push_notification_h *noti);
-
-
-/**
- * @brief Gets the registration ID in <I>PUSH_STATE_REGISTERED</I> state
- * @remark The <I>reg_id</I> must be released with free() by you
- * @param[in] connection The connection handle to the push service
- * @param[out] reg_id The registration ID\n
- *                    Set NULL if error but <I>PUSH_ERROR_INVALID_PARAMETER</I>
- * @return 0 on success, otherwise a negative error value
- * @retval PUSH_ERROR_NONE Successful
- * @retval PUSH_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval PUSH_ERROR_OUT_OF_MEMORY Out of memory
- * @retval PUSH_ERROR_NO_DATA No registration ID available
- */
-int push_get_registration_id(push_connection_h connection, char **reg_id);
-
-
-/**
- * @brief Frees the notification handle
- * @param[in] noti The notification handle
- */
-void push_free_notification(push_notification_h noti);
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __PUSH_LIB_H__ */
index 9f58f0a..2d77c0a 100644 (file)
Binary files a/arm/lib/libpush.so.0.2.12 and b/arm/lib/libpush.so.0.2.12 differ
diff --git a/arm/lib/systemd/user/pushd.service b/arm/lib/systemd/user/pushd.service
deleted file mode 100644 (file)
index 0603ebf..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-[Unit]
-Description=Pushd service
-
-[Service]
-Type=forking
-ExecStart=/usr/bin/pushd
-
-[Install]
-WantedBy=tizen-middleware.target
diff --git a/arm/lib/systemd/user/tizen-middleware.target.wants/pushd.service b/arm/lib/systemd/user/tizen-middleware.target.wants/pushd.service
deleted file mode 120000 (symlink)
index 21d0bfc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../pushd.service
\ No newline at end of file
diff --git a/doc/images/capi_messaging_push_overview1.png b/doc/images/capi_messaging_push_overview1.png
new file mode 100755 (executable)
index 0000000..f473d64
Binary files /dev/null and b/doc/images/capi_messaging_push_overview1.png differ
diff --git a/doc/push-service_doc.h b/doc/push-service_doc.h
new file mode 100755 (executable)
index 0000000..a382eae
--- /dev/null
@@ -0,0 +1,61 @@
+/*\r
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ * Licensed under the Apach    e License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef __PUSH_SERVICE_DOC_H__\r
+#define __PUSH_SERVICE_DOC_H__\r
+\r
+/**\r
+ * @ingroup CAPI_MESSAGING_FRAMEWORK\r
+ * @defgroup CAPI_MESSAGING_PUSH_PUBLIC_MODULE Push\r
+ * @brief The @ref CAPI_MESSAGING_PUSH_PUBLIC_MODULE API provides functions to receive push notifications.\r
+ *\r
+ * @addtogroup CAPI_MESSAGING_PUSH_PUBLIC_MODULE\r
+ *\r
+ * @section CAPI_MESSAGING_PUSH_PUBLIC_MODULE_HEADER Required Header\r
+ *   \#include <push-service.h>\r
+ *\r
+ * @section CAPI_MESSAGING_PUSH_PUBLIC_MODULE_OVERVIEW Overview\r
+ *\r
+ * The Push API allows your application to receive push notifications from a push server.\r
+ * The push service is a client daemon that maintains a permanent connection between your device\r
+ * and the push server, in order to process your registration/deregistration requests and\r
+ * deliver push notifications to your application. If the application is connected,\r
+ * the push service passes the notification data over the connection. Otherwise,\r
+ * the push service posts a UI notification with the data.\r
+ * It will be delivered when a user launches the application by selecting the posting.\r
+ *\r
+ * To receive push notifications, you need to follow the steps below:\r
+ *\r
+ * - Connecting to the push service\r
+ * - Registering your application\r
+ * - Getting notification data\r
+ *\r
+ * Push notification helps your application server send data to the application on devices\r
+ * over an IP network even if the application is not running.\r
+ * Push notification may reduce battery consumption over other applications keeping its own connection\r
+ * to its remote application server.\r
+ * @image html capi_messaging_push_overview1.png\r
+ *\r
+ * @subsection CAPI_MESSAGING_PUSH_PUBLIC_LIMITATIONS Service Limitation\r
+ * - Payload of a push message is limited to 4096 bytes.\r
+ * - Administrative permission is needed for your application and server to use the push service.\r
+ * - Push service does not guarantee delivery and order of push messages.\r
+ * - A device should have a valid IMEI number.\r
+ * <BR>\r
+ */\r
+\r
+#endif /* __PUSH_SERVICE_DOC_H__ */\r
diff --git a/doc/push_doc.h b/doc/push_doc.h
new file mode 100755 (executable)
index 0000000..4abc75a
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apach    e 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.
+ */
+
+
+#ifndef __PUSH_DOC_H__
+#define __PUSH_DOC_H__
+
+/**
+ * @internal
+ * @defgroup CAPI_MESSAGING_PUSH_MODULE Push-Internal
+ * @brief The @ref CAPI_MESSAGING_PUSH_MODULE API provides functions to receive push notifications.
+ * @ingroup CAPI_MESSAGING_FRAMEWORK
+ *
+ * @addtogroup CAPI_MESSAGING_PUSH_MODULE
+ *
+ * @section CAPI_MESSAGING_PUSH_MODULE_HEADER Required Header
+ *   \#include <push.h>
+ *
+ * @section CAPI_MESSAGING_PUSH_MODULE_OVERVIEW Overview
+ *
+ * The Push API allows your application to receive push notifications from a push server.
+ * The push service is a client daemon that maintains a permanent connection between your device
+ * and the push server, in order to process your registration/deregistration requests and
+ * deliver push notifications to your application. If the application is connected,
+ * the push service passes the notification data over the connection. Otherwise,
+ * the push service posts a UI notification with the data.
+ * It will be delivered when a user launches the application by selecting the posting.
+ *
+ * To receive push notifications, you need to follow the steps below:
+ *
+ * - Connecting to the push service
+ * - Registering your application
+ * - Getting notification data
+ *
+ * Push notification helps your application server send data to the application on devices
+ * over an IP network even if the application is not running.
+ * Push notification may reduce battery consumption over other applications keeping its own connection
+ * to its remote application server.
+ * @image html capi_messaging_push_overview1.png
+ *
+ * @subsection CAPI_MESSAGING_PUSH_MODULE_OVERVIEW Service Limitation
+ * - Payload of a push message is limited to 4096 bytes.
+ * - Administrative permission is needed for your application and server to use the push service.
+ * - Push service does not guarantee delivery and order of push messages.
+ * - A device should have a valid IMEI number.
+ *
+ * @section CAPI_MESSAGING_PUSH_MODULE_FEATURE Related Features
+ * This API is related with the following feature:
+ *  - http://tizen.org/feature/network.push
+ *
+ * It is recommended to design feature related codes in your application for reliability.
+ *
+ * You can check if a devrice supports the related features for this API by using @ref CAPI_SYSTEM_SYSTEM_INFO_MODULE, thereby controlling the procedure of your application.
+ *
+ * To ensure your application is only running on the device with specific features, please define the features in your manifest file using the manifest editor in the SDK.
+ *
+ * More details on featuring your application can be found from <a href="../org.tizen.mobile.native.appprogramming/html/ide_sdk_tools/feature_element.htm"><b>Feature Element</b>.</a>
+ *
+ */
+
+#endif /* __PUSH_DOC_H__ */
diff --git a/include/push-service.h b/include/push-service.h
new file mode 100644 (file)
index 0000000..87fbcca
--- /dev/null
@@ -0,0 +1,501 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.
+ */
+
+#ifndef __PUSH_PUBLIC_LIB_H__
+#define __PUSH_PUBLIC_LIB_H__
+
+#include <tizen_error.h>
+#include <app.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @file push-service.h
+ */
+
+/**
+ * @addtogroup CAPI_MESSAGING_PUSH_PUBLIC_MODULE
+ * @{
+ */
+
+/**
+ * @brief Enumerations of error codes for push API.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ */
+typedef enum {
+       PUSH_SERVICE_ERROR_NONE = TIZEN_ERROR_NONE,   /**< Successful */
+       PUSH_SERVICE_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY,   /**< Out of memory */
+       PUSH_SERVICE_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER,   /**< Invalid parameter */
+       PUSH_SERVICE_ERROR_NOT_CONNECTED = TIZEN_ERROR_CONNECTION,  /**< Not connected */
+       PUSH_SERVICE_ERROR_NO_DATA = TIZEN_ERROR_NO_DATA,  /**< No data available */
+       PUSH_SERVICE_ERROR_OPERATION_FAILED = TIZEN_ERROR_UNKNOWN, /**< Internal operation failed */
+       PUSH_SERVICE_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< No privilege to access the push service */
+       PUSH_SERVICE_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< Push service not supported */
+} push_service_error_e;
+
+/**
+ * @brief Enumeration of registration states.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ */
+typedef enum {
+       PUSH_SERVICE_STATE_REGISTERED,   /**< Registred */
+       PUSH_SERVICE_STATE_UNREGISTERED, /**< Unregistered */
+       PUSH_SERVICE_STATE_PROVISIONING_IPCHANGE, /**< To change the provisining server IP */
+       PUSH_SERVICE_STATE_PING_CHANGE,       /**< Ping interval is changing */
+       PUSH_SERVICE_STATE_ERROR,       /**< Error */
+} push_service_state_e;
+
+/**
+ * @brief Enumeration of result.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ */
+typedef enum {
+       PUSH_SERVICE_RESULT_SUCCESS,  /**< Successful */
+       PUSH_SERVICE_RESULT_TIMEOUT,  /**< Request timed out */
+       PUSH_SERVICE_RESULT_SERVER_ERROR,  /**< Push server error */
+       PUSH_SERVICE_RESULT_SYSTEM_ERROR,  /**< System error */
+} push_service_result_e;
+
+/**
+ * @brief Connection to the push service handle.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ */
+typedef struct push_connection_s *push_service_connection_h;
+
+/**
+ * @brief Notification delivered from the push server handle.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ */
+typedef struct push_notification_s *push_service_notification_h;
+
+/**
+ * @brief Called when the registration state is refreshed.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @remarks This callback will be invoked when the registration state is refreshed. \n
+ *          If the registration or deregistration has succeeded, then this state callback must be called. \n
+ *          In addition, the state can be changed if the push server deregisters the application.
+ * @param[in] state The registration state
+ * @param[in] err  The error message
+ * @param[in] user_data The user data passed to this callback
+ * @see push_service_connect()
+ */
+typedef void (*push_service_state_cb)(
+               push_service_state_e state, const char *err, void *user_data);
+
+/**
+ * @brief Called to handle a notification.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @param[in] notification A handle of the notification containing its payload\n
+ *                         The handle is available inside this callback only.
+ * @param[in] user_data The user data passed to this callback
+ * @see push_service_connect()
+ * @see push_service_get_notification_data()
+ */
+typedef void (*push_service_notify_cb)(
+               push_service_notification_h noti, void *user_data);
+
+/**
+ * @brief Called with the result of a registration/deregistration.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @param[in] result The registration/deregistration result
+ * @param[in] msg The result message from the push server,
+ *                otherwise @c NULL
+ * @param[in] user_data The user data passed to this callback
+ * @see push_service_register()
+ * @see push_service_deregister()
+ */
+typedef void (*push_service_result_cb)(push_service_result_e result, const char *msg, void *user_data);
+
+/**
+ * @brief Connects to the push service and sets callback functions.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/push
+ * @remarks If there is a connection between an application and the push service,\n
+ *          the notify callback passes the notification upon its arrival.\n
+ *          Otherwise, the push service posts a UI notification to alert users.\n
+ *          The connection should be freed with push_service_disconnect() by you.
+ * @param[in] push_app_id App id received from Tizen Push Server team
+ * @param[in] state_callback State callback function
+ * @param[in] notify_callback Notify callback function
+ * @param[in] user_data User data to pass to <I>state_cb</I> and <I>notify_cb</I>
+ * @param[out] connection The connection handle to the push service
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_SERVICE_ERROR_NONE Successful
+ * @retval #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_SERVICE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_SERVICE_ERROR_NOT_CONNECTED Connection to the daemon failed
+ * @retval #PUSH_SERVICE_ERROR_PERMISSION_DENIED No push privilege
+ * @retval #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ * @pre There is no connection to the push service for the <I>app_id</I>.
+ * @post The state callback will be called to let you know the current
+ *       registration state immediately.
+ * @see push_service_disconnect()
+ */
+int push_service_connect(const char *push_app_id,
+               push_service_state_cb state_callback,
+               push_service_notify_cb notify_callback, void *user_data,
+               push_service_connection_h *connection);
+
+/**
+ * @brief Closes the connection and releases all its resources
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @remarks If you call this function in the push callback functions,\n
+ *          it may cause your application to crash.\n
+ *                     The specific error code can be obtained using the get_last_result()\n
+ *                     Error codes are described in the exception section.
+ * @param[in] connection The connection handle to the push service
+ * @exception #PUSH_SERVICE_ERROR_NONE Successful
+ * @exception #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @exception #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ * @see push_service_connect()
+ */
+void push_service_disconnect(push_service_connection_h connection);
+
+/**
+ * @brief Registers an application to the push server.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @param[in] connection The connection handle to the push service
+ * @param[in] result_callback  Result callback function
+ * @param[in] user_data  User data to pass to <I>result_cb</I>
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_SERVICE_ERROR_NONE Successful
+ * @retval #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_SERVICE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_SERVICE_ERROR_NOT_CONNECTED No connection to the push service
+ * @retval #PUSH_SERVICE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ * @pre The application should be connected to the push service.
+ * @post As a result, the state callback will be invoked.
+ * @see push_service_deregister()
+ */
+int push_service_register(push_service_connection_h connection,
+               push_service_result_cb result_callback, void *user_data);
+
+/**
+ * @brief Deregisters an application from the Push server.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @param[in] connection The connection handle to the push service
+ * @param[in] result_callback Result callback function
+ * @param[in] user_data User data to pass to <I>result_cb</I>
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_SERVICE_ERROR_NONE Successful
+ * @retval #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_SERVICE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_SERVICE_ERROR_NOT_CONNECTED No connection to the push service
+ * @retval #PUSH_SERVICE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ * @pre The application should be connected to the push service.
+ * @post As a result, the state callback will be invoked.
+ * @see push_service_register()
+ */
+int push_service_deregister(push_service_connection_h connection, push_service_result_cb result_callback,
+               void *user_data);
+
+/**
+ * @brief Retrieves the payload data of a notification that forcibly launched the app.
+ * @details When a notification arrives at the device with the "LAUNCH"\n
+ *                     option or a user clicks a notification in the quick panel,\n
+ *          the push daemon forcibly launches the app and delivers the\n
+ *          notification to the app as a bundle. This function returns\n
+ *                     the payload data in the notificaiton.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/push
+ * @remark This function must be called in the app control callback function.\n
+ *                You must release the payload data using free().\n
+ *                push_service_app_control_to_notification() is preferred to this API.\n
+ *                The specific error code can be obtained using the get_last_result()\n
+ *                Error codes are described in the exception section.
+ * @param[in] app_control The app control handle that is handed over in the\n
+ *                        app control callback function
+ * @param[in] operation The operation in the app control handle retrieved by\n
+ *                        app_control_get_operation()
+ * @return The payload data (appData) in the notification\n
+ *         NULL if the app is not launched by a push notification.
+ * @exception #PUSH_SERVICE_ERROR_NONE Successful
+ * @exception #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @exception #PUSH_SERVICE_ERROR_NO_DATA      Not launched by a notification
+ * @exception #PUSH_SERVICE_ERROR_OPERATION_FAILED Operation fail
+ * @exception #PUSH_SERVICE_ERROR_OUT_OF_MEMORY Out of memory
+ * @exception #PUSH_SERVICE_ERROR_NOT_CONNECTED Connection to the daemon failed
+ * @exception #PUSH_SERVICE_ERROR_PERMISSION_DENIED No push privilege
+ * @exception #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ * @see app_control_get_operation()
+ */
+char *push_service_app_control_to_noti_data(app_control_h app_control, char *operation);
+
+/**
+ * @brief Retrieves the notification that forcibly launched the app.
+ * @details When a notification arrives at the device with the "LAUNCH"\n
+ *                     option or a user clicks a notification in the quick panel,\n
+ *          the push daemon forcibly launches the app and delivers the\n
+ *          notification to the app as a bundle. This function returns\n
+ *                     the notificaiton from the bundle.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/push
+ * @remark This function must be called in the app control callback function.\n
+ *                You must release the notification using push_service_free_notification().
+ * @param[in] app_control The app control handle that is handed over in the\n
+ *                        app control callback function
+ * @param[in] operation The operation in the app control handle retrieved by\n
+ *                        app_control_get_operation()
+ * @param[out] noti    The handle of the notification that forcibly launched the app
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_SERVICE_ERROR_NONE Successful
+ * @retval #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_SERVICE_ERROR_NO_DATA Not launched by a notification
+ * @retval #PUSH_SERVICE_ERROR_OPERATION_FAILED Operation fail
+ * @retval #PUSH_SERVICE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_SERVICE_ERROR_NOT_CONNECTED Connection to the daemon failed
+ * @retval #PUSH_SERVICE_ERROR_PERMISSION_DENIED No push privilege
+ * @retval #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ * @see push_service_free_notificaiton()
+ * @see app_control_get_operation()
+ */
+int push_service_app_control_to_notification(app_control_h app_control, char *operation, push_service_notification_h *noti);
+
+/**
+ * @brief Gets notification data sent by the server.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @remarks You must release @a data using free().
+ * @param[in] notification The notification handle
+ * @param[out] data The notification data\n
+ *                  Set NULL if error but <I>PUSH_SERVICE_ERROR_INVALID_PARAMETER</I>
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_SERVICE_ERROR_NONE Successful
+ * @retval #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_SERVICE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_SERVICE_ERROR_NO_DATA No data available
+ * @retval #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ * @see push_service_notify_cb()
+ * @see push_service_request_unread_notification()
+ */
+int push_service_get_notification_data(push_service_notification_h notification, char **data);
+
+/**
+ * @brief Gets the notification message sent by the server.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @remark The <I>msg</I> must be released with free().\n
+ *                push_service_request_unread_notification() is\n
+ *                preferred to this API.
+ * @param[in] notification The notification handle
+ * @param[out] msg The notification message\n
+ *                  Set NULL if error but <I>PUSH_SERVICE_ERROR_INVALID_PARAMETER</I>
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_SERVICE_ERROR_NONE Successful
+ * @retval #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_SERVICE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_SERVICE_ERROR_NO_DATA No data available
+ * @retval #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ * @see push_service_notify_cb()
+ * @see push_service_get_unread_notification()
+ */
+int push_service_get_notification_message(push_service_notification_h notification,
+               char **msg);
+
+/**
+ * @brief Gets the received time of the notification message.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @param[in] notification The notification handle
+ * @param[out] received_time The received time of the notification message \n
+ *                           The @a received_time is based on UTC.
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_SERVICE_ERROR_NONE Successful
+ * @retval #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_SERVICE_ERROR_NO_DATA No data available
+ * @retval #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ * @see push_service_notify_cb()
+ * @see push_service_request_unread_notification()
+ */
+int push_service_get_notification_time(push_service_notification_h notification, long long int *received_time);
+
+/**
+ * @brief Gets the sender of the notification.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @remarks You must release @a sender using free().
+ * @param[in] notification The notification handle
+ * @param[out] sender The sender\n
+ *                  Set @c NULL if error but #PUSH_SERVICE_ERROR_INVALID_PARAMETER
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_SERVICE_ERROR_NONE Successful
+ * @retval #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_SERVICE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_SERVICE_ERROR_NO_DATA No data available
+ * @retval #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ * @see push_service_notify_cb()
+ * @see push_serivce_get_unread_notification()
+ */
+int push_service_get_notification_sender(push_service_notification_h notification,
+               char **sender);
+
+/**
+ * @brief Gets the session ID of the notification.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @remarks You must release @a session_info using free().
+ * @param[in] notification The notification handle
+ * @param[out] session_info The session ID\n
+ *                  Set @c NULL if error but #PUSH_SERVICE_ERROR_INVALID_PARAMETER
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_SERVICE_ERROR_NONE Successful
+ * @retval #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_SERVICE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_SERVICE_ERROR_NO_DATA No data available
+ * @retval #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ * @see push_service_notify_cb()
+ * @see push_service_request_unread_notification()
+ */
+int push_service_get_notification_session_info(push_service_notification_h notification,
+               char **session_info);
+
+
+/**
+ * @brief Gets the request ID assigned by the sender.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @remarks You must release @a request_id using free().
+ * @param[in] notification The notification handle
+ * @param[out] request_id The request ID\n
+ *                  Set @c NULL if error but #PUSH_SERVICE_ERROR_INVALID_PARAMETER
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_SERVICE_ERROR_NONE Successful
+ * @retval #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_SERVICE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_SERVICE_ERROR_NO_DATA No data available
+ * @retval #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ * @see push_service_notify_cb()
+ * @see push_service_request_unread_notification()
+ */
+int push_service_get_notification_request_id(push_service_notification_h notification,
+               char **request_id);
+
+/**
+ * @brief Gets the value in the type field of the notification
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @param[in] notification The notification handle
+ * @param[out] type The type value assigned by the sender
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_SERVICE_ERROR_NONE Successful
+ * @retval #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_SERVICE_ERROR_NO_DATA No data available
+ * @retval #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ * @see push_service_notify_cb()
+ * @see push_service_request_unread_notification()
+ */
+int push_service_get_notification_type(push_service_notification_h notification, int *type);
+
+/**
+ * @brief Gets an unread notification message from the push server.
+ * @details If an application receives an unread message with this method, the message is removed from the system. \n
+ *          This method can be called repeatedly until it returns <I>PUSH_SERVICE_ERROR_NO_DATA</I> \n
+ *          But, this method does NOT guarantee order and reliability of notification messages. \n
+ *          Some notification messages can be dropped when the system message queue is full.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @remarks It is recommended to use push_service_request_unread_notification().
+ * @remarks You must release @a noti using push_service_free_notification().
+ * @param[in] connection The connection handle to the push service
+ * @param[out] noti The notification handle
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_SERVICE_ERROR_NONE Successful
+ * @retval #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_SERVICE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_SERVICE_ERROR_NO_DATA No data available
+ * @retval #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ *
+ * @see push_service_get_notification_message()
+ * @see push_service_get_notification_time()
+ * @see push_service_get_notification_data()
+ */
+int push_service_get_unread_notification(push_service_connection_h connection,
+               push_service_notification_h *noti);
+
+/**
+ * @brief Requests unread notification messages to the push server.
+ * @details When the app wants to receive messages that arrived before it launched, this  \n
+ *          method should be called. Upon receiving ths request, the daemon sends messages\n
+ *          stored in its DB to the app. The notify_callback() method assigned in push_service_connect()\n
+ *          will be called when these messages arrive. No need to call this method multiple\n
+ *          times to receive multiple messages. This method does NOT guarantee order and\n
+ *          reliability of notification messages.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @remarks This method is preferred to push_service_get_unread_notification().
+ * @param[in] connection The connection handle to the push service
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_SERVICE_ERROR_NONE Successful
+ * @retval #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_SERVICE_ERROR_NOT_CONNECTED Not connected to the daemon
+ * @retval #PUSH_SERVICE_ERROR_OPERATION_FAILED Error when sending the request
+ * @retval #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ *
+ * @see push_service_get_unread_notification()
+ * @see push_service_connect()
+ */
+int push_service_request_unread_notification(push_service_connection_h connection);
+
+/**
+ * @brief Gets the registration ID in the <I>PUSH_SERVICE_STATE_REGISTERED</I> state.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @remarks You must release @a reg_id using free().
+ * @param[in] connection The connection handle to the push service
+ * @param[out] reg_id The registration ID\n
+ *                    Set NULL if error but <I>PUSH_SERVICE_ERROR_INVALID_PARAMETER</I>
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_SERVICE_ERROR_NONE Successful
+ * @retval #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_SERVICE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_SERVICE_ERROR_NO_DATA No registration ID available
+ * @retval #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ */
+int push_service_get_registration_id(push_service_connection_h connection, char **reg_id);
+
+/**
+ * @brief Frees the notification handle.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @remark The specific error code can be obtained using the get_last_result()\n
+ *                Error codes are described in the exception section.
+ * @param[in] noti The notification handle
+ * @exception #PUSH_SERVICE_ERROR_NONE Successful
+ * @exception #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @exception #PUSH_SERVICE_ERROR_NOT_SUPPORTED Not supported feature
+ */
+void push_service_free_notification(push_service_notification_h noti);
+
+/**
+ * @}
+ */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __PUSH_PUBLIC_LIB_H__ */
diff --git a/include/push.h b/include/push.h
new file mode 100644 (file)
index 0000000..c07c696
--- /dev/null
@@ -0,0 +1,459 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.
+ */
+
+#ifndef __PUSH_LIB_H__
+#define __PUSH_LIB_H__
+
+#include <app.h>
+#include <tizen_error.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @file push.h
+ */
+
+/**
+ * @internal
+ * @addtogroup CAPI_MESSAGING_PUSH_MODULE
+ * @{
+ */
+
+/**
+ * @brief Enumeration of error codes for push API.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ */
+typedef enum {
+       PUSH_ERROR_NONE = TIZEN_ERROR_NONE,   /**< Successful */
+       PUSH_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY,   /**< Out of memory */
+       PUSH_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER,   /**< Invalid parameter */
+       PUSH_ERROR_NOT_CONNECTED = TIZEN_ERROR_CONNECTION,  /**< Not connected */
+       PUSH_ERROR_NO_DATA = TIZEN_ERROR_NO_DATA,  /**< No data available */
+       PUSH_ERROR_OPERATION_FAILED = TIZEN_ERROR_UNKNOWN, /**< Internal operation failed */
+       PUSH_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< No privilege to access the push service */
+       PUSH_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< Push not supported */
+} push_error_e;
+
+/**
+ * @brief Enumeration of registration states.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ */
+typedef enum {
+       PUSH_STATE_REGISTERED,   /**< Registered */
+       PUSH_STATE_UNREGISTERED, /**< Unregistered */
+       PUSH_STATE_PROVISIONING_IPCHANGE, /**< To change the provisioning server IP */
+       PUSH_STATE_PING_CHANGE,       /**< Ping interval is changing */
+       PUSH_STATE_ERROR,       /**< Error */
+} push_state_e;
+
+/**
+ * @brief Enumeration of result.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ */
+typedef enum {
+       PUSH_RESULT_SUCCESS,  /**< Successful */
+       PUSH_RESULT_TIMEOUT,  /**< Request timed out */
+       PUSH_RESULT_SERVER_ERROR,  /**< Push server error */
+       PUSH_RESULT_SYSTEM_ERROR,  /**< System error */
+} push_result_e;
+
+/**
+ * @brief Connection to the push service handle.
+ */
+typedef struct push_connection_s *push_connection_h;
+
+/**
+ * @brief Notification delivered from the push server handle.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ */
+typedef struct push_notification_s *push_notification_h;
+
+/**
+ * @brief Called when the registration state is refreshed.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @remarks This callback will be invoked when the registration state is refreshed. \n
+ *          If the registration or deregistration has succeeded, then this state callback must be called. \n
+ *          In addition, the state can be changed if the push server deregisters the application.
+ * @param[in] state The registration state
+ * @param[in] err  The error message
+ * @param[in] user_data The user data passed to this callback
+ * @see push_connect()
+ */
+typedef void (*push_state_cb)(
+               push_state_e state, const char *err, void *user_data);
+
+/**
+ * @brief Called to handle a notification.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @param[in] notification A handle of the notification containing its payload \n
+ *                         The handle is available inside this callback only.
+ * @param[in] user_data The user data passed to this callback
+ * @see push_connect()
+ * @see push_get_notification_data()
+ */
+typedef void (*push_notify_cb)(
+               push_notification_h noti, void *user_data);
+
+/**
+ * @brief Called with the result of a registration/deregistration.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @param[in] result The registration/deregistration result
+ * @param[in] msg The result message from the push server,
+ *                otherwise @c NULL
+ * @param[in] user_data The user data passed to this callback
+ * @see push_register()
+ * @see push_deregister()
+ */
+typedef void (*push_result_cb)(push_result_e result, const char *msg, void *user_data);
+
+/**
+ * @brief Connects to the push service and sets callback functions.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/push
+ * @remarks If there is a connection between an application and the push service,
+ *          the notify callback passes the notification upon its arrival.\n
+ *          Otherwise, the push service posts a UI notification to alert users.\n
+ *          The connection should be freed using push_disconnect().
+ * @param[in] app_id The application ID
+ * @param[in] state_cb The state callback function
+ * @param[in] notify_cb The notify callback function
+ * @param[in] user_data The user data to pass to @a state_cb and @a notify_cb
+ * @param[out] connection The connection handle to the push service
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_ERROR_NONE Successful
+ * @retval #PUSH_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_ERROR_NOT_CONNECTED Connection to the daemon failed
+ * @retval #PUSH_ERROR_PERMISSION_DENIED No push privilege
+ * @pre There is no connection for the @a app_id to the push service.
+ * @post The state callback will be called to let you know the current
+ *       registration state immediately.
+ * @see push_disconnect()
+ */
+int push_connect(const char *push_app_id, push_state_cb state_callback,
+               push_notify_cb notify_callback, void *user_data,
+               push_connection_h *connection);
+
+/**
+ * @brief Closes the connection and releases all its resources.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @remarks If you call this function in the push callback functions,
+ *          it may cause your application to crash.
+ * @param[in] connection A connection to the push service handle
+ * @see push_connect()
+ */
+void push_disconnect(push_connection_h connection);
+
+/**
+ * @brief Registers an application to the push server.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @param[in] connection The connection handle to the push service
+ * @param[in] app_control An @ref CAPI_APP_CONTROL_MODULE handle to launch an application by\n
+ * an posted UI notification
+ * @param[in] result_callback  Result callback function
+ * @param[in] user_data  The user data to pass to @a result_cb
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_ERROR_NONE Successful
+ * @retval #PUSH_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_ERROR_NOT_CONNECTED No connection to the push service
+ * @retval #PUSH_ERROR_OPERATION_FAILED Operation failed
+ * @pre The application should be connected to the push service.
+ * @post For successful result, the state callback should be invoked.
+ * @see push_deregister()
+ */
+int push_register(push_connection_h connection,        app_control_h app_control,
+               push_result_cb result_callback, void *user_data);
+
+/**
+ * @brief Deregisters an application from the Push server.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @param[in] connection The connection handle to the push service
+ * @param[in] result_callback Result callback function
+ * @param[in] user_data The user data to pass to @a result_cb
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_ERROR_NONE Successful
+ * @retval #PUSH_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_ERROR_NOT_CONNECTED No connection to the push service
+ * @retval #PUSH_ERROR_OPERATION_FAILED Operation failed
+ * @pre The application should be connected to the push service.
+ * @post As a result, the state callback will be invoked.
+ * @see push_register()
+ */
+int push_deregister(push_connection_h connection, push_result_cb result_callback,
+               void *user_data);
+
+/**
+ * @brief Gets the payload data in the notification.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @remarks You must release @a data using free().
+ * @param[in] notification The notification handle
+ * @param[out] data The notification data\n
+ *                  Set @c NULL if error but #PUSH_ERROR_INVALID_PARAMETER
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_ERROR_NONE Successful
+ * @retval #PUSH_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_ERROR_NO_DATA No data available
+ * @see push_notify_cb()
+ * @see push_request_unread_notification()
+ */
+int push_get_notification_data(push_notification_h notification, char **data);
+
+/**
+ * @brief Gets the message in the notification.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @remarks You must release @a msg using free().
+ * @param[in] notification The notification handle
+ * @param[out] msg The notification message\n
+ *                  Set @c NULL if error but #PUSH_ERROR_INVALID_PARAMETER
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_ERROR_NONE Successful
+ * @retval #PUSH_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_ERROR_NO_DATA No data available
+ * @see push_notify_cb()
+ * @see push_request_unread_notification()
+ */
+int push_get_notification_message(push_notification_h notification,
+               char **msg);
+
+/**
+ * @brief Gets the received time of the notification.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @param[in] notification The notification handle
+ * @param[out] received_time The received time of the notification message\n
+ *                           The @a received_time is based on UTC.
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_ERROR_NONE Successful
+ * @retval #PUSH_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_ERROR_NO_DATA No data available
+ *
+ * @see push_notify_cb()
+ * @see push_request_unread_notification()
+ */
+int push_get_notification_time(push_notification_h notification, long long int *received_time);
+
+/**
+ * @brief Gets the sender of the notification.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @remarks You must release @a sender using free().
+ * @param[in] notification The notification handle
+ * @param[out] sender The sender\n
+ *                  Set @c NULL if error but #PUSH_ERROR_INVALID_PARAMETER
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_ERROR_NONE Successful
+ * @retval #PUSH_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_ERROR_NO_DATA No data available
+ * @see push_notify_cb()
+ * @see push_request_unread_notification()
+ */
+int push_get_notification_sender(push_notification_h notification,
+               char **sender);
+
+/**
+ * @brief Gets the session ID of the notification.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @remarks You must release @a session_info using free().
+ * @param[in] notification The notification handle
+ * @param[out] session_info The session ID\n
+ *                  Set @c NULL if error but #PUSH_ERROR_INVALID_PARAMETER
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_ERROR_NONE Successful
+ * @retval #PUSH_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_ERROR_NO_DATA No data available
+ * @see push_notify_cb()
+ * @see push_request_unread_notification()
+ */
+int push_get_notification_session_info(push_notification_h notification,
+               char **session_info);
+
+
+/**
+ * @brief Gets the request ID assigned by the sender.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @remarks You must release @a request_id using free().
+ * @param[in] notification The notification handle
+ * @param[out] request_id The request ID\n
+ *                  Set @c NULL if error but #PUSH_ERROR_INVALID_PARAMETER
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_ERROR_NONE Successful
+ * @retval #PUSH_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_ERROR_NO_DATA No data available
+ * @see push_notify_cb()
+ * @see push_request_unread_notification()
+ */
+int push_get_notification_request_id(push_notification_h notification,
+               char **request_id);
+
+/**
+ * @brief Gets the value in the type field of the notification
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @param[in] notification The notification handle
+ * @param[out] type The type value assigned by the sender
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_ERROR_NONE Successful
+ * @retval #PUSH_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_ERROR_NO_DATA No data available
+ * @see push_notify_cb()
+ * @see push_request_unread_notification()
+ */
+int push_get_notification_type(push_notification_h notification, int *type);
+
+/**
+ * @brief Gets an unread notification message from the push server.
+ *
+ * @details If an application receives an unread message with this method, the message is removed from the system.\n
+ *          This method can be called repeatedly until it returns #PUSH_ERROR_NO_DATA.\n
+ *          However, this method does NOT guarantee order and reliability of notification messages.\n
+ *          Some notification messages can be dropped when the system message queue is full.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @remarks This method will be deprecated.
+ * @remarks You must release @a noti using push_free_notification().
+ *                     push_request_unread_notification() is preferred to this API.
+ * @param[in] connection The connection handle to the push service
+ * @param[out] noti The notification handle
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_ERROR_NONE Successful
+ * @retval #PUSH_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_ERROR_NO_DATA No data available
+ *
+ * @see push_get_notification_message()
+ * @see push_get_notification_time()
+ * @see push_get_notification_data()
+ */
+int push_get_unread_notification(push_connection_h connection,
+               push_notification_h *noti);
+
+/**
+ * @brief Requests unread notification messages to the push server.
+ * @details When the app wants to receive messages that arrived before it launced, this  \n
+ *          method should be called. Upon receiving ths request, the daemon sends messages\n
+ *          stored in its DB to the app. The notify_callback() method assigned in push_connect()\n
+ *          will be called when these messages arrive. No need to call this method multiple\n
+ *          times to receive multiple messages. This method does NOT guarantee order and\n
+ *          reliability of notification messages.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @remark This method is preferred to push_get_unread_notification().
+ * @param[in] connection The connection handle to the push service
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_ERROR_NONE Successful
+ * @retval #PUSH_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_ERROR_NOT_CONNECTED Not connected to the daemon
+ * @retval #PUSH_ERROR_OPERATION_FAILED Error when sending the request
+ *
+ * @see push_get_unread_notification()
+ * @see push_connect()
+ */
+int push_request_unread_notification(push_connection_h connection);
+
+/**
+ * @brief Retrieves the notification with the notification token
+ * @details When the push service forcibly launches the application to\n
+                       deliver a notification, a unique token for the notification\n
+                       is generated and delivered to the application as a bundle.\n
+                       Using this API with this token, the application can get\n
+                       the notification.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/push
+ * @remark This function must be called in the app control callback function.\n
+ *                You must release the notification using push_free_notification().
+ * @param[in] noti_token The notification token received from the bundle
+ * @param[out] noti    The handle for the notification that launched this app
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_SERVICE_ERROR_NONE Successful
+ * @retval #PUSH_SERVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_SERVICE_ERROR_NO_DATA No notification for this token
+ * @retval #PUSH_SERVICE_ERROR_OPERATION_FAILED Operation fail
+ * @retval #PUSH_SERVICE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_SERVICE_ERROR_NOT_CONNECTED Connection to the daemon failed
+ * @retval #PUSH_SERVICE_ERROR_PERMISSION_DENIED No push privilege
+ * @see push_free_notificaiton()
+ * @see app_control_get_operation()
+ */
+int push_get_notification_using_token(const char *noti_token, push_notification_h *noti);
+
+
+/**
+ * @brief Gets the registration ID in the @a #PUSH_STATE_REGISTERED state.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @remarks You must release @a reg_id using free().
+ * @param[in] connection The connection handle to the push service
+ * @param[out] reg_id The registration ID
+ *                    Set @c NULL if error but #PUSH_ERROR_INVALID_PARAMETER
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #PUSH_ERROR_NONE Successful
+ * @retval #PUSH_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PUSH_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PUSH_ERROR_NO_DATA No registration ID available
+ */
+int push_get_registration_id(push_connection_h connection, char **reg_id);
+
+
+/**
+ * @brief Frees the notification handle.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/push
+ * @param[in] noti The notification handle
+ */
+void push_free_notification(push_notification_h noti);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __PUSH_LIB_H__ */
diff --git a/include/pushlog.h b/include/pushlog.h
new file mode 100644 (file)
index 0000000..ef64d20
--- /dev/null
@@ -0,0 +1,218 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.
+ */
+
+/*
+ * pushlog.h
+ *
+ *  Created on: Dec 17, 2012
+ *      Author: sampath
+ */
+
+#ifndef PUSHLOG_H_
+#define PUSHLOG_H_
+
+
+#include <errno.h>
+#include <app.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief Enumerations of error codes for push log service
+ */
+
+typedef enum
+{
+       PUSHLOG_ERROR_NONE = 1000,
+
+       // Server reply error code. This should be synchronized with local_msg.h
+       PUSHLOG_ERROR_SUCCESS=1000,
+       PUSHLOG_ERROR_SUCCESS_AND_NO_UPDATE=1010,       //this is not neccessary in client side. this rc will be replaced to 1000
+       PUSHLOG_ERROR_WRONG_REQUEST_FORMAT=2001,
+       PUSHLOG_ERROR_BLOCKED_DEVICE_TOKEN=2002,
+       PUSHLOG_ERROR_TOO_LONG_REQUEST_MSG=2003,
+       PUSHLOG_ERROR_EXCEEDED_DAILY_QUOTA=2004,
+       PUSHLOG_ERROR_FAIL_TO_AUTHENTICATE = 3001,
+
+       PUSHLOG_ERROR_WRONG_APP_ID = 4010,
+       PUSHLOG_ERROR_EMPTY_SERVICE = 4013,
+       PUSHLOG_ERROR_EMPTY_MESSAGES = 4014,
+
+       PUSHLOG_ERROR_NETWORK_NOT_AVAILABLE = -2,
+       PUSHLOG_ERROR_INVALID_REQUEST = -200,
+       PUSHLOG_ERROR_LOG_SIZE_OVER = -202,
+       PUSHLOG_ERROR_INVALID_LOG_STATUS = -204,
+       PUSHLOG_ERROR_ALREADY_REQUESTED = -205,
+       PUSHLOG_ERROR_LOGGING_FAIL = -206,
+       PUSHLOG_ERROR_REQUEST_TURN_OVER = -207,
+       PUSHLOG_ERROR_LOG_NOT_ACTIVATION = -208,
+
+       PUSHLOG_ERROR_INVALID_PARAMETER = -1000,
+       PUSHLOG_ERROR_OUT_OF_MEMORY,
+       PUSHLOG_ERROR_OPERATION_FAILED,
+       PUSHLOG_ERROR_CONNECT_FAIL,
+       PUSHLOG_ERROR_INTERNAL_SERVER_ERROR=8002,
+       PUSHLOG_ERROR_PANIC=9999
+} pushlog_error_e;
+
+
+/**
+ * @brief Enumerations of registration state
+ */
+typedef enum {
+       PUSHLOG_STATE_CONNECTED,   /**< Connected to SPPCD */
+       PUSHLOG_STATE_DISCONNECTED, /**< Disconnected from SPPCD */
+       PUSHLOG_STATE_READY,
+       PUSHLOG_STATE_ERROR,       /**< Error */
+} pushlog_state_e;
+
+
+/**
+ * @brief Push log service handle
+ */
+typedef struct pushlog_connection_s *pushlog_connection_h;
+
+
+/**
+ * @brief Push log data handle
+ */
+typedef void *pushlog_data;
+
+/**
+ * @brief Notification callback for logging service status
+ * @param[in] log_req_type status of logging service
+ * @param[in] result error code if any.
+ * PUSHLOG_ERROR_NONE indicates success.
+ * @param[in] user_data User data set with pushlog_connect()
+ * @see pushlog_connect()
+ */
+typedef void (*pushlog_state_cb)(
+               pushlog_state_e state, pushlog_error_e err,
+               void *user_data);
+
+/**
+ * @brief Notification callback invoked for pushlog_send_data() api response
+ * @param[in] log_id log id set while sending the data
+ * @param[in] result  error code if any.
+ * PUSHLOG_ERROR_NONE indicates success.
+ * @param[in] user_data User data set with pushlog_connect()
+ * @see pushlog_connect()
+ */
+typedef void (*pushlog_send_cb)(
+               const char *log_id, pushlog_error_e err,
+               void *user_data);
+
+/**
+ * @brief Connects to the push log service and sets callback functions
+ * @remarks The status of connection between an application and the push log service,
+ * is indicated with the callback push_log_status_cb.
+ * Connection should be freed with @ref pushlog_disconnect() by you.
+ * @param[in] status_cb connection status callback
+ * @param[in] send_cb callback to receive pushlog_send_data() response
+ * @param[in] user_data User data to pass to <I>state_cb</I> and <I>notify_cb</I>
+ * @param[in] service A @ref Service handle to launch an application by
+ * an posted UI notification
+ * @param[out] log_h  Handle of a connection to the push log service
+ * @return PUSHLOG_ERROR_NONE on success, otherwise a indicated by push_log_error_e.
+ * @see push_disconnect()
+ */
+pushlog_error_e pushlog_connect(const char *service_name,
+               pushlog_state_cb status_cb,
+               pushlog_send_cb send_cb,
+               void *cb_data, app_control_h service,
+               pushlog_connection_h *log_h);
+
+/**
+ * @brief Disconnect push log service
+ * @remarks If there is a connection between an application and the push service,
+ * the notify callback passes the notification upon its arrival.
+ * Otherwise, the push service posts a UI notification to alert users.
+ * Connection should be freed with @ref push_disconnect() by you.
+ * @param[in] log_h  Handle of a connection to the push log service
+ * @return PUSHLOG_ERROR_NONE on success, otherwise a indicated by push_log_error_e.
+ * @see pushlog_connect()
+ */
+pushlog_error_e pushlog_disconnect(pushlog_connection_h log_h);
+
+/**
+ * @brief Send log data to server
+ * @remarks
+ * @param[in] log_h  Handle of a connection to the push log service
+ * @param[in] log_prefix Data setting for prefix of log.
+ * @param[in] log_id log id
+ * @param[in] data_h Data to be sent
+ * @return PUSHLOG_ERROR_NONE on success, otherwise a indicated by push_log_error_e.
+ */
+pushlog_error_e pushlog_send(pushlog_connection_h log_h,
+               const char *log_prefix,
+               const char *log_id, pushlog_data data_h);
+
+
+/**
+ * @brief Get push log service's configurations
+ * @remarks
+ * @param[in] log_h Handle of a connection to the push log service
+ * @param[in] item_size
+ * @param[out] unlimited_sending
+ * @return PUSHLOG_ERROR_NONE on success, otherwise a indicated by push_log_error_e.
+ */
+pushlog_error_e pushlog_get_config(pushlog_connection_h log_h,
+               int *item_size, bool *unlimited_sending);
+
+/**
+ * @brief
+ * @remarks
+ * @param[in] log_h Handle of a connection to the push log service
+ * @param[in] state
+ * @return PUSHLOG_ERROR_NONE on success, otherwise a indicated by push_log_error_e.
+ */
+pushlog_error_e pushlog_get_state(pushlog_connection_h log_h,
+                               pushlog_state_e *state);
+
+/**
+ * @brief
+ * @remarks
+ * @param[in] data
+ * @return PUSHLOG_ERROR_NONE on success, otherwise a indicated by push_log_error_e.
+ */
+pushlog_error_e pushlog_create_data(pushlog_data *data);
+
+/**
+ * @brief
+ * @remarks
+ * @param[in] data
+ * @param[in] value
+ * @param[in] len
+ * @return PUSHLOG_ERROR_NONE on success, otherwise a indicated by push_log_error_e.
+ */
+pushlog_error_e pushlog_add_data(pushlog_data data, char *value, int len);
+
+/**
+ * @brief
+ * @remarks
+ * @param[in] data
+ * @return PUSHLOG_ERROR_NONE on success, otherwise a indicated by push_log_error_e.
+ */
+pushlog_error_e pushlog_free_data(pushlog_data data);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* PUSHLOG_H_ */
diff --git a/libpush.manifest b/libpush.manifest
new file mode 100644 (file)
index 0000000..f2b785f
--- /dev/null
@@ -0,0 +1,9 @@
+<manifest>
+       <request>
+               <domain name="_"/>
+       </request>
+        <assign>
+                <filesystem path="/usr/lib/libpush.so.0.2.12" label="_"/>
+                <filesystem path="/usr/lib/libpush.so.0" label="_"/>
+        </assign>
+</manifest>
diff --git a/packaging/init_push_DB.sh b/packaging/init_push_DB.sh
deleted file mode 100644 (file)
index ad3fbee..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-
-source /etc/tizen-platform.conf
-
-mkdir -p $TZ_SYS_DB
-sqlite3 $TZ_SYS_DB/.push.db "PRAGMA journal_mode = PERSIST; create table a(a); drop table a;" > /dev/null
-chown root:$TZ_SYS_USER_GROUP $TZ_SYS_DB/.push.db
-chown root:$TZ_SYS_USER_GROUP $TZ_SYS_DB/.push.db-journal
-chmod 660 $TZ_SYS_DB/.push.db
-chmod 660 $TZ_SYS_DB/.push.db-journal
-
-#chsmack -a 'push-service::db' /opt/dbspace/.push.db
-#chsmack -a 'push-service::db' /opt/dbspace/.push.db-journal
-
-users_gid=$(getent group $TZ_SYS_USER_GROUP | cut -f3 -d':')
-
-_VER="1"
-_DEV_TYPE="00000000"
-_DEV_INFO="device.model=ssltest"
-_IP_PV="gld.push.samsungosp.com"
-_PORT_PV=5223
-#ping interval {120,240,480,960,1920}
-_PING_INT=480
-_GRP="-g $users_gid"
-
-vconftool set -t string file/private/push-bin/version ${_VER} ${_GRP} -f
-vconftool set -t string file/private/push-bin/dev_type ${_DEV_TYPE} ${_GRP} -f
-vconftool set -t string file/private/push-bin/dev_info ${_DEV_INFO} ${_GRP} -f
-vconftool set -t string file/private/push-bin/ip_pv ${_IP_PV} ${_GRP} -f
-vconftool set -t int    file/private/push-bin/port_pv ${_PORT_PV} ${_GRP} -f
-vconftool set -t int    file/private/push-bin/ping_int ${_PING_INT} ${_GRP} -f
-vconftool set -t string file/private/push-bin/devtk "" ${_GRP} -f
-vconftool set -t string file/private/push-bin/ip_pri "" ${_GRP} -f
-vconftool set -t int    file/private/push-bin/port_pri -1 ${_GRP} -f
-vconftool set -t string file/private/push-bin/ip_sec "" ${_GRP} -f
-vconftool set -t int    file/private/push-bin/port_sec -1 ${_GRP} -f
diff --git a/packaging/libpush-devel.manifest b/packaging/libpush-devel.manifest
deleted file mode 100644 (file)
index c00c25b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<manifest>
-        <request>
-                <domain name="_" />
-        </request>
-</manifest>
diff --git a/packaging/libpush.manifest b/packaging/libpush.manifest
deleted file mode 100644 (file)
index c00c25b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<manifest>
-        <request>
-                <domain name="_" />
-        </request>
-</manifest>
diff --git a/packaging/push-bin.manifest b/packaging/push-bin.manifest
deleted file mode 100644 (file)
index c00c25b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<manifest>
-        <request>
-                <domain name="_" />
-        </request>
-</manifest>
diff --git a/packaging/push-tool.manifest b/packaging/push-tool.manifest
deleted file mode 100644 (file)
index c00c25b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<manifest>
-        <request>
-                <domain name="_" />
-        </request>
-</manifest>
diff --git a/packaging/push.manifest b/packaging/push.manifest
deleted file mode 100644 (file)
index c00c25b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<manifest>
-        <request>
-                <domain name="_" />
-        </request>
-</manifest>
index 1459fa1..d17f12c 100755 (executable)
+%global _support_weblog 0
+
 Name:       push
 Summary:    Push services and client library
-Version:    0.2.42
-Release:    3
-Group:      Application Framwork/Service
-License:    Flora
+Version:    0.4.09
+Release:    1
+Group:      Application Framework/Service
+License:    Apache-2.0
 Source0:    %{name}-%{version}.tar.gz
-Source1001:    libpush.manifest
-Source1002:    libpush-devel.manifest
-Source1003:    %{name}-bin.manifest
-Source1004:    %{name}-tool.manifest
-Source1005:    init_push_DB.sh
-BuildRequires: pkgconfig(libtzplatform-config)
-
+Source1:    pushd.service
+Requires(post): /sbin/ldconfig
+Requires(post): /usr/bin/sqlite3
+Requires(postun): /sbin/ldconfig
+
+%if %{_support_weblog}
+BuildRequires:  pkgconfig(zlib)
+BuildRequires:  pkgconfig(json-glib-1.0)
+%endif
 
 %description
 Push services and client library.
 
 %package -n libpush
 Summary:    Push service client library
-Group:      Application Framwork/Libraries
+Group:      Application Framework/Libraries
+Requires:   %{name}-bin = %{version}-%{release}
 Provides:   libpush.so.0
 
 %description -n libpush
 Push service client library
 
-
 %package -n libpush-devel
 Summary:    Push service client library (DEV)
-Group:      devel
+Group:      Development/Libraries
 Requires:   libpush = %{version}-%{release}
 Requires:   capi-appfw-application-devel
 
 %description -n libpush-devel
 Push service client library (DEV)
 
-
 %package bin
 Summary:    Push service daemon
-Group:      Application Framwork/Service
-Requires:   badge
+Group:      Application Framework/Service
+Requires(post): telephony-daemon
 
 %description bin
 Push service daemon
 
-
 %package tool
 Summary:    Push service tool
-Group:      devel
+Group:      Development/Tools
 Requires:   libpush = %{version}-%{release}
 Requires:   %{name}-bin = %{version}-%{release}
 
 %description tool
 Push service tool
 
-
-
 %prep
 %setup -q
-cp %{SOURCE1001} %{SOURCE1002} %{SOURCE1003} %{SOURCE1004} .
 
 %build
 
 %install
 rm -rf %{buildroot}
+mkdir -p %{buildroot}%{_libdir}/systemd/system/multi-user.target.wants
+install -m 0644 %{SOURCE1} %{buildroot}%{_libdir}/systemd/system/pushd.service
+ln -s ../pushd.service %{buildroot}%{_libdir}/systemd/system/multi-user.target.wants/pushd.service
 
+mkdir -p %{buildroot}%{_libdir}/systemd/user/tizen-middleware.target.wants
+cp %{SOURCE1} %{buildroot}%{_libdir}/systemd/user/pushd.service
+ln -s ../pushd.service %{buildroot}%{_libdir}/systemd/user/tizen-middleware.target.wants/
+
+mkdir -p %{buildroot}/usr/share/license
+cp -f LICENSE %{buildroot}/usr/share/license/%{name}
+
+%if %{_support_weblog}
+cp -a share/push/push_sslkey.pem %{buildroot}/usr/share/push/
+cp -a share/push/prd-dl-key.pem %{buildroot}/usr/share/push/
+%endif
 
-mkdir -p %{buildroot}%{_bindir}
-mkdir -p %{buildroot}%{_libdir}/pkgconfig
 mkdir -p %{buildroot}%{_includedir}
-mkdir -p %{buildroot}/usr/share/push
-mkdir -p %{buildroot}%{_sysconfdir}/init.d
-mkdir -p %{buildroot}%{_sysconfdir}/rc.d/{rc3.d,rc5.d}
-mkdir -p %{buildroot}/usr/lib/systemd/user/tizen-middleware.target.wants
+cp -a include/push-service.h %{buildroot}%{_includedir}
+cp -a include/push.h %{buildroot}%{_includedir}
+%if %{_support_weblog}
+       include/pushlog.h %{buildroot}%{_includedir}
+%endif
 
+mkdir -p %{buildroot}%{_libdir}/pkgconfig
+cp -a push.pc %{buildroot}%{_libdir}/pkgconfig/
+
+mkdir -p %{buildroot}/usr/share/push/
+mkdir -p %{buildroot}%{_bindir}
+
+%ifarch aarch64
+#libpush
+cp -a aarch64/lib64/libpush.so.* %{buildroot}%{_libdir}
+#libpush-devel
+cp -a aarch64/lib64/libpush.so %{buildroot}%{_libdir}
+#push-bin
+cp -a aarch64/bin/pushd %{buildroot}%{_bindir}
+cp -a aarch64/bin/push_tool %{buildroot}%{_bindir}
+cp -a aarch64/share/push/*.cer %{buildroot}/usr/share/push/
+%if %{_support_weblog}
+       aarch64/bin/pushlog_tool
+%endif
+%endif
 
 %ifarch %{arm}
 #libpush
 cp -a arm/lib/libpush.so.* %{buildroot}%{_libdir}
-#libpush-devel
-cp -a arm/include/push.h %{buildroot}%{_includedir}
-cp -a arm/lib/pkgconfig/push.pc %{buildroot}%{_libdir}/pkgconfig/push.pc
+#libpus-devel
 cp -a arm/lib/libpush.so %{buildroot}%{_libdir}
 #push-bin
 cp -a arm/bin/pushd %{buildroot}%{_bindir}
-cp -a arm/share/push/PushServerTrust.cer %{buildroot}/usr/share/push/PushServerTrust.cer
-cp -a arm/etc/init.d/pushd %{buildroot}%{_sysconfdir}/init.d/pushd
-cp -a arm/etc/rc.d/rc3.d/S90pushd %{buildroot}%{_sysconfdir}/rc.d/rc3.d/S90pushd
-cp -a arm/etc/rc.d/rc5.d/S90pushd %{buildroot}%{_sysconfdir}/rc.d/rc5.d/S90pushd
-cp -a arm/lib/systemd/user/pushd.service %{buildroot}%{_libdir}/systemd/user/pushd.service
-cp -a arm/lib/systemd/user/tizen-middleware.target.wants/pushd.service \
-    %{buildroot}%{_libdir}/systemd/user/tizen-middleware.target.wants/pushd.service
-#push-tool
 cp -a arm/bin/push_tool %{buildroot}%{_bindir}
-%else
+cp -a arm/share/push/*.cer %{buildroot}/usr/share/push/
+%if %{_support_weblog}
+       arm/bin/pushlog_tool
+%endif
+%endif
+
+%ifarch %{ix86} x86_64
 #libpush
 cp -a x86/lib/libpush.so.* %{buildroot}%{_libdir}
-#libpush-devel
-cp -a x86/include/push.h %{buildroot}%{_includedir}
-cp -a x86/lib/pkgconfig/push.pc %{buildroot}%{_libdir}/pkgconfig/push.pc
+#libpus-devel
 cp -a x86/lib/libpush.so %{buildroot}%{_libdir}
 #push-bin
 cp -a x86/bin/pushd %{buildroot}%{_bindir}
-cp -a x86/share/push/PushServerTrust.cer %{buildroot}/usr/share/push/PushServerTrust.cer
-cp -a x86/etc/init.d/pushd %{buildroot}%{_sysconfdir}/init.d/pushd
-cp -a x86/etc/rc.d/rc3.d/S90pushd %{buildroot}%{_sysconfdir}/rc.d/rc3.d/S90pushd
-cp -a x86/etc/rc.d/rc5.d/S90pushd %{buildroot}%{_sysconfdir}/rc.d/rc5.d/S90pushd
-cp -a x86/lib/systemd/user/pushd.service %{buildroot}/usr/lib/systemd/user/pushd.service
-cp -a x86/lib/systemd/user/tizen-middleware.target.wants/pushd.service \
-    %{buildroot}/usr/lib/systemd/user/tizen-middleware.target.wants/pushd.service
-#push-tool
 cp -a x86/bin/push_tool %{buildroot}%{_bindir}
+cp -a x86/share/push/*.cer %{buildroot}/usr/share/push/
+%if %{_support_weblog}
+       x86/bin/pushlog_tool
+%endif
 %endif
 
-#if [ -f /usr/lib/rpm-plugins/msm.so ]
-#then
-#      chsmack -a "_" -e "_" %{buildroot}/etc/init.d/pushd
-#      chsmack -a "_" -e "_" %{buildroot}/etc/rc.d/rc3.d/S90pushd
-#      chsmack -a "_" -e "_" %{buildroot}/etc/rc.d/rc5.d/S90pushd
-#fi
-
-install -D -m 0750 %{SOURCE1005} %{buildroot}%{_datadir}/%{name}/init_push_DB.sh
 
 %post bin
-%{_datadir}/%{name}/init_push_DB.sh
+mkdir -p /opt/usr/dbspace
+sqlite3 /opt/usr/dbspace/.push.db "PRAGMA journal_mode = PERSIST; create table a(a); drop table a;" > /dev/null
+chown system:5000 /opt/usr/dbspace/.push.db
+chown system:5000 /opt/usr/dbspace/.push.db-journal
+chmod 660 /opt/usr/dbspace/.push.db
+chmod 660 /opt/usr/dbspace/.push.db-journal
+
+chsmack -a 'push-service::db' /opt/usr/dbspace/.push.db
+chsmack -a 'push-service::db' /opt/usr/dbspace/.push.db-journal
 
 %post -n libpush
 /sbin/ldconfig
 
 %postun -n libpush -p /sbin/ldconfig
 
-
 %files -n libpush
 %manifest libpush.manifest
-%attr(644,-,-) %{_libdir}/libpush.so.*
+%attr(644,system,system)%{_libdir}/libpush.so.*
 
 %files -n libpush-devel
-%manifest libpush-devel.manifest
-%attr(644,-,-) %{_includedir}/*.h
+%{_includedir}/*.h
 %{_libdir}/pkgconfig/*.pc
 %{_libdir}/libpush.so
 
 %files bin
-%manifest %{name}-bin.manifest
-%{_bindir}/pushd
-/usr/share/push/*.cer
-/etc/init.d/pushd
-/etc/rc.d/rc3.d/S90pushd
-/etc/rc.d/rc5.d/S90pushd
-/usr/lib/systemd/user/pushd.service
-/usr/lib/systemd/user/tizen-middleware.target.wants/pushd.service
-%{_datadir}/%{name}/init_push_DB.sh
+%manifest push-bin.manifest
+%attr(755,system,system)%{_bindir}/pushd
+%attr(644,system,system)/usr/share/push/*.cer
+%attr(644,system,system)/usr/share/license/%{name}
+
+# This is a certificate file to access to logging server by HTTPS.
+%if %{_support_weblog}
+%attr(644,system,system)/usr/share/push/push_sslkey.pem
+%attr(644,system,system)/usr/share/push/prd-dl-key.pem
+%endif
+
+%attr(755,system,system)%{_libdir}/systemd/user/pushd.service
+%attr(755,system,system)%{_libdir}/systemd/user/tizen-middleware.target.wants/pushd.service
+%attr(755,system,system)%{_libdir}/systemd/system/multi-user.target.wants/pushd.service
+%attr(755,system,system)%{_libdir}/systemd/system/pushd.service
 
 %files tool
-%manifest %{name}-tool.manifest
+%manifest push-tool.manifest
 %{_bindir}/push_tool
 
+%if %{_support_weblog}
+       %{_bindir}/pushlog_tool
+%endif
+
 %changelog
+* Sat Nov 3 2012 Jooseok Park <jooseok.park@samsung.com> - 0.2.26
+- Prevent bug fixed(out-of bounds read, dead code,..)
 * Mon Oct 22 2012 Jooseok Park <jooseok.park@samsung.com> - 0.2.25
 - bundle null check added & protobuf null check added
 * Wed Sep 19 2012 Jooseok Park <jooseok.park@samsung.com> - 0.2.24
old mode 100644 (file)
new mode 100755 (executable)
index 0603ebf..b130092
@@ -1,9 +1,15 @@
 [Unit]
-Description=Pushd service
+Description=Push daemon
+After=tizen-runtime.target
 
 [Service]
 Type=forking
 ExecStart=/usr/bin/pushd
+Restart=always
+MemoryLimit=10M
+User=system
+Group=system
+SmackProcessLabel=push-service
 
 [Install]
-WantedBy=tizen-middleware.target
+WantedBy=multi-user.target
diff --git a/push-bin.manifest b/push-bin.manifest
new file mode 100644 (file)
index 0000000..e362f9a
--- /dev/null
@@ -0,0 +1,52 @@
+<manifest>
+       <define>
+               <domain name="push-service" policy="restricted" plist="push-bin"/>
+               <request>
+                       <smack request="system::use_internet" type="rw"/>
+                       <smack request="sys-assert::core" type="rwxat"/>
+                       <smack request="telephony_framework::api_modem" type="r"/>
+                       <smack request="telephony_framework::api_sim" type="r"/>
+                       <smack request="telephony_framework::api_network" type="r"/>
+                       <smack request="telephony_framework::properties" type="rw"/>
+                       <smack request="pkgmgr::info" type = "r"/>
+                       <smack request="pkgmgr::db" type = "rlx"/>
+                       <smack request="data-provider-master::notification" type="rw"/>
+                       <smack request="data-provider-master::notification.client" type="w"/>
+                       <smack request="data-provider-master::badge" type="rw"/>
+                       <smack request="data-provider-master::badge.client" type="w"/>
+                       <smack request="connman" type="rw" />
+                       <smack request="connman::get" type="rw" />
+                       <smack request="connman::profile" type="rw" />
+                       <smack request="net-config" type="rw" />
+                       <smack request="deviced::display" type="rw" />
+                       <smack request="secure-storage" type="rw" />
+                       <smack request="security-server::api-privilege-by-pid" type="w"/>
+                       <smack request="alarm-server::alarm" type = "w"/>
+                       <smack request="device::app_logging" type = "rw"/>
+                       <smack request="device::sys_logging" type = "rw"/>
+                       <smack request="push-service::db" type = "rw"/>
+                       <smack request="system::vconf" type = "rwxat"/>
+                       <smack request="system::vconf_inhouse" type = "rl"/>
+                       <smack request="system::vconf_network" type = "rl"/>
+                       <smack request="system::vconf_setting" type = "rl"/>
+                       <smack request="badge::db" type = "rl"/>
+                       <smack request="aul::launch" type = "x"/>
+               </request>
+               <permit>
+                       <smack permit="system::use_internet" type="w"/>
+                       <smack permit="dbus" type="rx"/>
+               </permit>
+               <provide>
+                       <label name="push-service::db"/>
+                       <label name="push-service::push"/>
+               </provide>
+       </define>
+       <request>
+               <domain name="push-service"/>
+       </request>
+       <assign>
+               <filesystem path="/etc/init.d/pushd" label="_" exec_label="none"/>
+               <filesystem path="/etc/rc.d/rc3.d/S90pushd" label="_" exec_label="none"/>
+               <filesystem path="/etc/rc.d/rc5.d/S90pushd" label="_" exec_label="none"/>
+       </assign>
+</manifest>
diff --git a/push-tool.manifest b/push-tool.manifest
new file mode 100644 (file)
index 0000000..8773fef
--- /dev/null
@@ -0,0 +1,9 @@
+<manifest>
+       <define>
+               <domain name="push-tool" policy="restricted" plist="push-tool"/>
+               <request>
+                       <smack request="push-service::db" type="rw"/>
+                       <smack request="push-service::push" type="w"/>
+               </request>
+       </define>
+</manifest>
similarity index 99%
rename from arm/lib/pkgconfig/push.pc
rename to push.pc
index b7919a2..ed29ff7 100644 (file)
+++ b/push.pc
@@ -11,4 +11,3 @@ Version: 0.2.12
 Requires: capi-appfw-application
 Libs: -L${libdir} -lpush
 Cflags: -I${includedir}
-
diff --git a/share/push/prd-dl-key.pem b/share/push/prd-dl-key.pem
new file mode 100644 (file)
index 0000000..34539ef
--- /dev/null
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----\r
+MIIDTDCCArWgAwIBAgIJAIPbVe1K1TpOMA0GCSqGSIb3DQEBBQUAMIG9MQswCQYD\r
+VQQGEwJLUjEUMBIGA1UECAwLR3llb25nZ2ktZG8xDjAMBgNVBAcMBVN1d29uMSUw\r
+IwYDVQQKDBxTQU1TVU5HIEVMRUNUUk9OSUNTIENPLiwgTFREMRswGQYDVQQLDBJQ\r
+bGF0Zm9ybSBkZXYgdGVhbS4xIjAgBgNVBAMMGSouYmlnZGF0YS5zc3Auc2Ftc3Vu\r
+Zy5jb20xIDAeBgkqhkiG9w0BCQEWEWFkbWluQHNhbXN1bmcuY29tMCAXDTEzMDUy\r
+OTA3MjcyOVoYDzIwNjMwNTE3MDcyNzI5WjCBvTELMAkGA1UEBhMCS1IxFDASBgNV\r
+BAgMC0d5ZW9uZ2dpLWRvMQ4wDAYDVQQHDAVTdXdvbjElMCMGA1UECgwcU0FNU1VO\r
+RyBFTEVDVFJPTklDUyBDTy4sIExURDEbMBkGA1UECwwSUGxhdGZvcm0gZGV2IHRl\r
+YW0uMSIwIAYDVQQDDBkqLmJpZ2RhdGEuc3NwLnNhbXN1bmcuY29tMSAwHgYJKoZI\r
+hvcNAQkBFhFhZG1pbkBzYW1zdW5nLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw\r
+gYkCgYEAlGwP7mw/gHSM1/xaO2xVIv9QSQpAeP6bzc4JhLChTcbpyeXHfZf24em/\r
+pu8ocIDrO6AtEWuLmiHhdo1dWwEOjn3uZkdzmZv3DCanLgM+QRcU7EyhwAVXns6P\r
+YDeUyU896QJZh1jnaiD2Wi9tNJBCoTOqb0u6sQZRuhtOg9Sti4ECAwEAAaNQME4w\r
+HQYDVR0OBBYEFFuRWZUawqsPc2NKTbkxgp1LqtvFMB8GA1UdIwQYMBaAFFuRWZUa\r
+wqsPc2NKTbkxgp1LqtvFMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEA\r
+LAxLc9bZ8Hz7al2INLbqjSZ80rs1rYS0vCSUpNu2wU+AacgK5Fj6/5LlFoalT96Y\r
+xpqtt9ojYsTFrQPHv+JeHpvd+NlHHZASseXq/2IevcczNozP9i5ipXTJPX8eEMwo\r
+IvaV7mE5TU47OXVbpnk9t7oUPAoptByDMUKfbLTUol0=\r
+-----END CERTIFICATE-----\r
diff --git a/share/push/push_sslkey.pem b/share/push/push_sslkey.pem
new file mode 100644 (file)
index 0000000..af076aa
--- /dev/null
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----\r
+MIICWwIBAAKBgQCUbA/ubD+AdIzX/Fo7bFUi/1BJCkB4/pvNzgmEsKFNxunJ5cd9\r
+l/bh6b+m7yhwgOs7oC0Ra4uaIeF2jV1bAQ6Ofe5mR3OZm/cMJqcuAz5BFxTsTKHA\r
+BVeezo9gN5TJTz3pAlmHWOdqIPZaL200kEKhM6pvS7qxBlG6G06D1K2LgQIDAQAB\r
+AoGAbl0cS5G6dm4z/Lbs8ZrQg8GNlYJGBrJscFBwy3X7u7XZSgPOnxlMvxftJthX\r
+HbD/OcsVOArcN7RRzrG3ZWAXzcL5ooSQzRuyQz/YyRiVT3fowSBMlj5xnSHayUN+\r
+3BMU2ngbL+AnOFq7YkMKaXXbj07uLKZJpvDotRC6raQUBAECQQDD4r44NUx111N8\r
+h0vF6bauo7UEFPfIoV4UxtoVISsD3CoyywSHYzTKdYNQeC9SqAw6xL+4qRjgjCXF\r
+ExlhiuVxAkEAwfh2wHLYhlhgrCmg92L/S9ewu3s+e1TBWS/+/RxwKTXB2kO56uz/\r
+OC7c444uRwMiy9EYbSY+WJUyiQrn1xW/EQJAfRiHvCOlkbgSk/tfU6Qey0a26kVt\r
+vE35ZDFdwpKtAskOleN7H+8mHomPc8tdBV9WeA2AFrC+t2ApGsNIuTdXsQJAaJum\r
+74MAYvOmrzKELOam6DAakAGXYMwEuiS4T6jWlGL5eMytp5TIz3P2jIJRUtrOGT1a\r
+/wJw/TT5XA8VmVmRAQJAauTkUlAHf3uCUI8/0DpIBcTFuk30hjUqIn3h/xj20wtr\r
+YfAuZ8RtP4LQAJmcMOREiZ/+DQJkUDH3O9bA0VhnHg==\r
+-----END RSA PRIVATE KEY-----\r
index 37d4a83..659147e 100755 (executable)
Binary files a/x86/bin/push_tool and b/x86/bin/push_tool differ
index 161e1e3..d763779 100755 (executable)
Binary files a/x86/bin/pushd and b/x86/bin/pushd differ
diff --git a/x86/etc/init.d/pushd b/x86/etc/init.d/pushd
deleted file mode 100755 (executable)
index 09f9681..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/sh
-
-DESC="Push service daemon"
-NAME=pushd
-DAEMON=/usr/bin/$NAME
-SCRIPTNAME=/etc/init.d/$NAME
-
-[ -x "$DAEMON" ] || exit 0
-
-do_start() {
-       PID=`pidof $NAME`
-       [ -z "$PID" ] || return 1
-       $DAEMON
-       RETVAL=$?
-       return "$RETVAL"
-}
-
-do_stop() {
-       PID=`pidof $NAME`
-       if [ -n "$PID" ]; then
-               kill $PID
-       fi
-       return 0
-}
-
-prt_res() {
-       RETVAL=$1
-
-       case "$RETVAL" in
-               0|1)
-                       echo "... done."
-                       RETVAL=0
-                       ;;
-               *)
-                       echo "... failed!"
-                       RETVAL=1
-                       ;;
-       esac
-
-       return $RETVAL
-}
-
-case "$1" in
-       start)
-               echo "Starting $DESC" "$NAME"
-               do_start
-               prt_res $?
-               ;;
-       stop)
-               echo "Stopping $DESC" "$NAME"
-               do_stop
-               prt_res $?
-               ;;
-       *)
-               echo "Usage: $SCRIPTNAME {start|stop}" >&2
-               exit 3
-               ;;
-esac
-
diff --git a/x86/etc/rc.d/rc3.d/S90pushd b/x86/etc/rc.d/rc3.d/S90pushd
deleted file mode 120000 (symlink)
index 70c8ff9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/etc/init.d/pushd
\ No newline at end of file
diff --git a/x86/etc/rc.d/rc5.d/S90pushd b/x86/etc/rc.d/rc5.d/S90pushd
deleted file mode 120000 (symlink)
index 70c8ff9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/etc/init.d/pushd
\ No newline at end of file
diff --git a/x86/include/push.h b/x86/include/push.h
deleted file mode 100755 (executable)
index 882d8a9..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-//
-// Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Flora License, Version 1.1 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://floralicense.org/license/
-//
-// 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.
-//
-
-#ifndef __PUSH_LIB_H__
-#define __PUSH_LIB_H__
-
-#include <errno.h>
-#include <app.h>
-
-#define PUSH_APP_DATA_KEY  "http://tizen.org/appcontrol/data/push/appdata"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @addtogroup CAPI_MESSAGING_PUSH_MODULE
- * @{
- */
-
-/**
- * @file push.h
- * @ingroup CAPI_MESSAGING_FRAMEWORK
- * @brief Support to receive push notifications
- */
-
-/**
- * @brief Enumerations of error codes for push API
- */
-typedef enum {
-       PUSH_ERROR_NONE = 0,   /**< Successful */
-       PUSH_ERROR_OUT_OF_MEMORY = -ENOMEM,   /**< Out of memory */
-       PUSH_ERROR_INVALID_PARAMETER = -EINVAL,   /**< Invalid parameter */
-       PUSH_ERROR_NOT_CONNECTED = -ENOTCONN,  /**< Not connected */
-       PUSH_ERROR_NO_DATA = -ENODATA,  /**< No data available */
-       PUSH_ERROR_OPERATION_FAILED = -0x00004300, /**< Internal operation failed */
-} push_error_e;
-
-/**
- * @brief Enumerations of registration state
- */
-typedef enum {
-       PUSH_STATE_REGISTERED,   /**< Registred */
-       PUSH_STATE_UNREGISTERED, /**< Unregistered */
-       PUSH_STATE_ERROR,       /**< Error */
-} push_state_e;
-
-/**
- * @brief Enumerations of result
- */
-typedef enum {
-       PUSH_RESULT_SUCCESS,  /**< Successful */
-       PUSH_RESULT_TIMEOUT,  /**< Request timed out */
-       PUSH_RESULT_SERVER_ERROR,  /**< Push server error */
-       PUSH_RESULT_SYSTEM_ERROR,  /**< System error */
-} push_result_e;
-
-/**
- * @brief Handle of a connection to the push service
- */
-typedef struct push_connection_s *push_connection_h;
-
-/**
- * @brief Handle of a notification delivered from the push server
- */
-typedef struct push_notification_s *push_notification_h;
-
-/**
- * @brief State callback
- * @remarks This callback will be invoked when the regisration state is
- * refreshed. If the registration or degistration has been succeeded,
- * then this state callback must be called. In addition, the state
- * can be changed if the push server deregisters the application.
- * @param[in] state Registration state
- * @param[in] err  Error message
- * @param[in] user_data User data passed to this callback
- * @see push_connect()
- */
-typedef void (*push_state_cb)(
-               push_state_e state, const char *err, void *user_data);
-
-/**
- * @brief Notifcation callback
- * @param[in] notification A handle of notification containing its payload.
- * The handle is available inside this callback only.
- * @param[in] user_data User data passed to this callback
- * @see push_connect(), push_get_notification_data()
- */
-typedef void (*push_notify_cb)(
-               push_notification_h noti, void *user_data);
-
-/**
- * @brief Result callback
- * @param[in] result Registration/deregistration result
- * @param[in] msg Result message from the push server or NULL
- * @param[in] user_data User data passed to this callback
- * @see push_register(), push_deregister()
- */
-typedef void (*push_result_cb)(push_result_e result, const char *msg, void *user_data);
-
-/**
- * @brief Connects to the push service and sets callback functions
- * @remarks If there is a connection between an application and the push service,
- * the notify callback passes the notification upon its arrival.
- * Otherwise, the push service posts a UI notification to alert users.
- * Connection should be freed with @ref push_disconnect() by you.
- * @param[in] app_id The application ID
- * @param[in] state_cb State callback function
- * @param[in] notify_cb Notify callback function
- * @param[in] user_data User data to pass to <I>state_cb</I> and <I>notify_cb</I>
- * @param[out] connection The connection handle to the push service
- * @return 0 on success, otherwise a negative error value.
- * @retval PUSH_ERROR_NONE Successful
- * @retval PUSH_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval PUSH_ERROR_OUT_OF_MEMORY Out of memory
- * @retval PUSH_ERROR_OPERATION_FAILED Operation failed
- * @pre There is no connection for the <I>app_id</I> to the push service
- * @post The state callback will be called to let you know the current
- * registration state immediately.
- * @see push_disconnect()
- */
-int push_connect(const char *app_id, push_state_cb state_callback,
-               push_notify_cb notify_callback, void *user_data,
-               push_connection_h *connection);
-
-/**
- * @brief Closes the connection and releases all its resources
- * @remarks If you call this function in the push callback functions,
- *          it may cause your application crash.
- * @param[in] connection Handle of a connection to the push service
- * @see push_connect()
- */
-void push_disconnect(push_connection_h connection);
-
-/**
- * @brief Registers an application to the push server
- * @param[in] connection The connection handle to the push service
- * @param[in] service A @ref Service handle to launch an application by
- * an posted UI notification
- * @param[in] result_cb  Result callback function
- * @param[in] user_data  User data to pass to <I>result_cb</I>
- * @return 0 on success, otherwise a negative error value.
- * @retval PUSH_ERROR_NONE Successful
- * @retval PUSH_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval PUSH_ERROR_OUT_OF_MEMORY Out of memory
- * @retval PUSH_ERROR_NOT_CONNECTED No connection to the push service
- * @retval PUSH_ERROR_OPERATION_FAILED Operation failed
- * @pre The application should be connected to the push service
- * @post For successful result, the state callback should be invoked
- * @see push_deregister()
- */
-int push_register(push_connection_h connection,        service_h service,
-               push_result_cb result_callback, void *user_data);
-
-/**
- * @brief Deregisters an application from the Push server
- * @param[in] connection The connection handle to the push service
- * @param[in] result_cb Result callback function
- * @param[in] user_data User data to pass to <I>result_cb</I>
- * @return 0 on success, otherwise a negative error value.
- * @retval PUSH_ERROR_NONE Successful
- * @retval PUSH_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval PUSH_ERROR_OUT_OF_MEMORY Out of memory
- * @retval PUSH_ERROR_NOT_CONNECTED No connection to the push service
- * @retval PUSH_ERROR_OPERATION_FAILED Operation failed
- * @pre The application should be connected to the push service
- * @post In result, the state callback will be invoked
- * @see push_register()
- */
-int push_deregister(push_connection_h connection, push_result_cb callback,
-               void *user_data);
-
-/**
- * @brief Gets notification data which its server sent
- * @remark The <I>data</I> must be released with free() by you
- * @param[in] notification The notification handle
- * @param[out] data The notification data\n
- *                  Set NULL if error but <I>PUSH_ERROR_INVALID_PARAMETER</I>
- * @return 0 on success, otherwise a negative error value.
- * @retval PUSH_ERROR_NONE Successful
- * @retval PUSH_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval PUSH_ERROR_OUT_OF_MEMORY Out of memory
- * @retval PUSH_ERROR_NO_DATA No data available
- * @see push_notify_cb()
- * @see push_get_unread_notification()
- */
-int push_get_notification_data(push_notification_h notification, char **data);
-
-
-/**
- * @brief Gets the notification message which its server sent
- * @remark The <I>msg</I> must be released with free() by you
- * @param[in] notification The notification handle
- * @param[out] data The notification message\n
- *                  Set NULL if error but <I>PUSH_ERROR_INVALID_PARAMETER</I>
- * @return 0 on success, otherwise a negative error value.
- * @retval PUSH_ERROR_NONE Successful
- * @retval PUSH_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval PUSH_ERROR_OUT_OF_MEMORY Out of memory
- * @retval PUSH_ERROR_NO_DATA No data available
- * @see push_notify_cb()
- * @see push_get_unread_notification()
- */
-int push_get_notification_message(push_notification_h notification,
-               char **msg);
-
-/**
- * @brief Gets the received time of the notification message
- *
- * @param[in] notification The notification handle
- * @param[out] received_time The received time of the notification message. \n
- *                           The @a received_time is based on UTC.
- * @return 0 on success, otherwise a negative error value.
- * @retval PUSH_ERROR_NONE Successful
- * @retval PUSH_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval PUSH_ERROR_NO_DATA No data available
- *
- * @see push_notify_cb()
- * @see push_get_unread_notification()
- */
-int push_get_notification_time(push_notification_h notification, long long int *received_time);
-
-/**
- * @brief Gets an unread notification message from the push server
- *
- * @remark This method will be deprecated.
- * @remark @a noti must be released with push_free_notification() by you
- *
- * @details If an application receives an unread message with this method, the message is removed from the system. \n
- *          This method can be called repeatedly until it returns <I>PUSH_ERROR_NO_DATA</I> \n
- *          But, this method does NOT guarantee order and reliability of notification messages. \n
- *          Some notification messages can be dropped when the system message queue is full.
- *
- * @param[in] connection The connection handle to the push service
- * @param[out] noti The notification handle
- * @return 0 on success, otherwise a negative error value.
- * @retval PUSH_ERROR_NONE Successful
- * @retval PUSH_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval PUSH_ERROR_OUT_OF_MEMORY Out of memory
- * @retval PUSH_ERROR_NO_DATA No data available
- *
- * @see push_get_notification_message()
- * @see push_get_notification_time()
- * @see push_get_notification_data()
- */
-int push_get_unread_notification(push_connection_h connection,
-               push_notification_h *noti);
-
-
-/**
- * @brief Gets the registration ID in <I>PUSH_STATE_REGISTERED</I> state
- * @remark The <I>reg_id</I> must be released with free() by you
- * @param[in] connection The connection handle to the push service
- * @param[out] reg_id The registration ID\n
- *                    Set NULL if error but <I>PUSH_ERROR_INVALID_PARAMETER</I>
- * @return 0 on success, otherwise a negative error value
- * @retval PUSH_ERROR_NONE Successful
- * @retval PUSH_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval PUSH_ERROR_OUT_OF_MEMORY Out of memory
- * @retval PUSH_ERROR_NO_DATA No registration ID available
- */
-int push_get_registration_id(push_connection_h connection, char **reg_id);
-
-
-/**
- * @brief Frees the notification handle
- * @param[in] noti The notification handle
- */
-void push_free_notification(push_notification_h noti);
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __PUSH_LIB_H__ */
index 2ec3cdd..a044c9b 100644 (file)
Binary files a/x86/lib/libpush.so.0.2.12 and b/x86/lib/libpush.so.0.2.12 differ
diff --git a/x86/lib/pkgconfig/push.pc b/x86/lib/pkgconfig/push.pc
deleted file mode 100644 (file)
index b7919a2..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# Package Information for pkg-config
-
-prefix=/usr
-exec_prefix=${prefix}
-libdir=${prefix}/lib
-includedir=${prefix}/include
-
-Name: push
-Description: Push service client library
-Version: 0.2.12
-Requires: capi-appfw-application
-Libs: -L${libdir} -lpush
-Cflags: -I${includedir}
-
diff --git a/x86/lib/systemd/user/pushd.service b/x86/lib/systemd/user/pushd.service
deleted file mode 100644 (file)
index 0603ebf..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-[Unit]
-Description=Pushd service
-
-[Service]
-Type=forking
-ExecStart=/usr/bin/pushd
-
-[Install]
-WantedBy=tizen-middleware.target
diff --git a/x86/lib/systemd/user/tizen-middleware.target.wants/pushd.service b/x86/lib/systemd/user/tizen-middleware.target.wants/pushd.service
deleted file mode 120000 (symlink)
index 21d0bfc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../pushd.service
\ No newline at end of file