rhoconnect-client 5.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +9 -0
- data/CREDITS +0 -0
- data/LICENSE +9 -0
- data/README.md +47 -0
- data/ext/rhoconnect-client/RhoConnectClient.rb +190 -0
- data/ext/rhoconnect-client/ext/RhoConnectClient.xml +726 -0
- data/ext/rhoconnect-client/ext/build +26 -0
- data/ext/rhoconnect-client/ext/build.bat +30 -0
- data/ext/rhoconnect-client/ext/platform/android/ext_java.files +1 -0
- data/ext/rhoconnect-client/ext/platform/android/ext_native.files +14 -0
- data/ext/rhoconnect-client/ext/platform/android/src/com/rhoconnectclient/RhoconnectClient.java +1 -0
- data/ext/rhoconnect-client/ext/platform/iphone/.gitignore +1 -0
- data/ext/rhoconnect-client/ext/platform/iphone/Rakefile +74 -0
- data/ext/rhoconnect-client/ext/platform/iphone/RhoconnectClient.xcodeproj/project.pbxproj +390 -0
- data/ext/rhoconnect-client/ext/platform/iphone/RhoconnectClient_Prefix.pch +7 -0
- data/ext/rhoconnect-client/ext/platform/iphone/impl/readme.txt +7 -0
- data/ext/rhoconnect-client/ext/platform/qt/Rakefile +35 -0
- data/ext/rhoconnect-client/ext/platform/qt/rhoconnect-client.pro +88 -0
- data/ext/rhoconnect-client/ext/platform/wm/Rhoconnect-client.sln +36 -0
- data/ext/rhoconnect-client/ext/platform/wm/Rhoconnect-client.vcproj +774 -0
- data/ext/rhoconnect-client/ext/platform/wm/Rhoconnect-client.vsprops +15 -0
- data/ext/rhoconnect-client/ext/platform/wm/src/rhoconnectclient_wm.cpp +40 -0
- data/ext/rhoconnect-client/ext/platform/wm/src/rhoconnectclient_wm.h +2 -0
- data/ext/rhoconnect-client/ext/platform/wp8/Rhoconnect-client.props +22 -0
- data/ext/rhoconnect-client/ext/platform/wp8/Rhoconnect-client.sln +32 -0
- data/ext/rhoconnect-client/ext/platform/wp8/Rhoconnect-client.vcxproj +220 -0
- data/ext/rhoconnect-client/ext/platform/wp8/Rhoconnect-client.vcxproj.filters +103 -0
- data/ext/rhoconnect-client/ext/shared/RhoConnectClientImpl.cpp +273 -0
- data/ext/rhoconnect-client/ext/shared/RhoConnectClientImpl.h +60 -0
- data/ext/rhoconnect-client/ext/shared/RhoConnectClientSingletonImpl.h +53 -0
- data/ext/rhoconnect-client/ext/shared/initRhoconnectClient.cpp +207 -0
- data/ext/rhoconnect-client/ext/shared/rhoconnectclient.c +18 -0
- data/ext/rhoconnect-client/ext/shared/sync/ClientRegister.cpp +398 -0
- data/ext/rhoconnect-client/ext/shared/sync/ClientRegister.h +147 -0
- data/ext/rhoconnect-client/ext/shared/sync/ISyncProtocol.h +91 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncEngine.cpp +1245 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncEngine.h +213 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncNotify.cpp +737 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncNotify.h +209 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncProtocol_3.h +220 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncProtocol_4.h +259 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncSource.cpp +1694 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncSource.h +212 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncThread.cpp +583 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncThread.h +250 -0
- data/ext/rhoconnect-client/ext.yml +12 -0
- data/lib/build/run_rhoconnect_spec.rb +135 -0
- data/lib/rhoconnect-client.rb +3 -0
- data/platform/shared/RhoConnectClient/RhoConnectClient.cpp +1673 -0
- data/platform/shared/RhoConnectClient/RhoConnectClient.h +181 -0
- data/platform/shared/RhoConnectClient/RhoError.h +77 -0
- data/rhoconnect-client/C++/Tests/RhoConnectClientTest.cpp +830 -0
- data/rhoconnect-client/C++/Tests/win32/.gitignore +3 -0
- data/rhoconnect-client/C++/Tests/win32/RhoConnectClient.sln +65 -0
- data/rhoconnect-client/C++/Tests/win32/RhoConnectClient.vcproj +634 -0
- data/rhoconnect-client/C++/Tests/win32/RhoConnectClientTest/RhoConnectClientTest.vcproj +222 -0
- data/rhoconnect-client/C++/Tests/win32/RhoConnectClientTest/stdafx.h +65 -0
- data/rhoconnect-client/C++/Tests/win32/stdafx.h +65 -0
- data/rhoconnect-client/CHANGELOG +18 -0
- data/rhoconnect-client/Java/Android/build/android.rake +387 -0
- data/rhoconnect-client/Java/Android/build/android_sdk.rb +582 -0
- data/rhoconnect-client/Java/Android/build/libcurl_build.files +73 -0
- data/rhoconnect-client/Java/Android/build/libjson_build.files +9 -0
- data/rhoconnect-client/Java/Android/build/librhocommon_build.files +14 -0
- data/rhoconnect-client/Java/Android/build/librhodb_build.files +5 -0
- data/rhoconnect-client/Java/Android/build/librhoimpl_build.files +13 -0
- data/rhoconnect-client/Java/Android/build/librholog_build.files +4 -0
- data/rhoconnect-client/Java/Android/build/libsqlite_build.files +1 -0
- data/rhoconnect-client/Java/Android/build/libsync_build.files +7 -0
- data/rhoconnect-client/Java/Android/build/libunzip_build.files +1 -0
- data/rhoconnect-client/Java/Android/build/rhoconnectclient_build.files +3 -0
- data/rhoconnect-client/Java/Android/build/rhoimpljava_build.files +21 -0
- data/rhoconnect-client/Java/Android/src/com/rhomobile/rhodes/Capabilities.java +63 -0
- data/rhoconnect-client/Java/Android/src/com/rhomobile/rhodes/MemoryInfoCollector.java +79 -0
- data/rhoconnect-client/Java/Android/src/com/rhomobile/rhodes/util/ContextFactory.java +63 -0
- data/rhoconnect-client/Java/Android/test/.classpath +9 -0
- data/rhoconnect-client/Java/Android/test/.project +33 -0
- data/rhoconnect-client/Java/Android/test/AndroidManifest.xml +14 -0
- data/rhoconnect-client/Java/Android/test/assets/apps/androidtest.png +0 -0
- data/rhoconnect-client/Java/Android/test/assets/apps/rhoconfig.txt +19 -0
- data/rhoconnect-client/Java/Android/test/assets/apps/rhoconfig.txt.timestamp +1 -0
- data/rhoconnect-client/Java/Android/test/assets/db/syncdb.schema +44 -0
- data/rhoconnect-client/Java/Android/test/assets/db/syncdb.triggers +10 -0
- data/rhoconnect-client/Java/Android/test/assets/db/syncdb_java.triggers +21 -0
- data/rhoconnect-client/Java/Android/test/assets/rho.dat +9 -0
- data/rhoconnect-client/Java/Android/test/proguard.cfg +36 -0
- data/rhoconnect-client/Java/Android/test/project.properties +11 -0
- data/rhoconnect-client/Java/Android/test/res/drawable-hdpi/icon.png +0 -0
- data/rhoconnect-client/Java/Android/test/res/drawable-ldpi/icon.png +0 -0
- data/rhoconnect-client/Java/Android/test/res/drawable-mdpi/icon.png +0 -0
- data/rhoconnect-client/Java/Android/test/res/layout/main.xml +12 -0
- data/rhoconnect-client/Java/Android/test/res/values/strings.xml +5 -0
- data/rhoconnect-client/Java/Android/test/rhoimpl.jar +0 -0
- data/rhoconnect-client/Java/Android/test/src/com/rhomobile/rhoconnect_client_test/TestRhoConnectClient.java +343 -0
- data/rhoconnect-client/Java/Android/test/src/com/rhomobile/rhoconnect_client_test/TestRhoConnectClientBlobs.java +219 -0
- data/rhoconnect-client/Java/RhoConnect/.classpath +6 -0
- data/rhoconnect-client/Java/RhoConnect/.project +93 -0
- data/rhoconnect-client/Java/RhoConnect/assets/apps/rhoconfig.txt +19 -0
- data/rhoconnect-client/Java/RhoConnect/assets/apps/rhoconfig.txt.timestamp +1 -0
- data/rhoconnect-client/Java/RhoConnect/assets/db/syncdb.schema +44 -0
- data/rhoconnect-client/Java/RhoConnect/assets/db/syncdb.triggers +10 -0
- data/rhoconnect-client/Java/RhoConnect/assets/db/syncdb_java.triggers +21 -0
- data/rhoconnect-client/Java/RhoConnect/assets/rho.dat +8 -0
- data/rhoconnect-client/Java/RhoConnect/jni/include/RhoConnectJniNotify.h +61 -0
- data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhoConnectClient.h +181 -0
- data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhoConnectNotify.h +13 -0
- data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhoConnectNotify_IDelegate.h +13 -0
- data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhoConnectObjectNotify.h +13 -0
- data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhoConnectObjectNotify_IDelegate.h +13 -0
- data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhomModel.h +103 -0
- data/rhoconnect-client/Java/RhoConnect/jni/include/rhojava.inc +76 -0
- data/rhoconnect-client/Java/RhoConnect/jni/src/RhoConnectJniClient.cpp +401 -0
- data/rhoconnect-client/Java/RhoConnect/jni/src/RhoConnectJniModel.cpp +332 -0
- data/rhoconnect-client/Java/RhoConnect/jni/src/RhoConnectJniNotify.cpp +223 -0
- data/rhoconnect-client/Java/RhoConnect/jni/src/RhoConnectUtil.cpp +82 -0
- data/rhoconnect-client/Java/RhoConnect/jni/src/RhodesApp.cpp +114 -0
- data/rhoconnect-client/Java/RhoConnect/src/com/rhomobile/rhoconnect/RhoConnectClient.java +108 -0
- data/rhoconnect-client/Java/RhoConnect/src/com/rhomobile/rhoconnect/RhoConnectNotify.java +78 -0
- data/rhoconnect-client/Java/RhoConnect/src/com/rhomobile/rhoconnect/RhoConnectObjectNotify.java +71 -0
- data/rhoconnect-client/Java/RhoConnect/src/com/rhomobile/rhoconnect/RhomModel.java +195 -0
- data/rhoconnect-client/JavaScript/.classpath +10 -0
- data/rhoconnect-client/JavaScript/.gitignore +4 -0
- data/rhoconnect-client/JavaScript/.project +17 -0
- data/rhoconnect-client/JavaScript/README.textile +1 -0
- data/rhoconnect-client/JavaScript/build.xml +185 -0
- data/rhoconnect-client/JavaScript/doc/fsm-sample.js +44 -0
- data/rhoconnect-client/JavaScript/doc/fsm-sample.png +0 -0
- data/rhoconnect-client/JavaScript/src/RhoSyncJS.gwt.xml +21 -0
- data/rhoconnect-client/JavaScript/stubs/RhoSyncStubsJS.gwt.xml +21 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/Capabilities.java +7 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/IRhoRubyHelper.java +7 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/Mutex.java +5 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/RhoAppAdapter.java +39 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/RhoClassFactory.java +29 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/RhoConf.java +100 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/RhoEmptyLogger.java +7 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/RhoEmptyProfiler.java +5 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/RhoLogger.java +32 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/RhoProfiler.java +27 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/RhodesApp.java +25 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/TimeInterval.java +22 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/Tokenizer.java +23 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/db/DBAdapter.java +174 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/db/DBAttrManager.java +15 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/db/DBException.java +5 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/db/IDBResult.java +27 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/file/IFileAccess.java +7 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/file/SimpleFile.java +15 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/net/IHttpConnection.java +22 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/net/NetRequest.java +324 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/net/NetResponse.java +51 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/net/URI.java +64 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/sync/ClientRegister.java +15 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/sync/JSONArrayIterator.java +37 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/sync/JSONEntry.java +48 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/sync/JSONStructIterator.java +41 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/sync/SyncNotify.java +98 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/sync/SyncThread.java +92 -0
- data/rhoconnect-client/JavaScript/war/WEB-INF/lib/gwt-servlet-deps.jar +0 -0
- data/rhoconnect-client/JavaScript/war/WEB-INF/lib/gwt-servlet.jar +0 -0
- data/rhoconnect-client/JavaScript/war/js/fsm-sample.js +54 -0
- data/rhoconnect-client/JavaScript/war/js/rhosync-api.js +237 -0
- data/rhoconnect-client/JavaScript/war/js/rhosync-fsm.js +307 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/4C71D69C9BBC9E6F05C6BA49B01BCBC1.cache.html +3122 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/5146F4FFF34511C8BB2661E920B49E3A.cache.html +3254 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/5248C67481D9D27AD0703D15CDBD2A1C.cache.html +3147 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/EE1DC2692C9C32367B53A39E2358AF23.cache.html +3195 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/clear.cache.gif +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/corner.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/corner_ie6.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/hborder.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/hborder_ie6.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/corner_dialog_topleft.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/corner_dialog_topright.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/hborder_blue_shadow.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/hborder_gray_shadow.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/vborder_blue_shadow.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/vborder_gray_shadow.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/splitPanelThumb.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/vborder.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/vborder_ie6.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/standard.css +1144 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/standard_rtl.css +1145 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/hosted.html +350 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/rhosyncjs.nocache.js +314 -0
- data/rhoconnect-client/JavaScript/war/test/SpecRunner.html +35 -0
- data/rhoconnect-client/JavaScript/war/test/dbtest.html +38 -0
- data/rhoconnect-client/JavaScript/war/test/lib/jasmine-1.0.1/MIT.LICENSE +20 -0
- data/rhoconnect-client/JavaScript/war/test/lib/jasmine-1.0.1/jasmine-html.js +188 -0
- data/rhoconnect-client/JavaScript/war/test/lib/jasmine-1.0.1/jasmine.css +166 -0
- data/rhoconnect-client/JavaScript/war/test/lib/jasmine-1.0.1/jasmine.js +2421 -0
- data/rhoconnect-client/JavaScript/war/test/spec/SpecHelper.js +7 -0
- data/rhoconnect-client/JavaScript/war/test/spec/SyncApiSpec.js +573 -0
- data/rhoconnect-client/JavaScript/war/test/spec/samples/PlayerSpec.js +58 -0
- data/rhoconnect-client/JavaScript/war/test/worker-test.js +17 -0
- data/rhoconnect-client/LICENSE +41 -0
- data/rhoconnect-client/ObjectiveC/RhoConnectClient.h +118 -0
- data/rhoconnect-client/ObjectiveC/RhoConnectClient.m +641 -0
- data/rhoconnect-client/ObjectiveC/RhoConnectClient.xcodeproj/project.pbxproj +1434 -0
- data/rhoconnect-client/ObjectiveC/RhoConnectNotify.h +83 -0
- data/rhoconnect-client/ObjectiveC/RhoConnectNotify.m +181 -0
- data/rhoconnect-client/ObjectiveC/RhoConnectObjectNotify.h +65 -0
- data/rhoconnect-client/ObjectiveC/RhoConnectObjectNotify.m +73 -0
- data/rhoconnect-client/ObjectiveC/RhomModel.h +101 -0
- data/rhoconnect-client/ObjectiveC/RhomModel.m +320 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/MainWindow.xib +198 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/RhoConnectClientTest-Info.plist +30 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/RhoConnectClientTest.xcodeproj/project.pbxproj +373 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/RhoConnectClientTestAppDelegate.h +58 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/RhoConnectClientTestAppDelegate.m +84 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/RhoConnectClientTest_Prefix.pch +8 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/invalid_import_db.zip +0 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/main.m +1096 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/test.png +0 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/test2.png +0 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/valid_import_db.zip +0 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/Classes/ptestsAppDelegate.h +62 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/Classes/ptestsAppDelegate.m +35 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/Classes/ptestsViewController.h +78 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/Classes/ptestsViewController.m +549 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/MainWindow.xib +227 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/main.m +17 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/ptests-Info.plist +30 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/ptests.xcodeproj/project.pbxproj +363 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/ptestsViewController.xib +641 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/ptests_Prefix.pch +8 -0
- data/rhoconnect-client/README.textile +23 -0
- data/rhoconnect-client/Rakefile +20 -0
- data/rhoconnect-client/Samples/Java/android_store/.classpath +8 -0
- data/rhoconnect-client/Samples/Java/android_store/.project +33 -0
- data/rhoconnect-client/Samples/Java/android_store/AndroidManifest.xml +24 -0
- data/rhoconnect-client/Samples/Java/android_store/assets/apps/rhoconfig.txt +19 -0
- data/rhoconnect-client/Samples/Java/android_store/assets/apps/rhoconfig.txt.timestamp +1 -0
- data/rhoconnect-client/Samples/Java/android_store/assets/db/syncdb.schema +44 -0
- data/rhoconnect-client/Samples/Java/android_store/assets/db/syncdb.triggers +10 -0
- data/rhoconnect-client/Samples/Java/android_store/assets/db/syncdb_java.triggers +21 -0
- data/rhoconnect-client/Samples/Java/android_store/assets/rho.dat +8 -0
- data/rhoconnect-client/Samples/Java/android_store/default.properties +11 -0
- data/rhoconnect-client/Samples/Java/android_store/project.properties +14 -0
- data/rhoconnect-client/Samples/Java/android_store/res/drawable-hdpi/icon.png +0 -0
- data/rhoconnect-client/Samples/Java/android_store/res/drawable-ldpi/icon.png +0 -0
- data/rhoconnect-client/Samples/Java/android_store/res/drawable-mdpi/icon.png +0 -0
- data/rhoconnect-client/Samples/Java/android_store/res/layout/main.xml +12 -0
- data/rhoconnect-client/Samples/Java/android_store/res/values/strings.xml +5 -0
- data/rhoconnect-client/Samples/Java/android_store/rhoimpl.jar +0 -0
- data/rhoconnect-client/Samples/Java/android_store/src/com/rhomobile/android_store/StoreActivity.java +68 -0
- data/rhoconnect-client/Samples/Java/android_store/src/com/rhomobile/android_store/StoreApplication.java +15 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/LoginViewController.h +70 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/LoginViewController.m +94 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/RhoConnectEngine.h +82 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/RhoConnectEngine.m +119 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/RootViewController.h +63 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/RootViewController.m +314 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/WaitLoginController.h +65 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/WaitLoginController.m +110 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/storeAppDelegate.h +61 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/storeAppDelegate.m +171 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/LoginViewController.xib +779 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/MainWindow.xib +580 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/RootViewController.xib +384 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/WaitLoginController.xib +557 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/icon.png +0 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/main.m +22 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/store-Info.plist +30 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/store.xcodeproj/project.pbxproj +367 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/store_Prefix.pch +14 -0
- data/rhoconnect-client/build.yml +3 -0
- data/rhoconnect-client/version +1 -0
- metadata +314 -0
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/*------------------------------------------------------------------------
|
|
2
|
+
* (The MIT License)
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2008-2011 Rhomobile, Inc.
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
* in the Software without restriction, including without limitation the rights
|
|
9
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
* furnished to do so, subject to the following conditions:
|
|
12
|
+
*
|
|
13
|
+
* The above copyright notice and this permission notice shall be included in
|
|
14
|
+
* all copies or substantial portions of the Software.
|
|
15
|
+
*
|
|
16
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
22
|
+
* THE SOFTWARE.
|
|
23
|
+
*
|
|
24
|
+
* http://rhomobile.com
|
|
25
|
+
|
|
26
|
+
* Copyright (c) 2011-2016 Symbol Technologies, Inc.
|
|
27
|
+
*
|
|
28
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
29
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
30
|
+
* in the Software without restriction, including without limitation the rights
|
|
31
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
32
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
33
|
+
* furnished to do so, subject to the following conditions:
|
|
34
|
+
*
|
|
35
|
+
* The above copyright notice and this permission notice shall be included in
|
|
36
|
+
* all copies or substantial portions of the Software.
|
|
37
|
+
*
|
|
38
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
39
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
40
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
41
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
42
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
43
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
44
|
+
* THE SOFTWARE.
|
|
45
|
+
*
|
|
46
|
+
* http://symbol.com
|
|
47
|
+
*------------------------------------------------------------------------*/
|
|
48
|
+
|
|
49
|
+
#import <UIKit/UIKit.h>
|
|
50
|
+
|
|
51
|
+
@class ptestsViewController;
|
|
52
|
+
|
|
53
|
+
@interface ptestsAppDelegate : NSObject <UIApplicationDelegate> {
|
|
54
|
+
UIWindow *window;
|
|
55
|
+
ptestsViewController *viewController;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@property (nonatomic, retain) IBOutlet UIWindow *window;
|
|
59
|
+
@property (nonatomic, retain) IBOutlet ptestsViewController *viewController;
|
|
60
|
+
|
|
61
|
+
@end
|
|
62
|
+
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//
|
|
2
|
+
// ptestsAppDelegate.m
|
|
3
|
+
// ptests
|
|
4
|
+
//
|
|
5
|
+
// Created by Vlad on 8/25/10.
|
|
6
|
+
// Copyright __MyCompanyName__ 2010. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import "ptestsAppDelegate.h"
|
|
10
|
+
#import "ptestsViewController.h"
|
|
11
|
+
|
|
12
|
+
@implementation ptestsAppDelegate
|
|
13
|
+
|
|
14
|
+
@synthesize window;
|
|
15
|
+
@synthesize viewController;
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
|
19
|
+
|
|
20
|
+
// Override point for customization after app launch
|
|
21
|
+
[window addSubview:viewController.view];
|
|
22
|
+
[window makeKeyAndVisible];
|
|
23
|
+
|
|
24
|
+
return YES;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
- (void)dealloc {
|
|
29
|
+
[viewController release];
|
|
30
|
+
[window release];
|
|
31
|
+
[super dealloc];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/*------------------------------------------------------------------------
|
|
2
|
+
* (The MIT License)
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2008-2011 Rhomobile, Inc.
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
* in the Software without restriction, including without limitation the rights
|
|
9
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
* furnished to do so, subject to the following conditions:
|
|
12
|
+
*
|
|
13
|
+
* The above copyright notice and this permission notice shall be included in
|
|
14
|
+
* all copies or substantial portions of the Software.
|
|
15
|
+
*
|
|
16
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
22
|
+
* THE SOFTWARE.
|
|
23
|
+
*
|
|
24
|
+
* http://rhomobile.com
|
|
25
|
+
|
|
26
|
+
* Copyright (c) 2011-2016 Symbol Technologies, Inc.
|
|
27
|
+
*
|
|
28
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
29
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
30
|
+
* in the Software without restriction, including without limitation the rights
|
|
31
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
32
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
33
|
+
* furnished to do so, subject to the following conditions:
|
|
34
|
+
*
|
|
35
|
+
* The above copyright notice and this permission notice shall be included in
|
|
36
|
+
* all copies or substantial portions of the Software.
|
|
37
|
+
*
|
|
38
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
39
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
40
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
41
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
42
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
43
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
44
|
+
* THE SOFTWARE.
|
|
45
|
+
*
|
|
46
|
+
* http://symbol.com
|
|
47
|
+
*------------------------------------------------------------------------*/
|
|
48
|
+
|
|
49
|
+
#import <UIKit/UIKit.h>
|
|
50
|
+
|
|
51
|
+
@class RhoConnectClient, RhomModel;
|
|
52
|
+
@interface ptestsViewController : UIViewController {
|
|
53
|
+
IBOutlet UITextView *txtResult;
|
|
54
|
+
IBOutlet UIButton *btnStart;
|
|
55
|
+
IBOutlet UIButton *btnBenchSearch;
|
|
56
|
+
IBOutlet UIButton *btnBenchCreate;
|
|
57
|
+
IBOutlet UIButton *btnBenchBulk;
|
|
58
|
+
IBOutlet UIButton *btnBenchAsyncHttp;
|
|
59
|
+
IBOutlet UIActivityIndicatorView *indicator;
|
|
60
|
+
|
|
61
|
+
RhoConnectClient* sclient;
|
|
62
|
+
RhomModel* perftest;
|
|
63
|
+
RhomModel* product;
|
|
64
|
+
RhomModel* customer;
|
|
65
|
+
NSString* result;
|
|
66
|
+
int nCount;
|
|
67
|
+
BOOL tests_initialized;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@property (nonatomic, retain) IBOutlet UITextView *txtResult;
|
|
71
|
+
@property (nonatomic, retain) IBOutlet UIButton *btnStart;
|
|
72
|
+
@property (nonatomic, retain) IBOutlet UIActivityIndicatorView *indicator;
|
|
73
|
+
|
|
74
|
+
- (IBAction)runTest:(id)sender;
|
|
75
|
+
- (IBAction)runBench:(id)sender;
|
|
76
|
+
|
|
77
|
+
@end
|
|
78
|
+
|
|
@@ -0,0 +1,549 @@
|
|
|
1
|
+
//
|
|
2
|
+
// ptestsViewController.m
|
|
3
|
+
// ptests
|
|
4
|
+
//
|
|
5
|
+
// Created by Vlad on 8/25/10.
|
|
6
|
+
// Copyright __MyCompanyName__ 2010. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import "ptestsViewController.h"
|
|
10
|
+
#import <QuartzCore/QuartzCore.h>
|
|
11
|
+
#import "../../../RhoConnectClient.h"
|
|
12
|
+
#import <CoreData/CoreData.h>
|
|
13
|
+
|
|
14
|
+
@implementation ptestsViewController
|
|
15
|
+
|
|
16
|
+
@synthesize txtResult, btnStart, indicator;
|
|
17
|
+
|
|
18
|
+
- (void)testComplete:(NSString*) result
|
|
19
|
+
{
|
|
20
|
+
[indicator stopAnimating];
|
|
21
|
+
txtResult.text = result;
|
|
22
|
+
[btnStart setEnabled:YES];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
- (void) beforeTests
|
|
26
|
+
{
|
|
27
|
+
if ( tests_initialized )
|
|
28
|
+
return;
|
|
29
|
+
|
|
30
|
+
[RhoConnectClient initDatabase];
|
|
31
|
+
|
|
32
|
+
perftest = [[RhomModel alloc] init];
|
|
33
|
+
perftest.name = @"Perftest";
|
|
34
|
+
perftest.sync_type = RST_NONE;
|
|
35
|
+
|
|
36
|
+
product = [[RhomModel alloc] init];
|
|
37
|
+
product.name = @"Product";
|
|
38
|
+
product.sync_type = RST_INCREMENTAL;
|
|
39
|
+
|
|
40
|
+
customer = [[RhomModel alloc] init];
|
|
41
|
+
customer.name = @"Customer";
|
|
42
|
+
customer.sync_type = RST_INCREMENTAL;
|
|
43
|
+
|
|
44
|
+
sclient = [[RhoConnectClient alloc] init];
|
|
45
|
+
NSArray* models = [NSArray arrayWithObjects: perftest, product, customer, nil];
|
|
46
|
+
|
|
47
|
+
[sclient addModels:models];
|
|
48
|
+
|
|
49
|
+
[sclient setConfigString:@"MinSeverity" param:@"1"];
|
|
50
|
+
sclient.threaded_mode = FALSE;
|
|
51
|
+
sclient.poll_interval = 0;
|
|
52
|
+
|
|
53
|
+
[sclient database_full_reset_and_logout];
|
|
54
|
+
sclient.bulksync_state = 1;
|
|
55
|
+
|
|
56
|
+
nCount = 1000;
|
|
57
|
+
|
|
58
|
+
tests_initialized = TRUE;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
- (void) testCreate
|
|
62
|
+
{
|
|
63
|
+
[perftest startBulkUpdate];
|
|
64
|
+
for (int i = 0; i < nCount; i++)
|
|
65
|
+
{
|
|
66
|
+
NSMutableDictionary* item = [[NSMutableDictionary alloc] init];
|
|
67
|
+
[item setValue: [NSString stringWithFormat:@"Test%d", i] forKey:@"name"];
|
|
68
|
+
[perftest create:item];
|
|
69
|
+
[item release];
|
|
70
|
+
}
|
|
71
|
+
[perftest stopBulkUpdate];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
- (void) createTestData
|
|
75
|
+
{
|
|
76
|
+
[product startBulkUpdate];
|
|
77
|
+
for (int i = 0; i < 100; i++)
|
|
78
|
+
{
|
|
79
|
+
for (int j = 0; j < 100; j++)
|
|
80
|
+
{
|
|
81
|
+
NSMutableDictionary* item = [[NSMutableDictionary alloc] init];
|
|
82
|
+
[item setValue: [NSString stringWithFormat:@"Name%d", i] forKey:@"name"];
|
|
83
|
+
[item setValue: [NSString stringWithFormat:@"HTC%d", i] forKey:@"brand"];
|
|
84
|
+
|
|
85
|
+
[item setValue: [NSString stringWithFormat:@"%d", i] forKey:@"price"];
|
|
86
|
+
|
|
87
|
+
[product create:item];
|
|
88
|
+
|
|
89
|
+
[item release];
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
[product stopBulkUpdate];
|
|
93
|
+
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
- (void) benchSearch
|
|
97
|
+
{
|
|
98
|
+
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Top-level pool
|
|
99
|
+
[self beforeTests];
|
|
100
|
+
|
|
101
|
+
sclient.sync_server = @"http://192.168.0.84:9292/application";
|
|
102
|
+
RhoConnectNotify* res = [sclient loginWithUser:@"" pwd:@""];
|
|
103
|
+
[res release];
|
|
104
|
+
|
|
105
|
+
double startTime = CACurrentMediaTime();
|
|
106
|
+
//[self createTestData];
|
|
107
|
+
[customer sync];
|
|
108
|
+
result = [result stringByAppendingString:
|
|
109
|
+
[NSString stringWithFormat:@" %@ (ms): %f\n",
|
|
110
|
+
@"Sync data(10,000)", (CACurrentMediaTime()-startTime)*1000.0 ]];
|
|
111
|
+
|
|
112
|
+
startTime = CACurrentMediaTime();
|
|
113
|
+
NSMutableDictionary* cond = [[NSMutableDictionary alloc] init];
|
|
114
|
+
[cond setValue:[NSString stringWithFormat:@"PerfManager"] forKey:@"JobTitle"];
|
|
115
|
+
|
|
116
|
+
NSMutableArray* items = [customer find_all:cond];
|
|
117
|
+
if (items) {
|
|
118
|
+
[items release];
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
result = [result stringByAppendingString:
|
|
122
|
+
[NSString stringWithFormat:@" %@ (ms): %f\n",
|
|
123
|
+
@"Search", (CACurrentMediaTime()-startTime)*1000.0 ]];
|
|
124
|
+
|
|
125
|
+
NSLog(@"BENCH search results: \n%@", result);
|
|
126
|
+
|
|
127
|
+
[self performSelectorOnMainThread:@selector(testComplete:) withObject:result waitUntilDone:false];
|
|
128
|
+
[pool release]; // Release the objects in the pool.
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
- (void) benchCreate
|
|
132
|
+
{
|
|
133
|
+
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Top-level pool
|
|
134
|
+
|
|
135
|
+
[self beforeTests];
|
|
136
|
+
|
|
137
|
+
sclient.sync_server = @"http://rhodes-store-server.herokuapp.com/application";
|
|
138
|
+
RhoConnectNotify* res = [sclient loginWithUser:@"" pwd:@""];
|
|
139
|
+
int nErr = res.error_code;
|
|
140
|
+
[res release];
|
|
141
|
+
if ( nErr!= RHO_ERR_NONE || ![sclient is_logged_in])
|
|
142
|
+
{
|
|
143
|
+
result = [result stringByAppendingString:@"ERROR: cannot login\n"];
|
|
144
|
+
}else
|
|
145
|
+
{
|
|
146
|
+
[sclient syncAll];
|
|
147
|
+
|
|
148
|
+
double startTime = CACurrentMediaTime();
|
|
149
|
+
|
|
150
|
+
NSMutableDictionary* item = [[NSMutableDictionary alloc] init];
|
|
151
|
+
[item setValue: [NSString stringWithFormat:@"Name00"] forKey:@"name"];
|
|
152
|
+
[item setValue: [NSString stringWithFormat:@"HTC00"] forKey:@"brand"];
|
|
153
|
+
[item setValue: [NSString stringWithFormat:@"0"] forKey:@"price"];
|
|
154
|
+
|
|
155
|
+
[product create:item];
|
|
156
|
+
result = [result stringByAppendingString:
|
|
157
|
+
[NSString stringWithFormat:@" %@ (ms): %f\n",
|
|
158
|
+
@"Create 1 item", (CACurrentMediaTime()-startTime)*1000.0 ]];
|
|
159
|
+
|
|
160
|
+
startTime = CACurrentMediaTime();
|
|
161
|
+
[product sync];
|
|
162
|
+
result = [result stringByAppendingString:
|
|
163
|
+
[NSString stringWithFormat:@" %@ (ms): %f\n",
|
|
164
|
+
@"Sync 1 item", (CACurrentMediaTime()-startTime)*1000.0 ]];
|
|
165
|
+
|
|
166
|
+
startTime = CACurrentMediaTime();
|
|
167
|
+
|
|
168
|
+
NSMutableDictionary* cond = [[NSMutableDictionary alloc] init];
|
|
169
|
+
[cond setValue:[NSString stringWithFormat:@"Name00"] forKey:@"name"];
|
|
170
|
+
|
|
171
|
+
NSMutableArray* items = [product find_all:cond];
|
|
172
|
+
if (items) {
|
|
173
|
+
[items release];
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
result = [result stringByAppendingString:
|
|
177
|
+
[NSString stringWithFormat:@" %@ (ms): %f\n",
|
|
178
|
+
@"Search", (CACurrentMediaTime()-startTime)*1000.0 ]];
|
|
179
|
+
|
|
180
|
+
NSLog(@"BENCH create results: \n%@", result);
|
|
181
|
+
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
[self performSelectorOnMainThread:@selector(testComplete:) withObject:result waitUntilDone:false];
|
|
185
|
+
[pool release]; // Release the objects in the pool.
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
- (void) benchBulkSync
|
|
189
|
+
{
|
|
190
|
+
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Top-level pool
|
|
191
|
+
[self beforeTests];
|
|
192
|
+
|
|
193
|
+
double startTime = CACurrentMediaTime();
|
|
194
|
+
|
|
195
|
+
sclient.sync_server = @"http://192.168.0.84:9292/application";
|
|
196
|
+
RhoConnectNotify* res = [sclient loginWithUser:@"" pwd:@""];
|
|
197
|
+
//sclient.sync_server = @"http://184.73.159.63/application";
|
|
198
|
+
//RhoConnectNotify* res = [sclient loginWithUser:@"smladenova" pwd:@"password"];
|
|
199
|
+
|
|
200
|
+
[res release];
|
|
201
|
+
sclient.bulksync_state = 0;
|
|
202
|
+
|
|
203
|
+
result = [result stringByAppendingString:
|
|
204
|
+
[NSString stringWithFormat:@" %@ (ms): %f\n",
|
|
205
|
+
@"Reset and login", (CACurrentMediaTime()-startTime)*1000.0 ]];
|
|
206
|
+
|
|
207
|
+
startTime = CACurrentMediaTime();
|
|
208
|
+
[sclient syncAll];
|
|
209
|
+
result = [result stringByAppendingString:
|
|
210
|
+
[NSString stringWithFormat:@" %@ (ms): %f\n",
|
|
211
|
+
@"Bulk sync", (CACurrentMediaTime()-startTime)*1000.0 ]];
|
|
212
|
+
|
|
213
|
+
startTime = CACurrentMediaTime();
|
|
214
|
+
NSMutableDictionary* cond = [[NSMutableDictionary alloc] init];
|
|
215
|
+
[cond setValue:[NSString stringWithFormat:@"PerfManager"] forKey:@"JobTitle"];
|
|
216
|
+
|
|
217
|
+
NSMutableArray* items = [customer find_all:cond];
|
|
218
|
+
if (items) {
|
|
219
|
+
[items release];
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
result = [result stringByAppendingString:
|
|
223
|
+
[NSString stringWithFormat:@" %@ (ms): %f\n",
|
|
224
|
+
@"Search", (CACurrentMediaTime()-startTime)*1000.0 ]];
|
|
225
|
+
|
|
226
|
+
NSLog(@"BENCH bulk results: \n%@", result);
|
|
227
|
+
|
|
228
|
+
[self performSelectorOnMainThread:@selector(testComplete:) withObject:result waitUntilDone:false];
|
|
229
|
+
[pool release]; // Release the objects in the pool.
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
- (NSPersistentStore*) createStore
|
|
233
|
+
{
|
|
234
|
+
static NSManagedObjectContext *moc = nil;
|
|
235
|
+
|
|
236
|
+
if (moc == nil)
|
|
237
|
+
moc = [[NSManagedObjectContext alloc] init];
|
|
238
|
+
|
|
239
|
+
NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] init];
|
|
240
|
+
[moc setPersistentStoreCoordinator: coordinator];
|
|
241
|
+
|
|
242
|
+
NSString *STORE_TYPE = NSSQLiteStoreType;
|
|
243
|
+
|
|
244
|
+
NSError *error = nil;
|
|
245
|
+
//NSURL *url = [applicationLogDirectory() URLByAppendingPathComponent:STORE_FILENAME];
|
|
246
|
+
NSURL *url = [NSURL URLWithString:[[[NSString alloc] initWithUTF8String:"test.db"] autorelease]];
|
|
247
|
+
|
|
248
|
+
NSPersistentStore *newStore = [coordinator addPersistentStoreWithType:STORE_TYPE
|
|
249
|
+
configuration:nil
|
|
250
|
+
URL:url
|
|
251
|
+
options:nil
|
|
252
|
+
error:&error];
|
|
253
|
+
|
|
254
|
+
if (newStore == nil) {
|
|
255
|
+
NSLog(@"Store Configuration Failure\n%@",
|
|
256
|
+
([error localizedDescription] != nil) ?
|
|
257
|
+
[error localizedDescription] : @"Unknown Error");
|
|
258
|
+
}
|
|
259
|
+
return newStore;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
- (void) benchAsyncHttpSync
|
|
263
|
+
{
|
|
264
|
+
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Top-level pool
|
|
265
|
+
|
|
266
|
+
double startTime = CACurrentMediaTime();
|
|
267
|
+
|
|
268
|
+
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
|
|
269
|
+
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
|
|
270
|
+
NSError *error = nil;
|
|
271
|
+
NSHTTPURLResponse* response;
|
|
272
|
+
NSURL *url = [NSURL URLWithString:[[[NSString alloc] initWithUTF8String:"http://192.168.0.62:5000/test"] autorelease]];
|
|
273
|
+
[request setURL:url];
|
|
274
|
+
[request setHTTPMethod:@"GET"];
|
|
275
|
+
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
|
|
276
|
+
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
|
|
277
|
+
|
|
278
|
+
result = [result stringByAppendingString:
|
|
279
|
+
[NSString stringWithFormat:@" %@ (ms): %f\n",
|
|
280
|
+
@"Download", (CACurrentMediaTime()-startTime)*1000.0 ]];
|
|
281
|
+
|
|
282
|
+
startTime = CACurrentMediaTime();
|
|
283
|
+
result = [result stringByAppendingString:
|
|
284
|
+
[NSString stringWithFormat:@" %@ (ms): %f\n",
|
|
285
|
+
@"Parse JSON", (CACurrentMediaTime()-startTime)*1000.0 ]];
|
|
286
|
+
|
|
287
|
+
startTime = CACurrentMediaTime();
|
|
288
|
+
|
|
289
|
+
NSPersistentStore* store = [self createStore];
|
|
290
|
+
result = [result stringByAppendingString:
|
|
291
|
+
[NSString stringWithFormat:@" %@ (ms): %f\n",
|
|
292
|
+
@"Insert to DB", (CACurrentMediaTime()-startTime)*1000.0 ]];
|
|
293
|
+
|
|
294
|
+
startTime = CACurrentMediaTime();
|
|
295
|
+
NSMutableDictionary* cond = [[NSMutableDictionary alloc] init];
|
|
296
|
+
[cond setValue:[NSString stringWithFormat:@"PerfManager"] forKey:@"JobTitle"];
|
|
297
|
+
|
|
298
|
+
NSMutableArray* items = [customer find_all:cond];
|
|
299
|
+
if (items) {
|
|
300
|
+
[items release];
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
result = [result stringByAppendingString:
|
|
304
|
+
[NSString stringWithFormat:@" %@ (ms): %f\n",
|
|
305
|
+
@"Search", (CACurrentMediaTime()-startTime)*1000.0 ]];
|
|
306
|
+
|
|
307
|
+
NSLog(@"BENCH asynchttp sync results: \n%@", result);
|
|
308
|
+
|
|
309
|
+
[self performSelectorOnMainThread:@selector(testComplete:) withObject:result waitUntilDone:false];
|
|
310
|
+
[pool release]; // Release the objects in the pool.
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
- (void) testRead
|
|
314
|
+
{
|
|
315
|
+
for (int i = 0; i < 1; i++)
|
|
316
|
+
{
|
|
317
|
+
NSMutableArray* items = [perftest find_all:NULL];
|
|
318
|
+
if (items) {
|
|
319
|
+
[items release];
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
- (void) testReadByOne
|
|
325
|
+
{
|
|
326
|
+
for (int i = 0; i < nCount; i++)
|
|
327
|
+
{
|
|
328
|
+
NSMutableDictionary* cond = [[NSMutableDictionary alloc] init];
|
|
329
|
+
[cond setValue:[NSString stringWithFormat:@"Test%d", i] forKey:@"name"];
|
|
330
|
+
|
|
331
|
+
NSMutableDictionary* item = [perftest find_first:cond];
|
|
332
|
+
if (item) {
|
|
333
|
+
[item release];
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
[cond release];
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
- (void) testUpdate
|
|
341
|
+
{
|
|
342
|
+
[perftest startBulkUpdate];
|
|
343
|
+
for (int i = 0; i < nCount; i++)
|
|
344
|
+
{
|
|
345
|
+
NSMutableDictionary* cond = [[NSMutableDictionary alloc] init];
|
|
346
|
+
[cond setValue:[NSString stringWithFormat:@"Test%d", i] forKey:@"name"];
|
|
347
|
+
|
|
348
|
+
NSMutableDictionary* item = [perftest find_first:cond];
|
|
349
|
+
if ( !item )
|
|
350
|
+
continue;
|
|
351
|
+
|
|
352
|
+
//NSString* saved_object = [NSString stringWithString: [item valueForKey:@"object"]];
|
|
353
|
+
NSMutableString* new_name = [[NSMutableString alloc]init];
|
|
354
|
+
[new_name appendString:[item valueForKey:@"name"]];
|
|
355
|
+
[new_name appendString: @"_TEST"];
|
|
356
|
+
|
|
357
|
+
[item setValue:new_name forKey:@"name"];
|
|
358
|
+
[perftest save: item];
|
|
359
|
+
|
|
360
|
+
[cond release];
|
|
361
|
+
[item release];
|
|
362
|
+
[new_name release];
|
|
363
|
+
}
|
|
364
|
+
[perftest stopBulkUpdate];
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
- (void) testDelete
|
|
368
|
+
{
|
|
369
|
+
NSMutableArray* items = [perftest find_all:NULL];
|
|
370
|
+
if ( !items )
|
|
371
|
+
return;
|
|
372
|
+
|
|
373
|
+
[perftest startBulkUpdate];
|
|
374
|
+
for( NSDictionary* item in items)
|
|
375
|
+
{
|
|
376
|
+
[perftest destroy: item];
|
|
377
|
+
}
|
|
378
|
+
[perftest stopBulkUpdate];
|
|
379
|
+
|
|
380
|
+
[items release];
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
- (void)testThreadMainRoutine
|
|
384
|
+
{
|
|
385
|
+
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Top-level pool
|
|
386
|
+
|
|
387
|
+
NSLog(@"starting test");
|
|
388
|
+
double startTime;
|
|
389
|
+
result = [[NSString alloc]initWithString:@""];
|
|
390
|
+
NSArray* ops = [NSArray arrayWithObjects:@"create", @"read all", @"read by one", @"update", @"delete", nil];
|
|
391
|
+
|
|
392
|
+
[self beforeTests];
|
|
393
|
+
|
|
394
|
+
result = [result stringByAppendingString:@"1000 records\n"];
|
|
395
|
+
|
|
396
|
+
for(NSString* op in ops)
|
|
397
|
+
{
|
|
398
|
+
startTime = CACurrentMediaTime();
|
|
399
|
+
//NSLog(@"testing %@ records op", op);
|
|
400
|
+
|
|
401
|
+
//put calls to appropriate test methods here
|
|
402
|
+
//sleep(rand() % 2 + 1);
|
|
403
|
+
if ( [op isEqualToString:@"create"])
|
|
404
|
+
[self testCreate];
|
|
405
|
+
else if ( [op isEqualToString:@"read all"])
|
|
406
|
+
[self testRead];
|
|
407
|
+
else if ( [op isEqualToString:@"read by one"])
|
|
408
|
+
[self testReadByOne];
|
|
409
|
+
else if ( [op isEqualToString:@"update"])
|
|
410
|
+
[self testUpdate];
|
|
411
|
+
else if ( [op isEqualToString:@"delete"])
|
|
412
|
+
[self testDelete];
|
|
413
|
+
|
|
414
|
+
// result = [result stringByAppendingString:
|
|
415
|
+
// [NSString stringWithFormat:@"- to %@ 1000 records took %f milisecons\n",
|
|
416
|
+
// op, (CACurrentMediaTime()-startTime)*1000.0 ]];
|
|
417
|
+
result = [result stringByAppendingString:
|
|
418
|
+
[NSString stringWithFormat:@"%@ (ms): %f\n",
|
|
419
|
+
op, (CACurrentMediaTime()-startTime)*1000.0 ]];
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
NSLog(@"test is done");
|
|
423
|
+
[self performSelectorOnMainThread:@selector(testComplete:) withObject:result waitUntilDone:false];
|
|
424
|
+
|
|
425
|
+
[pool release]; // Release the objects in the pool.
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
- (void)testThreadMainRoutineBench
|
|
429
|
+
{
|
|
430
|
+
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Top-level pool
|
|
431
|
+
|
|
432
|
+
NSLog(@"starting test");
|
|
433
|
+
double startTime;
|
|
434
|
+
result = [[NSString alloc]initWithString:@""];
|
|
435
|
+
NSArray* ops = [NSArray arrayWithObjects: @"Create bench", @"Search bench", @"Bulk bench", nil];//, @"bench_", @"read by one", @"update", @"delete", nil];
|
|
436
|
+
[self beforeTests];
|
|
437
|
+
|
|
438
|
+
sclient.sync_server = @"http://rhodes-store-server.herokuapp.com/application";
|
|
439
|
+
|
|
440
|
+
RhoConnectNotify* res = [sclient loginWithUser:@"" pwd:@""];
|
|
441
|
+
int nErr = res.error_code;
|
|
442
|
+
[res release];
|
|
443
|
+
if ( nErr!= RHO_ERR_NONE || ![sclient is_logged_in])
|
|
444
|
+
{
|
|
445
|
+
result = [result stringByAppendingString:@"ERROR: cannot login\n"];
|
|
446
|
+
}else
|
|
447
|
+
{
|
|
448
|
+
[sclient syncAll];
|
|
449
|
+
for(NSString* op in ops)
|
|
450
|
+
{
|
|
451
|
+
startTime = CACurrentMediaTime();
|
|
452
|
+
|
|
453
|
+
if ( [op isEqualToString:@"Search bench"])
|
|
454
|
+
[self benchSearch];
|
|
455
|
+
else if ( [op isEqualToString:@"Create bench"])
|
|
456
|
+
[self benchCreate];
|
|
457
|
+
else if ( [op isEqualToString:@"Bulk bench"])
|
|
458
|
+
[self benchBulkSync];
|
|
459
|
+
|
|
460
|
+
NSLog(@"bench %@ is done", op);
|
|
461
|
+
|
|
462
|
+
result = [result stringByAppendingString:
|
|
463
|
+
[NSString stringWithFormat:@"%@ (ms): %f\n",
|
|
464
|
+
op, (CACurrentMediaTime()-startTime)*1000.0 ]];
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
NSLog(@"BENCH results:");
|
|
469
|
+
NSLog(result);
|
|
470
|
+
[self performSelectorOnMainThread:@selector(testComplete:) withObject:result waitUntilDone:false];
|
|
471
|
+
|
|
472
|
+
[pool release]; // Release the objects in the pool.
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
- (IBAction)runTest:(id)sender {
|
|
476
|
+
[btnStart setEnabled:NO];
|
|
477
|
+
[indicator startAnimating];
|
|
478
|
+
[NSThread detachNewThreadSelector:@selector(testThreadMainRoutine) toTarget:self withObject:nil];
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
- (IBAction)runBench:(id)sender
|
|
482
|
+
{
|
|
483
|
+
[btnStart setEnabled:NO];
|
|
484
|
+
[indicator startAnimating];
|
|
485
|
+
|
|
486
|
+
result = [[NSString alloc]initWithString:@""];
|
|
487
|
+
|
|
488
|
+
if ( sender == btnBenchSearch )
|
|
489
|
+
[NSThread detachNewThreadSelector:@selector(benchSearch) toTarget:self withObject:nil];
|
|
490
|
+
else if ( sender == btnBenchCreate)
|
|
491
|
+
[NSThread detachNewThreadSelector:@selector(benchCreate) toTarget:self withObject:nil];
|
|
492
|
+
else if ( sender == btnBenchBulk)
|
|
493
|
+
[NSThread detachNewThreadSelector:@selector(benchBulkSync) toTarget:self withObject:nil];
|
|
494
|
+
else if ( sender == btnBenchAsyncHttp )
|
|
495
|
+
[NSThread detachNewThreadSelector:@selector(benchAsyncHttpSync) toTarget:self withObject:nil];
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
/*
|
|
499
|
+
// The designated initializer. Override to perform setup that is required before the view is loaded.
|
|
500
|
+
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
|
|
501
|
+
if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
|
|
502
|
+
// Custom initialization
|
|
503
|
+
}
|
|
504
|
+
return self;
|
|
505
|
+
}
|
|
506
|
+
*/
|
|
507
|
+
|
|
508
|
+
/*
|
|
509
|
+
// Implement loadView to create a view hierarchy programmatically, without using a nib.
|
|
510
|
+
- (void)loadView {
|
|
511
|
+
}
|
|
512
|
+
*/
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
|
|
517
|
+
- (void)viewDidLoad {
|
|
518
|
+
[super viewDidLoad];
|
|
519
|
+
txtResult.text = @"Please press Start to execute test";
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
/*
|
|
525
|
+
// Override to allow orientations other than the default portrait orientation.
|
|
526
|
+
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
|
|
527
|
+
// Return YES for supported orientations
|
|
528
|
+
return (interfaceOrientation == UIInterfaceOrientationPortrait);
|
|
529
|
+
}
|
|
530
|
+
*/
|
|
531
|
+
|
|
532
|
+
- (void)didReceiveMemoryWarning {
|
|
533
|
+
// Releases the view if it doesn't have a superview.
|
|
534
|
+
[super didReceiveMemoryWarning];
|
|
535
|
+
|
|
536
|
+
// Release any cached data, images, etc that aren't in use.
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
- (void)viewDidUnload {
|
|
540
|
+
// Release any retained subviews of the main view.
|
|
541
|
+
// e.g. self.myOutlet = nil;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
- (void)dealloc {
|
|
546
|
+
[super dealloc];
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
@end
|