Skip to content

Commit 2f4efee

Browse files
author
virco
committed
switch to ppathstatus
1 parent 42f990e commit 2f4efee

File tree

2 files changed

+40
-17
lines changed

2 files changed

+40
-17
lines changed

poverlay.c

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
#include "pcompat.h"
2727
#include "plibs.h"
2828
#include "poverlay.h"
29-
#include "pexternalstatus.h"
29+
#include "ppathstatus.h"
3030
#include "pcache.h"
3131

3232
int overlays_running = 1;
@@ -44,7 +44,7 @@ int callbacks_running = 1;
4444

4545
#include "poverlay_mac.c"
4646

47-
#else
47+
#else
4848

4949
void overlay_main_loop(VOID){}
5050
void instance_thread(LPVOID){}
@@ -55,6 +55,8 @@ poverlay_callback * callbacks;
5555
static int callbacks_size = 15;
5656
static const int calbacks_lower_band = 20;
5757

58+
/* disable cache, psync_path_status_get() has many layers of caching internally
59+
5860
#define CACHE_PREF "P_OVERLA_CACHE_PREFIX"
5961
#define CACHE_PREF_LEN 21
6062
@@ -69,10 +71,10 @@ static int get_item_from_cache(const char* key, external_status* stat){
6971
char* reckey = psync_malloc(ketlen + CACHE_PREF_LEN + 1);
7072
overlay_cache_t * rec = NULL;
7173
uint64_t now = 0;
72-
74+
7375
memcpy(reckey, CACHE_PREF, CACHE_PREF_LEN);
7476
memcpy(reckey + CACHE_PREF_LEN , key, ketlen + 1);
75-
77+
7678
if ((rec = (overlay_cache_t *) psync_cache_get(reckey))) {
7779
now = psync_millitime();
7880
if ((now - rec->timestamp) < 100) {
@@ -89,7 +91,7 @@ static void add_item_to_cache(const char* key, external_status* stat){
8991
int ketlen = strlen(key);
9092
char* reckey = psync_malloc(ketlen + CACHE_PREF_LEN + 1);
9193
overlay_cache_t * rec = psync_malloc(sizeof(overlay_cache_t));
92-
94+
9395
strncpy(reckey, CACHE_PREF, CACHE_PREF_LEN);
9496
strncpy(reckey + CACHE_PREF_LEN , key, ketlen);
9597
@@ -98,9 +100,9 @@ static void add_item_to_cache(const char* key, external_status* stat){
98100
psync_cache_add(key, rec, 1, psync_free, 1);
99101
}
100102
101-
103+
*/
102104

103-
int psync_add_overlay_callback(int id, poverlay_callback callback)
105+
int psync_add_overlay_callback(int id, poverlay_callback callback)
104106
{
105107
poverlay_callback * callbacks_old = callbacks;
106108
int callbacks_size_old = callbacks_size;
@@ -139,14 +141,13 @@ void get_answer_to_request(message *request, message *replay)
139141
{
140142
char msg[4] = "Ok.";
141143
external_status stat = INVSYNC;
142-
msg[3] = '\0';
143144
//debug(D_NOTICE, "Client Request type [%u] len [%lu] string: [%s]", request->type, request->length, request->value);
144145
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)) {
147148
stat = do_psync_external_status(request->value);
148149
}
149-
150+
150151
if (stat == INSYNC) {
151152
replay->type = 10;
152153
}
@@ -159,11 +160,30 @@ void get_answer_to_request(message *request, message *replay)
159160
}
160161
else {
161162
replay->type = 13;
162-
strncpy(msg,"No.\0",4);
163+
memcpy(msg, "No.", 4);
163164
}
164165
replay->length = sizeof(message)+4;
165166
strncpy(replay->value, msg, 4);
166167
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+
}
167187
} else if ((callbacks_running)&&(request->type < 36)) {
168188
int ind = request->type - 20;
169189
int ret = 0;
@@ -193,4 +213,4 @@ void get_answer_to_request(message *request, message *replay)
193213

194214

195215
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;}

ppathstatus.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,13 @@
3232

3333
typedef uint32_t psync_path_status_t;
3434

35-
#define PSYNC_PATH_STATUS_IN_SYNC 0
36-
#define PSYNC_PATH_STATUS_IN_PROG 1
37-
#define PSYNC_PATH_STATUS_NOT_OURS 2
38-
#define PSYNC_PATH_STATUS_NOT_FOUND 3
35+
#define PSYNC_PATH_STATUS_IN_SYNC 0
36+
#define PSYNC_PATH_STATUS_IN_PROG 1
37+
#define PSYNC_PATH_STATUS_PAUSED 2
38+
#define PSYNC_PATH_STATUS_REMOTE_FULL 3
39+
#define PSYNC_PATH_STATUS_LOCAL_FULL 4
40+
#define PSYNC_PATH_STATUS_NOT_OURS 5
41+
#define PSYNC_PATH_STATUS_NOT_FOUND 6
3942

4043
#define PSYNC_PATH_STATUS_BITS 5
4144

0 commit comments

Comments
 (0)