void nodewait_start_connect(struct nodewait *nw) { #ifndef WIN32 pthread_t thr; pthread_attr_t attr; #else DWORD thread_id; HANDLE thread_h; #endif PICA_debug1("connecting to node %.255s %u ...", nw->addr.addr, nw->addr.port); nw->state = PICA_NODEWAIT_CONNECTING; #ifndef WIN32 if (0 != pthread_attr_init(&attr)) PICA_error("pthread_attr_init() call failed."); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); if (0 != pthread_create(&thr, &attr, nodewait_connect_thread, (void*)nw)) PICA_error("unable to create thread: %s", strerror(errno)); pthread_attr_destroy(&attr); #else thread_h = CreateThread(NULL, 4096, nodewait_connect_thread, (void*)nw, 0, &thread_id); if (NULL != thread_h) CloseHandle(thread_h); else PICA_error("unable to create thread: %u", GetLastError()); #endif }
static int nodeaddr_load_sqlite_cb(void *p, int argc, char **argv, char **ColName) { struct cb_param *cp = (struct cb_param*)p; struct PICA_nodeaddr *na; if (argc != 4) return 1; na = (struct PICA_nodeaddr *)malloc(sizeof(struct PICA_nodeaddr)); if (!na) return 1; PICA_debug1("node address loaded: addr: %s port %s\n", argv[0], argv[1]);//debug strncpy(na->addr, argv[0], 255); na->addr[255] = '\0'; na->port = atoi(argv[1]); na->inactive_count = atoi(argv[2]); na->last_active = atoi(argv[3]); na->next = *(cp->n_addr); *(cp->n_addr) = na; (*(cp->N))++; return 0; }
void nodewait_start_resolve(struct PICA_nodeaddr *a) { struct nodewait *nw; #ifndef WIN32 pthread_t thr; pthread_attr_t attr; #else DWORD thread_id; HANDLE thread_h; #endif nw = nodewait_list_addnew(); if (!nw) return; nw ->addr = *a; PICA_debug1("starting to resolve node address %.255s %u ...", nw->addr.addr, nw->addr.port); nw->state = PICA_NODEWAIT_RESOLVING; #ifndef WIN32 if (0 != pthread_attr_init(&attr)) PICA_error("pthread_attr_init() call failed."); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); if (0 != pthread_create(&thr, &attr, nodewait_resolve_thread, (void*)nw)) PICA_error("unable to create thread: %s", strerror(errno)); pthread_attr_destroy(&attr); #else thread_h = CreateThread(NULL, 4096, nodewait_resolve_thread, (void*)nw, 0, &thread_id); if (NULL != thread_h) CloseHandle(thread_h); else PICA_error("unable to create thread: %u", GetLastError()); #endif }