rhodes 2.0.2 → 2.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +10 -0
- data/lib/framework/rho/rhoerror.rb +4 -0
- data/lib/framework/rhodes.rb +2 -2
- data/lib/framework/rhom/rhom.rb +21 -1
- data/lib/framework/version.rb +2 -2
- data/lib/rhodes.rb +2 -2
- data/platform/android/Rhodes/AndroidManifest.xml +2 -2
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Rhodes.java +21 -6
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesInstance.java +1 -1
- data/platform/bb/rhodes/src/com/rho/RhoRubyHelper.java +10 -0
- data/platform/bb/rhodes/src/com/rho/net/NetworkAccess.java +1 -1
- data/platform/bb/rhodes/src/com/rho/rubyext/GeoLocation.java +2 -2
- data/platform/bb/rhodes/src/rhomobile/PushListeningThread.java +4 -2
- data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +52 -11
- data/platform/iphone/Classes/NativeBar.m +37 -18
- data/platform/iphone/Classes/Rhodes.h +2 -0
- data/platform/iphone/Classes/Rhodes.m +27 -8
- data/platform/iphone/Classes/SimpleMainView.h +7 -5
- data/platform/iphone/Classes/SimpleMainView.m +155 -36
- data/platform/iphone/Classes/TabbedMainView.h +2 -4
- data/platform/iphone/Classes/TabbedMainView.m +12 -10
- data/platform/iphone/Classes/WebView.m +1 -0
- data/platform/iphone/Info.plist +7 -1
- data/platform/iphone/icon114.png +0 -0
- data/platform/iphone/icon57.png +0 -0
- data/platform/iphone/icon72.png +0 -0
- data/platform/iphone/rbuild/iphone.rake +102 -16
- data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +12 -0
- data/platform/shared/common/IRhoThreadImpl.h +1 -1
- data/platform/shared/common/PosixThreadImpl.cpp +17 -22
- data/platform/shared/common/PosixThreadImpl.h +1 -1
- data/platform/shared/common/RhoThread.cpp +7 -3
- data/platform/shared/common/RhoThread.h +21 -7
- data/platform/shared/common/RhodesApp.cpp +13 -9
- data/platform/shared/common/RhodesApp.h +1 -1
- data/platform/shared/common/ThreadQueue.cpp +6 -4
- data/platform/shared/rubyJVM/src/com/rho/IRhoRubyHelper.java +2 -0
- data/platform/shared/rubyJVM/src/com/rho/RhoThread.java +18 -8
- data/platform/shared/rubyJVM/src/com/rho/RhodesApp.java +70 -2
- data/platform/shared/rubyJVM/src/com/rho/ThreadQueue.java +143 -0
- data/platform/shared/rubyJVM/src/com/rho/sync/ClientRegister.java +15 -5
- data/platform/shared/rubyJVM/src/com/rho/sync/SyncEngine.java +42 -36
- data/platform/shared/rubyJVM/src/com/rho/sync/SyncNotify.java +63 -20
- data/platform/shared/rubyJVM/src/com/rho/sync/SyncSource.java +4 -4
- data/platform/shared/rubyJVM/src/com/rho/sync/SyncThread.java +12 -2
- data/platform/shared/rubyJVM/src/com/xruby/runtime/lang/RhoSupport.java +9 -3
- data/platform/shared/sync/ClientRegister.cpp +11 -3
- data/platform/shared/sync/ClientRegister.h +1 -0
- data/platform/shared/sync/SyncEngine.cpp +38 -35
- data/platform/shared/sync/SyncEngine.h +2 -1
- data/platform/shared/sync/SyncNotify.cpp +53 -20
- data/platform/shared/sync/SyncNotify.h +9 -2
- data/platform/shared/sync/SyncSource.cpp +3 -3
- data/platform/shared/sync/SyncSource.h +1 -1
- data/platform/shared/sync/SyncThread.cpp +9 -2
- data/platform/wm/rhodes/Alert.cpp +35 -21
- data/platform/wm/rhodes/Alert.h +11 -2
- data/platform/wm/rhodes/rho/common/RhoThreadImpl.cpp +11 -12
- data/platform/wm/rhodes/rho/common/RhoThreadImpl.h +2 -0
- data/res/generators/templates/application/build.yml +1 -1
- data/rhodes.gemspec +2 -2
- data/spec/framework_spec/rhoconfig.txt +1 -0
- data/spec/phone_spec/rhoconfig.txt +2 -0
- metadata +8 -5
- data/Manifest.txt +0 -5333
@@ -21,6 +21,8 @@ public class SyncNotify {
|
|
21
21
|
String m_strUrl, m_strParams;
|
22
22
|
boolean m_bRemoveAfterFire;
|
23
23
|
|
24
|
+
SyncNotification(){m_bRemoveAfterFire = false;}
|
25
|
+
|
24
26
|
SyncNotification(String strUrl, String strParams, boolean bRemoveAfterFire)
|
25
27
|
{ m_strUrl = strUrl; m_strParams = strParams; m_bRemoveAfterFire = bRemoveAfterFire; }
|
26
28
|
};
|
@@ -40,6 +42,7 @@ public class SyncNotify {
|
|
40
42
|
Hashtable/*<int,SyncNotification>*/ m_mapSyncNotifications = new Hashtable();
|
41
43
|
SyncNotification m_pSearchNotification;
|
42
44
|
SyncNotification m_bulkSyncNotify;
|
45
|
+
SyncNotification m_emptyNotify = new SyncNotification();
|
43
46
|
|
44
47
|
Mutex m_mxSyncNotifications = new Mutex();
|
45
48
|
ISyncStatusListener m_syncStatusListener = null;
|
@@ -253,9 +256,10 @@ public class SyncNotify {
|
|
253
256
|
{
|
254
257
|
SyncSource src = (SyncSource)sources.elementAt(nSrc);
|
255
258
|
|
256
|
-
fireSyncNotification( src, true, src.m_nErrCode, "");
|
257
259
|
if ( getSync().getState() == SyncEngine.esStop )
|
258
|
-
fireAllSyncNotifications(true, src.m_nErrCode,
|
260
|
+
fireAllSyncNotifications(true, src.m_nErrCode, src.m_strError, sources, nSrc );
|
261
|
+
else
|
262
|
+
fireSyncNotification( src, true, src.m_nErrCode, "");
|
259
263
|
|
260
264
|
cleanCreateObjectErrors();
|
261
265
|
}
|
@@ -346,14 +350,6 @@ public class SyncNotify {
|
|
346
350
|
}
|
347
351
|
}
|
348
352
|
|
349
|
-
void fireAllSyncNotifications( boolean bFinish, int nErrCode, String strMessage, Vector/*Ptr<CSyncSource*>&*/ sources )
|
350
|
-
{
|
351
|
-
for( int i = 0; i < sources.size(); i++ )
|
352
|
-
{
|
353
|
-
doFireSyncNotification( (SyncSource)sources.elementAt(i), bFinish, nErrCode, strMessage );
|
354
|
-
}
|
355
|
-
}
|
356
|
-
|
357
353
|
void fireBulkSyncNotification( boolean bFinish, String status, String partition, int nErrCode )
|
358
354
|
{
|
359
355
|
if ( getSync().getState() == SyncEngine.esExit )
|
@@ -414,7 +410,41 @@ public class SyncNotify {
|
|
414
410
|
}
|
415
411
|
|
416
412
|
}
|
417
|
-
|
413
|
+
|
414
|
+
void fireAllSyncNotifications( boolean bFinish, int nErrCode, String strError, Vector/*Ptr<CSyncSource*>&*/ sources, int nCurSrc )
|
415
|
+
{
|
416
|
+
synchronized(m_mxSyncNotifications)
|
417
|
+
{
|
418
|
+
if ( nCurSrc >= 0 )
|
419
|
+
{
|
420
|
+
SyncSource src = (SyncSource)sources.elementAt(nCurSrc);
|
421
|
+
SyncNotification pSN = getSyncNotifyBySrc(src);
|
422
|
+
if ( pSN != null )
|
423
|
+
{
|
424
|
+
src.m_strError = strError;
|
425
|
+
src.m_nErrCode = nErrCode;
|
426
|
+
|
427
|
+
fireSyncNotification( src, bFinish, nErrCode, "" );
|
428
|
+
return;
|
429
|
+
}
|
430
|
+
}
|
431
|
+
|
432
|
+
//find any source with notify
|
433
|
+
for( int i = 0; i < (int)sources.size(); i++ )
|
434
|
+
{
|
435
|
+
SyncSource src = (SyncSource)sources.elementAt(i);
|
436
|
+
SyncNotification pSN = getSyncNotifyBySrc(src);
|
437
|
+
if ( pSN != null )
|
438
|
+
{
|
439
|
+
src.m_strError = strError;
|
440
|
+
src.m_nErrCode = nErrCode;
|
441
|
+
fireSyncNotification( src, bFinish, nErrCode, "" );
|
442
|
+
break;
|
443
|
+
}
|
444
|
+
}
|
445
|
+
}
|
446
|
+
}
|
447
|
+
|
418
448
|
void fireSyncNotification( SyncSource src, boolean bFinish, int nErrCode, String strMessage )
|
419
449
|
{
|
420
450
|
if ( getSync().getState() == SyncEngine.esExit )
|
@@ -431,10 +461,24 @@ public class SyncNotify {
|
|
431
461
|
}
|
432
462
|
}
|
433
463
|
|
434
|
-
doFireSyncNotification(src, bFinish, nErrCode,
|
464
|
+
doFireSyncNotification(src, bFinish, nErrCode, "" );
|
435
465
|
}
|
436
466
|
|
437
|
-
|
467
|
+
SyncNotification getSyncNotifyBySrc(SyncSource src)
|
468
|
+
{
|
469
|
+
SyncNotification pSN = null;
|
470
|
+
if ( src.isSearch() )
|
471
|
+
pSN = m_pSearchNotification;
|
472
|
+
else
|
473
|
+
pSN = (SyncNotification)m_mapSyncNotifications.get(src.getID());
|
474
|
+
|
475
|
+
if ( pSN == null )//&& !getSync().isNoThreadedMode() )
|
476
|
+
return null;
|
477
|
+
|
478
|
+
return pSN != null ? pSN : m_emptyNotify;
|
479
|
+
}
|
480
|
+
|
481
|
+
void doFireSyncNotification( SyncSource src, boolean bFinish, int nErrCode, String strError )
|
438
482
|
{
|
439
483
|
if ( src == null || getSync().isStoppedByUser() )
|
440
484
|
return; //TODO: implement all sources callback
|
@@ -444,12 +488,7 @@ public class SyncNotify {
|
|
444
488
|
boolean bRemoveAfterFire = bFinish;
|
445
489
|
{
|
446
490
|
synchronized(m_mxSyncNotifications){
|
447
|
-
SyncNotification sn =
|
448
|
-
if ( src.isSearch() )
|
449
|
-
sn = m_pSearchNotification;
|
450
|
-
else
|
451
|
-
sn = (SyncNotification)m_mapSyncNotifications.get(src.getID());
|
452
|
-
|
491
|
+
SyncNotification sn = getSyncNotifyBySrc(src);
|
453
492
|
if ( sn == null )
|
454
493
|
return;
|
455
494
|
|
@@ -474,7 +513,11 @@ public class SyncNotify {
|
|
474
513
|
|
475
514
|
strBody += "error";
|
476
515
|
strBody += "&error_code=" + nErrCode;
|
477
|
-
|
516
|
+
|
517
|
+
if ( strError != null && strError.length() > 0 )
|
518
|
+
strBody += "&error_message=" + URI.urlEncode(strError);
|
519
|
+
else
|
520
|
+
strBody += "&error_message=" + URI.urlEncode(src.m_strError);
|
478
521
|
}
|
479
522
|
}
|
480
523
|
else
|
@@ -77,7 +77,7 @@ class SyncSource
|
|
77
77
|
boolean m_bGetAtLeastOnePage = false;
|
78
78
|
int m_nErrCode = RhoRuby.ERR_NONE;
|
79
79
|
String m_strError = "";
|
80
|
-
|
80
|
+
boolean m_bIsSearch = false;
|
81
81
|
|
82
82
|
//String m_strPushBody = "";
|
83
83
|
Vector/*Ptr<CSyncBlob*>*/ m_arSyncBlobs = new Vector();
|
@@ -139,7 +139,7 @@ class SyncSource
|
|
139
139
|
m_bGetAtLeastOnePage = false;
|
140
140
|
|
141
141
|
m_nErrCode = RhoRuby.ERR_NONE;
|
142
|
-
m_bIsSearch =
|
142
|
+
m_bIsSearch = m_syncEngine.getState() == SyncEngine.esSearch;
|
143
143
|
m_bSchemaSource = db.isTableExist(m_strName);
|
144
144
|
}
|
145
145
|
|
@@ -158,7 +158,7 @@ class SyncSource
|
|
158
158
|
m_bGetAtLeastOnePage = false;
|
159
159
|
|
160
160
|
m_nErrCode = RhoRuby.ERR_NONE;
|
161
|
-
m_bIsSearch =
|
161
|
+
m_bIsSearch = m_syncEngine.getState() == SyncEngine.esSearch;
|
162
162
|
|
163
163
|
IDBResult res = db.executeSQL("SELECT token,associations from sources WHERE source_id=?", m_nID);
|
164
164
|
if ( !res.isEnd() )
|
@@ -203,7 +203,7 @@ class SyncSource
|
|
203
203
|
getNotify().fireSyncNotification(null, false, RhoRuby.ERR_NONE, RhoRuby.getMessageText("syncronizing") + getName() + "...");
|
204
204
|
|
205
205
|
TimeInterval startTime = TimeInterval.getCurrentTime();
|
206
|
-
m_bIsSearch = false;
|
206
|
+
//m_bIsSearch = false;
|
207
207
|
|
208
208
|
try{
|
209
209
|
if ( isEmptyToken() )
|
@@ -133,7 +133,6 @@ public class SyncThread extends RhoThread
|
|
133
133
|
{
|
134
134
|
m_oSyncEngine.exitSync();
|
135
135
|
stop(SYNC_WAIT_BEFOREKILL_SECONDS);
|
136
|
-
LOG.INFO( "Sync engine thread shutdown" );
|
137
136
|
|
138
137
|
if ( ClientRegister.getInstance() != null )
|
139
138
|
ClientRegister.getInstance().Destroy();
|
@@ -246,6 +245,8 @@ public class SyncThread extends RhoThread
|
|
246
245
|
}
|
247
246
|
}
|
248
247
|
}
|
248
|
+
|
249
|
+
LOG.INFO("Sync engine thread shutdown");
|
249
250
|
}
|
250
251
|
|
251
252
|
boolean isNoCommands()
|
@@ -670,9 +671,18 @@ public class SyncThread extends RhoThread
|
|
670
671
|
getSyncEngine().setSyncServer(syncserver);
|
671
672
|
|
672
673
|
if ( syncserver != null && syncserver.length() > 0 )
|
674
|
+
{
|
673
675
|
SyncThread.getInstance().start(SyncThread.epLow);
|
676
|
+
if ( ClientRegister.getInstance() != null )
|
677
|
+
ClientRegister.getInstance().startUp();
|
678
|
+
}
|
674
679
|
else
|
675
|
-
|
680
|
+
{
|
681
|
+
//DO NOT STOP thread. because they cannot be restarted
|
682
|
+
//SyncThread.getInstance().stop(SYNC_WAIT_BEFOREKILL_SECONDS);
|
683
|
+
//if ( ClientRegister.getInstance() != null )
|
684
|
+
// ClientRegister.getInstance().stop(SYNC_WAIT_BEFOREKILL_SECONDS);
|
685
|
+
}
|
676
686
|
|
677
687
|
}catch(Exception e)
|
678
688
|
{
|
@@ -2,6 +2,7 @@ package com.xruby.runtime.lang;
|
|
2
2
|
|
3
3
|
import com.rho.IRhoRubyHelper;
|
4
4
|
import com.rho.RhoClassFactory;
|
5
|
+
import com.rho.RhoConf;
|
5
6
|
import com.rho.RhoEmptyLogger;
|
6
7
|
import com.rho.RhoLogger;
|
7
8
|
import com.rho.RhodesApp;
|
@@ -181,12 +182,12 @@ public class RhoSupport {
|
|
181
182
|
required_file = required_file.replace('\\', '.');
|
182
183
|
required_file = StringMe.replaceAll(required_file,"-", "minus");
|
183
184
|
|
184
|
-
int nDot = required_file.lastIndexOf('.');
|
185
|
+
/*int nDot = required_file.lastIndexOf('.');
|
185
186
|
if (nDot>0)
|
186
187
|
{
|
187
188
|
String fName = required_file.substring(nDot+1);
|
188
189
|
required_file = required_file.substring(0, nDot+1) + fName.toLowerCase();
|
189
|
-
}
|
190
|
+
}*/
|
190
191
|
|
191
192
|
required_file += ".main";
|
192
193
|
return getAppName() + "." + required_file;
|
@@ -259,7 +260,12 @@ public class RhoSupport {
|
|
259
260
|
}
|
260
261
|
|
261
262
|
if ( strValue == null || strValue.length() == 0 )
|
262
|
-
|
263
|
+
{
|
264
|
+
if ( RhoConf.getInstance().isExist(name) )
|
265
|
+
strValue = RhoConf.getInstance().getString(name);
|
266
|
+
else
|
267
|
+
return RubyConstant.QNIL;
|
268
|
+
}
|
263
269
|
|
264
270
|
return ObjectFactory.createString(strValue);
|
265
271
|
}
|
@@ -41,8 +41,7 @@ CClientRegister::CClientRegister(common::IRhoClassFactory* factory,const char* d
|
|
41
41
|
|
42
42
|
delete factory;
|
43
43
|
|
44
|
-
|
45
|
-
start(epLow);
|
44
|
+
startUp();
|
46
45
|
}
|
47
46
|
|
48
47
|
CClientRegister::~CClientRegister()
|
@@ -53,10 +52,19 @@ CClientRegister::~CClientRegister()
|
|
53
52
|
m_pInstance = null;
|
54
53
|
}
|
55
54
|
|
55
|
+
void CClientRegister::startUp()
|
56
|
+
{
|
57
|
+
if ( RHOCONF().getString("syncserver").length() > 0 )
|
58
|
+
{
|
59
|
+
start(epLow);
|
60
|
+
stopWait();
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
56
64
|
void CClientRegister::run()
|
57
65
|
{
|
58
66
|
LOG(INFO)+"ClientRegister start";
|
59
|
-
while(!
|
67
|
+
while(!isStopping())
|
60
68
|
{
|
61
69
|
if ( CSyncThread::getInstance() != null )
|
62
70
|
{
|
@@ -37,11 +37,12 @@ void CSyncEngine::initProtocol()
|
|
37
37
|
m_SyncProtocol = new CSyncProtocol_3();
|
38
38
|
}
|
39
39
|
|
40
|
-
void CSyncEngine::prepareSync(ESyncState eState)
|
40
|
+
void CSyncEngine::prepareSync(ESyncState eState, const CSourceID* oSrcID)
|
41
41
|
{
|
42
42
|
setState(eState);
|
43
43
|
m_bStopByUser = false;
|
44
44
|
m_nErrCode = RhoRuby.ERR_NONE;
|
45
|
+
m_strError = "";
|
45
46
|
|
46
47
|
loadAllSources();
|
47
48
|
|
@@ -59,20 +60,26 @@ void CSyncEngine::prepareSync(ESyncState eState)
|
|
59
60
|
}else
|
60
61
|
m_nErrCode = RhoRuby.ERR_CLIENTISNOTLOGGEDIN;
|
61
62
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
63
|
+
CSyncSource* src = null;
|
64
|
+
if ( oSrcID != null )
|
65
|
+
src = findSource(*oSrcID);
|
66
|
+
|
67
|
+
if ( src != null )
|
68
|
+
{
|
69
|
+
src->m_nErrCode = m_nErrCode;
|
70
|
+
src->m_strError = m_strError;
|
71
|
+
getNotify().fireSyncNotification(src, true, src->m_nErrCode, "");
|
67
72
|
}else
|
68
|
-
|
73
|
+
{
|
74
|
+
getNotify().fireAllSyncNotifications(true, m_nErrCode, m_strError, m_sources, getStartSource());
|
75
|
+
}
|
69
76
|
|
70
77
|
stopSync();
|
71
78
|
}
|
72
79
|
|
73
80
|
void CSyncEngine::doSyncAllSources()
|
74
81
|
{
|
75
|
-
prepareSync(esSyncAllSources);
|
82
|
+
prepareSync(esSyncAllSources, null);
|
76
83
|
|
77
84
|
if ( isContinueSync() )
|
78
85
|
{
|
@@ -104,7 +111,7 @@ void CSyncEngine::doSyncAllSources()
|
|
104
111
|
|
105
112
|
void CSyncEngine::doSearch(rho::Vector<rho::String>& arSources, String strParams, String strAction, boolean bSearchSyncChanges, int nProgressStep)
|
106
113
|
{
|
107
|
-
prepareSync(esSearch);
|
114
|
+
prepareSync(esSearch, null);
|
108
115
|
if ( !isContinueSync() )
|
109
116
|
{
|
110
117
|
if ( getState() != esExit )
|
@@ -125,7 +132,6 @@ void CSyncEngine::doSearch(rho::Vector<rho::String>& arSources, String strParams
|
|
125
132
|
}
|
126
133
|
}
|
127
134
|
|
128
|
-
int nErrCode = 0;
|
129
135
|
while( isContinueSync() )
|
130
136
|
{
|
131
137
|
int nSearchCount = 0;
|
@@ -153,7 +159,8 @@ void CSyncEngine::doSearch(rho::Vector<rho::String>& arSources, String strParams
|
|
153
159
|
if ( !resp.isOK() )
|
154
160
|
{
|
155
161
|
stopSync();
|
156
|
-
|
162
|
+
m_nErrCode = RhoRuby.getErrorFromResponse(resp);
|
163
|
+
m_strError = resp.getCharData();
|
157
164
|
continue;
|
158
165
|
}
|
159
166
|
|
@@ -177,7 +184,8 @@ void CSyncEngine::doSearch(rho::Vector<rho::String>& arSources, String strParams
|
|
177
184
|
LOG(ERROR) + "Sync server send search data with incompatible version. Client version: " + convertToStringA(getProtocol().getVersion()) +
|
178
185
|
"; Server response version: " + convertToStringA(nVersion);
|
179
186
|
stopSync();
|
180
|
-
|
187
|
+
m_nErrCode = RhoRuby.ERR_UNEXPECTEDSERVERRESPONSE;
|
188
|
+
m_strError = resp.getCharData();
|
181
189
|
continue;
|
182
190
|
}
|
183
191
|
|
@@ -185,7 +193,8 @@ void CSyncEngine::doSearch(rho::Vector<rho::String>& arSources, String strParams
|
|
185
193
|
{
|
186
194
|
LOG(ERROR) + "Sync server send search data without source name.";
|
187
195
|
stopSync();
|
188
|
-
|
196
|
+
m_nErrCode = RhoRuby.ERR_UNEXPECTEDSERVERRESPONSE;
|
197
|
+
m_strError = resp.getCharData();
|
189
198
|
continue;
|
190
199
|
}
|
191
200
|
|
@@ -195,12 +204,12 @@ void CSyncEngine::doSearch(rho::Vector<rho::String>& arSources, String strParams
|
|
195
204
|
{
|
196
205
|
LOG(ERROR) + "Sync server send search data for unknown source name:" + strSrcName;
|
197
206
|
stopSync();
|
198
|
-
|
207
|
+
m_nErrCode = RhoRuby.ERR_UNEXPECTEDSERVERRESPONSE;
|
208
|
+
m_strError = resp.getCharData();
|
199
209
|
continue;
|
200
210
|
}
|
201
211
|
|
202
212
|
oSrcArr.reset(0);
|
203
|
-
pSrc->m_bIsSearch = true;
|
204
213
|
pSrc->setProgressStep(nProgressStep);
|
205
214
|
pSrc->processServerResponse_ver3(oSrcArr);
|
206
215
|
|
@@ -211,20 +220,7 @@ void CSyncEngine::doSearch(rho::Vector<rho::String>& arSources, String strParams
|
|
211
220
|
break;
|
212
221
|
}
|
213
222
|
|
214
|
-
|
215
|
-
{
|
216
|
-
CSyncSource& src = *m_sources.elementAt(getStartSource());
|
217
|
-
src.m_bIsSearch = true;
|
218
|
-
|
219
|
-
getNotify().fireSyncNotification(&src, true, RhoRuby.ERR_NONE, RhoRuby.getMessageText("sync_completed"));
|
220
|
-
}
|
221
|
-
else if ( nErrCode != 0 )
|
222
|
-
{
|
223
|
-
CSyncSource& src = *m_sources.elementAt(getStartSource());
|
224
|
-
src.m_nErrCode = nErrCode;
|
225
|
-
src.m_bIsSearch = true;
|
226
|
-
getNotify().fireSyncNotification(&src, true, src.m_nErrCode, "");
|
227
|
-
}
|
223
|
+
getNotify().fireAllSyncNotifications(true, m_nErrCode, m_strError, m_sources, getStartSource());
|
228
224
|
|
229
225
|
//update db info
|
230
226
|
CTimeInterval endTime = CTimeInterval::getCurrentTime();
|
@@ -250,7 +246,7 @@ void CSyncEngine::doSearch(rho::Vector<rho::String>& arSources, String strParams
|
|
250
246
|
|
251
247
|
void CSyncEngine::doSyncSource(const CSourceID& oSrcID)
|
252
248
|
{
|
253
|
-
prepareSync(esSyncSource);
|
249
|
+
prepareSync(esSyncSource, &oSrcID);
|
254
250
|
|
255
251
|
if ( isContinueSync() )
|
256
252
|
{
|
@@ -358,6 +354,9 @@ String CSyncEngine::loadClientID()
|
|
358
354
|
else
|
359
355
|
getUserDB().executeSQL("INSERT INTO client_info (client_id) values (?)", clientID);
|
360
356
|
|
357
|
+
if ( CClientRegister::getInstance() != null )
|
358
|
+
CClientRegister::getInstance()->startUp();
|
359
|
+
|
361
360
|
}else if ( bResetClient )
|
362
361
|
{
|
363
362
|
if ( !resetClientIDByNet(clientID) )
|
@@ -413,7 +412,10 @@ boolean CSyncEngine::resetClientIDByNet(const String& strClientID)//throws Excep
|
|
413
412
|
//"}}]}");
|
414
413
|
|
415
414
|
if ( !resp.isOK() )
|
415
|
+
{
|
416
416
|
m_nErrCode = RhoRuby.getErrorFromResponse(resp);
|
417
|
+
m_strError = resp.getCharData();
|
418
|
+
}
|
417
419
|
/*else
|
418
420
|
{
|
419
421
|
processServerSources(resp.getCharData());
|
@@ -459,6 +461,7 @@ String CSyncEngine::requestClientIDByNet()
|
|
459
461
|
m_nErrCode = RhoRuby.getErrorFromResponse(resp);
|
460
462
|
if ( m_nErrCode == RhoRuby.ERR_NONE )
|
461
463
|
m_nErrCode = RhoRuby.ERR_UNEXPECTEDSERVERRESPONSE;
|
464
|
+
m_strError = resp.getCharData();
|
462
465
|
}
|
463
466
|
|
464
467
|
return "";
|
@@ -675,13 +678,13 @@ void CSyncEngine::login(String name, String password, String callback)
|
|
675
678
|
else
|
676
679
|
getUserDB().executeSQL("INSERT INTO client_info (session) values (?)", strSession);
|
677
680
|
|
678
|
-
|
679
|
-
if ( CClientRegister::getInstance() != null )
|
680
|
-
CClientRegister::getInstance()->stopWait();
|
681
|
-
|
682
681
|
getNotify().callLoginCallback(callback, RhoRuby.ERR_NONE, "" );
|
683
682
|
|
684
683
|
PROF_STOP("Login");
|
684
|
+
|
685
|
+
if ( CClientRegister::getInstance() != null )
|
686
|
+
CClientRegister::getInstance()->startUp();
|
687
|
+
|
685
688
|
//}catch(Exception exc)
|
686
689
|
//{
|
687
690
|
// LOG.ERROR("Login failed.", exc);
|
@@ -715,7 +718,7 @@ void CSyncEngine::logout()
|
|
715
718
|
getUserDB().executeSQL( "UPDATE client_info SET session=NULL" );
|
716
719
|
m_strSession = "";
|
717
720
|
|
718
|
-
loadAllSources();
|
721
|
+
//loadAllSources();
|
719
722
|
}
|
720
723
|
|
721
724
|
void CSyncEngine::setSyncServer(char* syncserver)
|