26
26
#include "pcompat.h"
27
27
#include "plibs.h"
28
28
#include "poverlay.h"
29
- #include "pexternalstatus .h"
29
+ #include "ppathstatus .h"
30
30
#include "pcache.h"
31
31
32
32
int overlays_running = 1 ;
@@ -44,7 +44,7 @@ int callbacks_running = 1;
44
44
45
45
#include "poverlay_mac.c"
46
46
47
- #else
47
+ #else
48
48
49
49
void overlay_main_loop (VOID ){}
50
50
void instance_thread (LPVOID ){}
@@ -55,6 +55,8 @@ poverlay_callback * callbacks;
55
55
static int callbacks_size = 15 ;
56
56
static const int calbacks_lower_band = 20 ;
57
57
58
+ /* disable cache, psync_path_status_get() has many layers of caching internally
59
+
58
60
#define CACHE_PREF "P_OVERLA_CACHE_PREFIX"
59
61
#define CACHE_PREF_LEN 21
60
62
@@ -69,10 +71,10 @@ static int get_item_from_cache(const char* key, external_status* stat){
69
71
char* reckey = psync_malloc(ketlen + CACHE_PREF_LEN + 1);
70
72
overlay_cache_t * rec = NULL;
71
73
uint64_t now = 0;
72
-
74
+
73
75
memcpy(reckey, CACHE_PREF, CACHE_PREF_LEN);
74
76
memcpy(reckey + CACHE_PREF_LEN , key, ketlen + 1);
75
-
77
+
76
78
if ((rec = (overlay_cache_t *) psync_cache_get(reckey))) {
77
79
now = psync_millitime();
78
80
if ((now - rec->timestamp) < 100) {
@@ -89,7 +91,7 @@ static void add_item_to_cache(const char* key, external_status* stat){
89
91
int ketlen = strlen(key);
90
92
char* reckey = psync_malloc(ketlen + CACHE_PREF_LEN + 1);
91
93
overlay_cache_t * rec = psync_malloc(sizeof(overlay_cache_t));
92
-
94
+
93
95
strncpy(reckey, CACHE_PREF, CACHE_PREF_LEN);
94
96
strncpy(reckey + CACHE_PREF_LEN , key, ketlen);
95
97
@@ -98,9 +100,9 @@ static void add_item_to_cache(const char* key, external_status* stat){
98
100
psync_cache_add(key, rec, 1, psync_free, 1);
99
101
}
100
102
101
-
103
+ */
102
104
103
- int psync_add_overlay_callback (int id , poverlay_callback callback )
105
+ int psync_add_overlay_callback (int id , poverlay_callback callback )
104
106
{
105
107
poverlay_callback * callbacks_old = callbacks ;
106
108
int callbacks_size_old = callbacks_size ;
@@ -139,14 +141,13 @@ void get_answer_to_request(message *request, message *replay)
139
141
{
140
142
char msg [4 ] = "Ok." ;
141
143
external_status stat = INVSYNC ;
142
- msg [3 ] = '\0' ;
143
144
//debug(D_NOTICE, "Client Request type [%u] len [%lu] string: [%s]", request->type, request->length, request->value);
144
145
if (request -> type < 20 ) {
145
-
146
- if (overlays_running && !get_item_from_cache (request -> value , & stat )) {
146
+
147
+ /* if (overlays_running && !get_item_from_cache(request->value, &stat)) {
147
148
stat = do_psync_external_status(request->value);
148
149
}
149
-
150
+
150
151
if (stat == INSYNC) {
151
152
replay->type = 10;
152
153
}
@@ -159,11 +160,30 @@ void get_answer_to_request(message *request, message *replay)
159
160
}
160
161
else {
161
162
replay->type = 13;
162
- strncpy (msg ,"No.\0" , 4 );
163
+ memcpy (msg, "No.", 4);
163
164
}
164
165
replay->length = sizeof(message)+4;
165
166
strncpy(replay->value, msg, 4);
166
167
add_item_to_cache(request->value, &stat);
168
+ */
169
+ if (overlays_running )
170
+ stat = psync_path_status_get (request -> value );
171
+ switch (psync_path_status_get_status (stat )) {
172
+ case PSYNC_PATH_STATUS_IN_SYNC :
173
+ replay -> type = 10 ;
174
+ break ;
175
+ case PSYNC_PATH_STATUS_IN_PROG :
176
+ replay -> type = 12 ;
177
+ break ;
178
+ case PSYNC_PATH_STATUS_PAUSED :
179
+ case PSYNC_PATH_STATUS_REMOTE_FULL :
180
+ case PSYNC_PATH_STATUS_LOCAL_FULL :
181
+ replay -> type = 11 ;
182
+ break ;
183
+ default :
184
+ replay -> type = 13 ;
185
+ memcpy (msg , "No." , 4 );
186
+ }
167
187
} else if ((callbacks_running )&& (request -> type < 36 )) {
168
188
int ind = request -> type - 20 ;
169
189
int ret = 0 ;
@@ -193,4 +213,4 @@ void get_answer_to_request(message *request, message *replay)
193
213
194
214
195
215
int psync_overlays_running (){return overlays_running ;}
196
- int psync_ovr_callbacks_running (){return callbacks_running ;}
216
+ int psync_ovr_callbacks_running (){return callbacks_running ;}
0 commit comments