int Rcache() { Cache cache; int nRet = cache.Attach(g_sKeyFile, READER); if(nRet < 0) { printf("%s\n", cache.Strerr() ); return -1; } printf("Attach success %d\n", nRet); if( cache.Register( 0 ) < 0) return -1; gettimeofday(&time_c, NULL); while (true) { if (_HandleSignal() < 0) break; gettimeofday(&time_a, NULL); nRet = cache.Read(rbuff, sizeof(rbuff), g_nSig); gettimeofday(&time_b, NULL); struct timeval *time_w = (struct timeval *)(rbuff); if(nRet == 0) { printf("writer exit\n"); continue; } if (nRet != g_len) { printf("read fialed nRet %d %s\n", nRet, cache.Strerr()); break; } g_count0++; if(g_verify == 1) { struct data* d = (struct data* )(rbuff+sizeof(struct timeval)); if( d->compare() < 0) { printf("format error %s\n");fflush(NULL); } } unsigned long long use_time0 = (time_b.tv_sec - time_a.tv_sec) * 1000000 + (time_b.tv_usec - time_a.tv_usec); total_time0 += use_time0; unsigned long long delay_time = (time_b.tv_sec - time_w->tv_sec) * 1000000 + (time_b.tv_usec - time_w->tv_usec); if(delay_time < 10000) { if(delay_time > g_delay_max) g_delay_max = delay_time; recv_delay_count0++; recv_delay0 += delay_time; } } return 0; }
int Cache_() { Cache cachew; Cache cacher; int nRet = cachew.Attach(g_sKeyFile, WRITER); if (nRet < 0) { printf("%s\n", cachew.Strerr()); return -1; } nRet = cacher.Attach(g_sKeyFile, READER); if (nRet < 0) { printf("%s\n", cacher.Strerr()); return -1; } printf("Attach success %d\n", nRet); nRet = cachew.Register(); if (nRet < 0) { printf("%s\n", cachew.Strerr()); return -1; } nRet = cacher.Register(); if (nRet < 0) { printf("%s\n", cacher.Strerr()); return -1; } printf("Register OK %d\n", nRet); while (true) { if (_HandleSignal() < 0) break; gettimeofday(&time_a, NULL); nRet = cachew.Write(wbuff, g_len); gettimeofday(&time_b, NULL); if (nRet != g_len) { printf("fialed %s\n", cachew.Strerr()); break; } if(g_usleep > 0) usleep(g_usleep); gettimeofday(&time_c, NULL); nRet = cacher.Read(rbuff, sizeof(rbuff), g_nSig); gettimeofday(&time_d, NULL); if (nRet != g_len) { printf("fialed %s\n", cacher.Strerr()); break; } g_count1++; g_count2++; unsigned long long use_time1 = (time_b.tv_sec - time_a.tv_sec) * 1000000 + (time_b.tv_usec - time_a.tv_usec); total_time1 += use_time1; unsigned long long use_time2 = (time_d.tv_sec - time_c.tv_sec) * 1000000 + (time_d.tv_usec - time_c.tv_usec); total_time2 += use_time2; } return 0; }