Changeset 3175
Legend:
- Unmodified
- Added
- Removed
-
trunk/globals.h
r3172 r3175 201 201 202 202 #ifdef CS_CORE 203 char *PIP_ID_TXT[] = { "ECM", "EMM", "LOG", "CIN", "HUP", "RST", "KCL", " STA", "BES", "RES", NULL };203 char *PIP_ID_TXT[] = { "ECM", "EMM", "LOG", "CIN", "HUP", "RST", "KCL", "RES", NULL }; 204 204 char *RDR_CD_TXT[] = { "cd", "dsr", "cts", "ring", "none", 205 205 #ifdef USE_GPIO … … 218 218 #define PIP_ID_RST 5 // Schlocke: Restart Reader, CCcam for example (param: ridx) 219 219 #define PIP_ID_KCL 6 // Schlocke: Kill all Clients (no param) 220 #define PIP_ID_STA 7 // Schlocke: Add statistic (param: ADD_READER_STAT) 221 #define PIP_ID_BES 8 // Schlocke: Get best reader (param ECM_REQUEST, return to client with data int ridx) 222 #define PIP_ID_RES 9 // Schlocke: reset reader statistiks 223 #define PIP_ID_DCW 10 220 #define PIP_ID_RES 7 // Schlocke: reset reader statistiks 221 #define PIP_ID_DCW 8 224 222 #define PIP_ID_MAX PIP_ID_RES 225 223 -
trunk/module-stat.c
r3153 r3175 10 10 #define DEFAULT_NFB 1 11 11 12 //13 // WARNING! call all functions only from MASTER PROCESS (s)!14 //15 16 12 struct timeb nulltime; 13 pthread_mutex_t stat_busy; 17 14 18 15 int ecm_send_cache_idx = 0; … … 43 40 if (cfg->lb_reopen_seconds < 10) 44 41 cfg->lb_reopen_seconds = DEFAULT_REOPEN_SECONDS; 42 43 pthread_mutex_init(&stat_busy, NULL); 44 } 45 46 void done_stat() 47 { 48 pthread_mutex_destroy(&stat_busy); 45 49 } 46 50 … … 210 214 void add_stat(int ridx, ushort caid, ulong prid, ushort srvid, int ecm_time, int rc) 211 215 { 216 pthread_mutex_lock(&stat_busy); 217 212 218 READER_STAT *stat = get_stat(ridx, caid, prid, srvid); 213 219 if (!stat) { … … 289 295 } 290 296 } 297 pthread_mutex_unlock(&stat_busy); 291 298 } 292 299 … … 324 331 int get_best_reader(GET_READER_STAT *grs, int *result) 325 332 { 333 pthread_mutex_lock(&stat_busy); 326 334 int i; 327 335 i = chk_send_cache(grs->caid, grs->ecmd5); … … 335 343 result[8], result[9], result[10], result[11], result[12], result[13], result[14], result[15]); 336 344 345 pthread_mutex_unlock(&stat_busy); 337 346 return best_ridx; 338 347 } … … 486 495 nulltime = new_nulltime; 487 496 497 pthread_mutex_unlock(&stat_busy); 498 488 499 return best_ridx; 489 500 } … … 497 508 return; 498 509 510 pthread_mutex_lock(&stat_busy); 499 511 LLIST_ITR itr; 500 512 READER_STAT *stat = llist_itr_init(reader_stat[ridx], &itr); … … 505 517 llist_destroy(reader_stat[ridx]); 506 518 reader_stat[ridx] = NULL; 507 } 519 pthread_mutex_unlock(&stat_busy); 520 } -
trunk/oscam.c
r3174 r3175 1477 1477 add_stat.prid = er->prid; 1478 1478 add_stat.srvid = er->srvid; 1479 write_to_pipe(fd_c2m, PIP_ID_STA, (uchar*)&add_stat, sizeof(ADD_READER_STAT));1479 add_reader_stat(&add_stat); 1480 1480 } 1481 1481 … … 1958 1958 cs_debug_mask(D_TRACE, "requesting client %s best reader for %04X/%06X/%04X", username(cs_idx), grs.caid, grs.prid, grs.srvid); 1959 1959 1960 int res_write = write_to_pipe(fd_c2m, PIP_ID_BES, (uchar*)&grs, sizeof(GET_READER_STAT)); 1961 if (res_write <= 0) { 1962 cs_debug_mask(D_TRACE, "get best reader: write error!"); 1963 return; 1964 } 1965 1966 uchar *ptr; 1967 do 1968 { 1969 int n = read_from_pipe(client[cs_idx].fd_m2c_c, &ptr, 1); 1970 if (n == PIP_ID_BES) { 1971 int *best_readers = (int*)ptr; 1972 memcpy(reader_avail, best_readers, sizeof(int)*CS_MAXREADER); 1973 return; 1974 } 1975 else if (n == PIP_ID_DIR) 1976 continue; 1977 else //should neven happen 1978 cs_debug_mask(D_TRACE, "get best reader: illegal paket? n=%d", n); 1979 } while (1); 1960 get_best_reader(&grs, reader_avail); 1980 1961 } 1981 1962 … … 2535 2516 2536 2517 2537 // gets and send the best reader to the client. Called from master-process2538 void send_best_reader(GET_READER_STAT *grs)2539 {2540 //cs_debug_mask(D_TRACE, "got request for best reader for %04X/%04X/%04X", grs->caid, grs->prid, grs->srvid);2541 int best_reader[CS_MAXREADER];2542 get_best_reader(grs, best_reader);2543 //cs_debug_mask(D_TRACE, "sending best reader %d", ridx);2544 write_to_pipe(client[grs->cidx].fd_m2c, PIP_ID_BES, (uchar*)&best_reader, sizeof(best_reader));2545 }2546 2547 2518 void send_clear_reader_stat(int ridx) 2548 2519 { … … 2575 2546 restart_clients(); 2576 2547 break; 2577 case PIP_ID_STA: //Add reader statistics2578 add_reader_stat((ADD_READER_STAT *)ptr);2579 break;2580 case PIP_ID_BES: //Get best reader2581 send_best_reader((GET_READER_STAT *)ptr);2582 break;2583 2548 case PIP_ID_RES: //Reset reader statistics 2584 2549 clear_reader_stat(*(int*)ptr);
Note:
See TracChangeset
for help on using the changeset viewer.