Lines Matching refs:conn
126 static int _fs_restart_connection ( FSFpePtr conn );
131 static void _fs_client_access ( FSFpePtr conn, pointer client, Bool sync );
132 static void _fs_client_resolution ( FSFpePtr conn );
133 static fsGenericReply *fs_get_reply (FSFpePtr conn, int *error);
134 static int fs_await_reply (FSFpePtr conn);
135 static void _fs_do_blocked (FSFpePtr conn);
147 _fs_close_server (FSFpePtr conn);
153 _fs_wait_connect (FSFpePtr conn);
156 _fs_send_init_packets (FSFpePtr conn);
159 _fs_check_reconnect (FSFpePtr conn);
162 _fs_start_reconnect (FSFpePtr conn);
165 _fs_free_conn (FSFpePtr conn);
191 _fs_add_req_log(FSFpePtr conn, int opcode)
193 conn->current_seq++;
195 conn->current_seq, opcode);
196 conn->reqbuffer[conn->reqindex].opcode = opcode;
197 conn->reqbuffer[conn->reqindex].sequence = conn->current_seq;
198 conn->reqindex++;
199 if (conn->reqindex == REQUEST_LOG_SIZE)
200 conn->reqindex = 0;
204 _fs_add_rep_log (FSFpePtr conn, fsGenericReply *rep)
209 if (conn->reqbuffer[i].sequence == rep->sequenceNumber)
217 conn->reqbuffer[i].opcode);
232 #define _fs_add_req_log(conn,op) ((conn)->current_seq++)
233 #define _fs_add_rep_log(conn,rep)
245 _fs_client_resolution(FSFpePtr conn)
259 _fs_add_req_log(conn, FS_SetResolution);
260 if (_fs_write(conn, (char *) &srreq, SIZEOF(fsSetResolutionReq)) != -1)
261 (void)_fs_write_pad(conn, (char *) res,
272 fs_close_conn(FSFpePtr conn)
276 _fs_close_server (conn);
278 for (client = conn->clients; client; client = nclient)
283 conn->clients = NULL;
295 FSFpePtr conn;
308 conn = _fs_init_conn (name);
309 if (!conn)
316 _fs_free_conn (conn);
321 fpe->private = conn;
322 conn->next = fs_fpes;
323 fs_fpes = conn;
324 ret = _fs_wait_connect (conn);
373 FSFpePtr conn = (FSFpePtr) fpe->private, *prev;
378 if (*prev == conn)
380 *prev = conn->next;
384 _fs_unmark_block (conn, conn->blockState);
385 fs_close_conn(conn);
387 _fs_free_conn (conn);
406 FSFpePtr conn = (FSFpePtr) fpe->private;
438 for (prev = &conn->blockedRequests; *prev; prev = &(*prev)->next)
446 _fs_set_pending_reply (FSFpePtr conn)
450 for (blockrec = conn->blockedRequests; blockrec; blockrec = blockrec->next)
455 conn->blockedReplyTime = GetTimeInMillis () + FontServerRequestTimeout;
456 _fs_mark_block (conn, FS_PENDING_REPLY);
459 _fs_unmark_block (conn, FS_PENDING_REPLY);
463 _fs_remove_block_rec(FSFpePtr conn, FSBlockDataPtr blockrec)
467 for (prev = &conn->blockedRequests; *prev; prev = &(*prev)->next)
480 _fs_set_pending_reply (conn);
524 _fs_clean_aborted_blockrec(FSFpePtr conn, FSBlockDataPtr blockrec)
549 FD_SET(conn->fs_fd, &_fs_fd_mask);
558 fs_abort_blockrec(FSFpePtr conn, FSBlockDataPtr blockrec)
560 _fs_clean_aborted_blockrec (conn, blockrec);
561 _fs_remove_block_rec (conn, blockrec);
604 fs_get_reply (FSFpePtr conn, int *error)
611 if (conn->fs_fd == -1 || !FD_ISSET (conn->fs_fd, &_fs_fd_mask))
617 ret = _fs_start_read (conn, sizeof (fsGenericReply), &buf);
636 _fs_connection_died (conn);
641 ret = _fs_start_read (conn, rep->length << 2, &buf);
654 fs_reply_ready (FSFpePtr conn)
658 if (conn->fs_fd == -1 || !FD_ISSET (conn->fs_fd, &_fs_fd_mask))
660 if (fs_data_read (conn) < sizeof (fsGenericReply))
662 rep = (fsGenericReply *) (conn->inBuf.buf + conn->inBuf.remove);
663 if (fs_data_read (conn) < rep->length << 2)
669 _fs_pending_reply (FSFpePtr conn)
671 if (!(conn->blockState & FS_PENDING_REPLY))
673 _fs_mark_block (conn, FS_PENDING_REPLY);
674 conn->blockedReplyTime = GetTimeInMillis () + FontServerRequestTimeout;
679 _fs_prepare_for_reply (FSFpePtr conn)
681 _fs_pending_reply (conn);
682 _fs_flush (conn);
689 fs_await_reply (FSFpePtr conn)
693 if (conn->blockState & FS_COMPLETE_REPLY)
696 while (!fs_get_reply (conn, &ret))
700 if (_fs_wait_for_readable (conn, FontServerRequestTimeout) != FSIO_READY)
702 _fs_connection_died (conn);
715 FSFpePtr conn = (FSFpePtr) fpe->private;
722 rep = (fsOpenBitmapFontReply *) fs_get_reply (conn, &ret);
729 _fs_done_read (conn, rep->length << 2);
756 for (blockOrig = conn->blockedRequests;
789 conn->blockedReplyTime = GetTimeInMillis () + FontServerRequestTimeout;
792 _fs_done_read (conn, rep->length << 2);
855 FSFpePtr conn = (FSFpePtr) fpe->private;
867 rep = (fsQueryXInfoReply *) fs_get_reply (conn, &ret);
874 _fs_done_read (conn, rep->length << 2);
897 _fs_init_fontinfo(conn, pInfo);
944 _fs_done_read (conn, rep->length << 2);
999 _fs_flush (conn);
1008 conn->blockedReplyTime = GetTimeInMillis () + FontServerRequestTimeout;
1016 FSFpePtr conn = (FSFpePtr) fpe->private;
1032 rep = (fsQueryXExtents16Reply *) fs_get_reply (conn, &ret);
1039 _fs_done_read (conn, rep->length << 2);
1049 if (bfont->pfont->info.terminalFont && conn->fsMajorVersion > 1)
1077 _fs_done_read (conn, rep->length << 2);
1132 _fs_done_read (conn, rep->length << 2);
1207 conn->blockedReplyTime = GetTimeInMillis () + FontServerRequestTimeout;
1281 _fs_mark_block (FSFpePtr conn, CARD32 mask)
1283 conn->blockState |= mask;
1288 _fs_unmark_block (FSFpePtr conn, CARD32 mask)
1292 if (conn->blockState & mask)
1294 conn->blockState &= ~mask;
1308 FSFpePtr conn;
1316 for (conn = fs_fpes; conn; conn = conn->next)
1317 if (conn->blockState & FS_PENDING_WRITE)
1318 _fs_flush (conn);
1341 for (conn = fs_fpes; conn; conn = conn->next)
1343 if (conn->blockState & FS_RECONNECTING)
1345 wakeup = conn->blockedConnectTime;
1349 if (conn->blockState & FS_BROKEN_CONNECTION)
1351 wakeup = conn->brokenConnectionTime;
1355 if (conn->blockState & FS_BROKEN_WRITE)
1357 wakeup = conn->brokenWriteTime;
1361 if (conn->blockState & FS_PENDING_REPLY)
1363 wakeup = conn->blockedReplyTime;
1381 fs_handle_unexpected(FSFpePtr conn, fsGenericReply *rep)
1390 _fs_add_req_log(conn, FS_Noop);
1391 _fs_write(conn, (char *) &req, SIZEOF(fsNoopReq));
1394 _fs_done_read (conn, rep->length << 2);
1400 FSFpePtr conn = (FSFpePtr) fpe->private;
1406 if ((rep = fs_get_reply (conn, &ret)))
1408 _fs_add_rep_log (conn, rep);
1409 for (blockrec = conn->blockedRequests;
1419 fs_handle_unexpected(conn, rep);
1453 _fs_unmark_block (conn, FS_PENDING_REPLY);
1456 if (fs_reply_ready (conn))
1457 _fs_mark_block (conn, FS_COMPLETE_REPLY);
1459 _fs_unmark_block (conn, FS_COMPLETE_REPLY);
1467 FSFpePtr conn = (FSFpePtr) fpe->private;
1473 if ((conn->blockState & FS_RECONNECTING))
1474 _fs_check_reconnect (conn);
1475 else if ((conn->blockState & FS_COMPLETE_REPLY) ||
1476 (conn->fs_fd != -1 && FD_ISSET(conn->fs_fd, LastSelectMask)))
1478 if (conn->blockState & (FS_PENDING_REPLY|FS_BROKEN_CONNECTION|FS_BROKEN_WRITE))
1479 _fs_do_blocked (conn);
1487 if (conn->blockState || conn->blockedRequests || lastState || lastBlock)
1489 fprintf (stderr, " Block State 0x%x\n", (int) conn->blockState);
1490 lastState = conn->blockState;
1491 lastBlock = conn->blockedRequests;
1493 for (blockrec = conn->blockedRequests; blockrec; blockrec = blockrec->next)
1528 _fs_connection_died(FSFpePtr conn)
1530 if (conn->blockState & FS_BROKEN_CONNECTION)
1532 fs_close_conn(conn);
1533 conn->brokenConnectionTime = GetTimeInMillis ();
1534 _fs_mark_block (conn, FS_BROKEN_CONNECTION);
1535 _fs_unmark_block (conn, FS_BROKEN_WRITE|FS_PENDING_WRITE|FS_RECONNECTING);
1542 _fs_restart_connection(FSFpePtr conn)
1546 _fs_unmark_block (conn, FS_GIVE_UP);
1547 while ((block = (FSBlockDataPtr) conn->blockedRequests))
1552 fs_abort_blockrec(conn, block);
1562 _fs_giveup (FSFpePtr conn)
1566 if (conn->blockState & FS_GIVE_UP)
1569 fprintf (stderr, "give up on FS \"%s\"\n", conn->servername);
1571 _fs_mark_block (conn, FS_GIVE_UP);
1572 while ((block = (FSBlockDataPtr) conn->blockedRequests))
1577 fs_abort_blockrec (conn, block);
1580 if (conn->fs_fd >= 0)
1581 _fs_connection_died (conn);
1585 _fs_do_blocked (FSFpePtr conn)
1590 if ((conn->blockState & FS_PENDING_REPLY) &&
1591 TimeCmp (conn->blockedReplyTime, <=, now))
1593 _fs_giveup (conn);
1597 if (conn->blockState & FS_BROKEN_CONNECTION)
1600 if (TimeCmp (conn->brokenConnectionTime, <=, now))
1601 _fs_start_reconnect (conn);
1603 else if (conn->blockState & FS_BROKEN_WRITE)
1606 if (TimeCmp (conn->brokenWriteTime, <=, now))
1607 _fs_flush (conn);
1622 FSFpePtr conn = (FSFpePtr) fpe->private;
1633 if (conn->blockState & FS_GIVE_UP)
1692 if (conn->blockState & (FS_BROKEN_CONNECTION | FS_RECONNECTING))
1694 _fs_pending_reply (conn);
1698 fsd->generation = conn->generation;
1709 _fs_client_access (conn, client, (flags & FontOpenSync) != 0);
1710 _fs_client_resolution(conn);
1722 _fs_add_req_log(conn, FS_OpenBitmapFont);
1723 _fs_write(conn, (char *) &openreq, SIZEOF(fsOpenBitmapFontReq));
1724 _fs_write_pad(conn, (char *) buf, namelen + 1);
1726 blockrec->sequenceNumber = conn->current_seq;
1733 bfont->queryInfoSequence = conn->current_seq + 1;
1735 _fs_add_req_log(conn, FS_QueryXInfo);
1736 _fs_write(conn, (char *) &inforeq, SIZEOF(fsQueryXInfoReq));
1746 bfont->queryExtentsSequence = conn->current_seq + 1;
1748 _fs_add_req_log(conn, FS_QueryXExtents16);
1749 _fs_write(conn, (char *) &extreq, SIZEOF(fsQueryXExtents16Req));
1761 _fs_prepare_for_reply (conn);
1768 if (fs_await_reply (conn) != FSIO_READY)
1781 _fs_remove_block_rec (conn, blockrec);
1789 FSFpePtr conn = (FSFpePtr) fpe->private;
1801 bfont->queryBitmapsSequence = conn->current_seq + 1;
1803 _fs_add_req_log(conn, FS_QueryXBitmaps16);
1804 _fs_write(conn, (char *) &bitreq, SIZEOF(fsQueryXBitmaps16Req));
1815 FSFpePtr conn = (FSFpePtr) fpe->private;
1824 for (blockrec = conn->blockedRequests; blockrec; blockrec = blockrec->next)
1837 _fs_remove_block_rec (conn, blockrec);
1849 FSFpePtr conn = (FSFpePtr) fpe->private;
1852 if (conn->blockState & FS_GIVE_UP)
1859 _fs_add_req_log(conn, FS_CloseFont);
1860 _fs_write(conn, (char *) &req, SIZEOF(fsCloseReq));
1870 FSFpePtr conn = (FSFpePtr) fpe->private;
1872 if (conn->generation == fsd->generation)
1880 for (blockrec = conn->blockedRequests; blockrec; blockrec = blockrec->next)
1899 FSFpePtr conn = (FSFpePtr) fpe->private;
1926 rep = (fsQueryXBitmaps16Reply *) fs_get_reply (conn, &ret);
1933 _fs_done_read (conn, rep->length << 2);
2070 _fs_done_read (conn, rep->length << 2);
2079 FSFpePtr conn = (FSFpePtr) fpe->private;
2084 if (conn->blockState & FS_GIVE_UP)
2098 if (conn->blockState & (FS_BROKEN_CONNECTION|FS_RECONNECTING))
2100 _fs_pending_reply (conn);
2115 _fs_add_req_log(conn, FS_QueryXBitmaps16);
2116 _fs_write(conn, (char *) &req, SIZEOF(fsQueryXBitmaps16Req));
2118 blockrec->sequenceNumber = conn->current_seq;
2134 if (conn->fsMajorVersion > 1)
2151 _fs_write(conn, range_buffer, RANGE_BUFFER_SIZE * 4);
2156 _fs_write(conn, range_buffer, i * 4);
2159 _fs_prepare_for_reply (conn);
2172 FSFpePtr conn = (FSFpePtr) pfont->fpe->private;
2182 for (blockrec = conn->blockedRequests; blockrec; blockrec = blockrec->next)
2196 _fs_remove_block_rec(conn, blockrec);
2227 _fs_remove_block_rec(conn, blockrec);
2284 * If fsd->generation != conn->generation, the font has been closed
2301 if (((FSFontDataPtr)pfont->fpePrivate)->generation != conn->generation)
2322 FSFpePtr conn = (FSFpePtr) pfont->fpe->private;
2339 if (fs_await_reply (conn) != FSIO_READY)
2354 FSFpePtr conn = (FSFpePtr) fpe->private;
2364 rep = (fsListFontsReply *) fs_get_reply (conn, &ret);
2371 _fs_done_read (conn, rep->length << 2);
2401 _fs_done_read (conn, rep->length << 2);
2409 FSFpePtr conn = (FSFpePtr) fpe->private;
2414 if (conn->blockState & FS_GIVE_UP)
2424 if (conn->blockState & (FS_BROKEN_CONNECTION | FS_RECONNECTING))
2426 _fs_pending_reply (conn);
2430 _fs_client_access (conn, client, FALSE);
2431 _fs_client_resolution(conn);
2439 _fs_add_req_log(conn, FS_ListFonts);
2440 _fs_write(conn, (char *) &req, SIZEOF(fsListFontsReq));
2441 _fs_write_pad(conn, (char *) pattern, patlen);
2443 blockrec->sequenceNumber = conn->current_seq;
2456 _fs_prepare_for_reply (conn);
2464 FSFpePtr conn = (FSFpePtr) fpe->private;
2469 for (blockrec = conn->blockedRequests; blockrec; blockrec = blockrec->next)
2476 _fs_remove_block_rec(conn, blockrec);
2495 FSFpePtr conn = (FSFpePtr) fpe->private;
2505 rep = (fsListFontsWithXInfoReply *) fs_get_reply (conn, &ret);
2538 if (conn->fsMajorVersion <= 1)
2590 if (conn->fsMajorVersion > 1)
2611 err = _fs_convert_lfwi_reply(conn, &binfo->info, rep, pi, po, pd);
2623 _fs_unmark_block (conn, FS_COMPLETE_REPLY);
2624 FD_CLR(conn->fs_fd, &_fs_fd_mask);
2626 _fs_done_read (conn, rep->length << 2);
2635 FSFpePtr conn = (FSFpePtr) fpe->private;
2640 if (conn->blockState & FS_GIVE_UP)
2652 if (conn->blockState & (FS_BROKEN_CONNECTION | FS_RECONNECTING))
2654 _fs_pending_reply (conn);
2658 _fs_client_access (conn, client, FALSE);
2659 _fs_client_resolution(conn);
2667 _fs_add_req_log(conn, FS_ListFontsWithXInfo);
2668 (void) _fs_write(conn, (char *) &req, SIZEOF(fsListFontsWithXInfoReq));
2669 (void) _fs_write_pad(conn, pattern, len);
2671 blockrec->sequenceNumber = conn->current_seq;
2684 _fs_prepare_for_reply (conn);
2695 FSFpePtr conn = (FSFpePtr) fpe->private;
2701 for (blockrec = conn->blockedRequests; blockrec; blockrec = blockrec->next)
2727 FD_SET(conn->fs_fd, &_fs_fd_mask);
2728 if (fs_reply_ready (conn))
2729 _fs_mark_block (conn, FS_COMPLETE_REPLY);
2734 _fs_remove_block_rec(conn, blockrec);
2739 conn->blockedReplyTime = GetTimeInMillis () + FontServerRequestTimeout;
2740 _fs_mark_block (conn, FS_PENDING_REPLY);
2754 FSFpePtr conn = (FSFpePtr) fpe->private;
2760 for (prev = &conn->clients; (cur = *prev); prev = &cur->next)
2767 _fs_add_req_log(conn, FS_FreeAC);
2768 _fs_write (conn, (char *) &freeac, sizeof (fsFreeACReq));
2775 for (blockrec = conn->blockedRequests; blockrec; blockrec = blockrec->next)
2789 fs_abort_blockrec(conn, blockrec);
2793 _fs_client_access (FSFpePtr conn, pointer client, Bool sync)
2804 if (conn->blockState & (FS_RECONNECTING|FS_BROKEN_CONNECTION))
2809 for (prev = &conn->clients; (cur = *prev); prev = &cur->next)
2813 if (prev != &conn->clients)
2816 cur->next = conn->clients;
2817 conn->clients = cur;
2828 cur->next = conn->clients;
2829 conn->clients = cur;
2842 _fs_add_req_log(conn, FS_FreeAC);
2843 _fs_write (conn, (char *) &freeac, sizeof (fsFreeACReq));
2856 _fs_add_req_log(conn, FS_CreateAC);
2857 _fs_write(conn, (char *) &crac, sizeof (fsCreateACReq));
2858 _fs_write_pad(conn, authorizations, authlen);
2860 conn->curacid = 0;
2863 if (conn->curacid != cur->acid)
2869 _fs_add_req_log(conn, FS_SetAuthorization);
2870 _fs_write(conn, (char *) &setac, sizeof (fsSetAuthorizationReq));
2871 conn->curacid = cur->acid;
2880 _fs_check_connect (FSFpePtr conn)
2884 ret = _fs_poll_connect (conn->trans_conn, 0);
2887 conn->fs_fd = _FontTransGetConnectionNumber (conn->trans_conn);
2888 FD_SET (conn->fs_fd, &_fs_fd_mask);
2902 _fs_get_conn_setup (FSFpePtr conn, int *error, int *setup_len)
2911 ret = _fs_start_read (conn, SIZEOF (fsConnSetup), &data);
2935 ret = _fs_start_read (conn, headlen + SIZEOF (fsConnSetupAccept), &data);
2945 ret = _fs_start_read (conn, len, &data);
2956 _fs_send_conn_client_prefix (FSFpePtr conn)
2975 ret = _fs_write (conn, (char *) &req, SIZEOF (fsConnClientPrefix));
2978 conn->blockedConnectTime = GetTimeInMillis () + FontServerRequestTimeout;
2983 _fs_recv_conn_setup (FSFpePtr conn)
2992 setup = _fs_get_conn_setup (conn, &ret, &setup_len);
2995 conn->current_seq = 0;
2996 conn->fsMajorVersion = setup->major_version;
3001 if (conn->alternate == 0)
3007 if (conn->alts)
3009 free (conn->alts);
3010 conn->alts = 0;
3011 conn->numAlts = 0;
3047 conn->numAlts = setup->num_alternates;
3048 conn->alts = alts;
3052 _fs_done_read (conn, setup_len);
3059 _fs_open_server (FSFpePtr conn)
3064 if (conn->alternate == 0)
3065 servername = conn->servername;
3067 servername = conn->alts[conn->alternate-1].name;
3068 conn->trans_conn = _fs_connect (servername, &ret);
3069 conn->blockedConnectTime = GetTimeInMillis () + FS_RECONNECT_WAIT;
3085 _fs_send_init_packets (FSFpePtr conn)
3108 _fs_add_req_log(conn, FS_SetResolution);
3109 if (_fs_write(conn, (char *) &srreq, SIZEOF(fsSetResolutionReq)) != FSIO_READY)
3111 if (_fs_write_pad(conn, (char *) res, (num_res * SIZEOF(fsResolution))) != FSIO_READY)
3116 if (conn->alternate != 0)
3117 catalogues = _fs_catalog_name (conn->alts[conn->alternate-1].name);
3119 catalogues = _fs_catalog_name (conn->servername);
3123 conn->has_catalogues = FALSE;
3126 conn->has_catalogues = TRUE;
3148 _fs_add_req_log(conn, FS_SetCatalogues);
3149 if (_fs_write(conn, (char *) &screq, SIZEOF(fsSetCataloguesReq)) != FSIO_READY)
3159 if (_fs_write (conn, &len, 1) != FSIO_READY)
3161 if (_fs_write (conn, cat, (int) len) != FSIO_READY)
3166 if (_fs_write (conn, "....", _fs_pad_length (clen) - clen) != FSIO_READY)
3173 _fs_send_cat_sync (FSFpePtr conn)
3187 _fs_add_req_log(conn, FS_SetCatalogues);
3188 if (_fs_write(conn, (char *) &lcreq, SIZEOF(fsListCataloguesReq)) != FSIO_READY)
3190 conn->blockedConnectTime = GetTimeInMillis () + FontServerRequestTimeout;
3195 _fs_recv_cat_sync (FSFpePtr conn)
3202 reply = fs_get_reply (conn, &err);
3213 _fs_done_read (conn, reply->length << 2);
3218 _fs_close_server (FSFpePtr conn)
3220 _fs_unmark_block (conn, FS_PENDING_WRITE|FS_BROKEN_WRITE|FS_COMPLETE_REPLY|FS_BROKEN_CONNECTION);
3221 if (conn->trans_conn)
3223 _FontTransClose (conn->trans_conn);
3224 conn->trans_conn = 0;
3225 _fs_io_reinit (conn);
3227 if (conn->fs_fd >= 0)
3229 FD_CLR (conn->fs_fd, &_fs_fd_mask);
3230 conn->fs_fd = -1;
3232 conn->fs_conn_state = FS_CONN_UNCONNECTED;
3236 _fs_do_setup_connection (FSFpePtr conn)
3243 fprintf (stderr, "fs_do_setup_connection state %d\n", conn->fs_conn_state);
3245 switch (conn->fs_conn_state) {
3247 ret = _fs_open_server (conn);
3249 conn->fs_conn_state = FS_CONN_CONNECTING;
3252 ret = _fs_check_connect (conn);
3255 ret = _fs_send_conn_client_prefix (conn);
3258 ret = _fs_recv_conn_setup (conn);
3261 ret = _fs_send_init_packets (conn);
3262 if (conn->has_catalogues)
3263 ret = _fs_send_cat_sync (conn);
3266 if (conn->has_catalogues)
3267 ret = _fs_recv_cat_sync (conn);
3277 if (conn->fs_conn_state < FS_CONN_RUNNING)
3278 conn->fs_conn_state++;
3281 if (TimeCmp (GetTimeInMillis (), <, conn->blockedConnectTime))
3286 _fs_close_server (conn);
3290 if (conn->alternate < conn->numAlts)
3292 conn->alternate++;
3296 conn->alternate = 0;
3299 } while (conn->fs_conn_state != FS_CONN_RUNNING && ret == FSIO_READY);
3301 conn->generation = ++generationCount;
3306 _fs_wait_connect (FSFpePtr conn)
3312 ret = _fs_do_setup_connection (conn);
3315 if (conn->fs_conn_state <= FS_CONN_CONNECTING)
3316 ret = _fs_poll_connect (conn->trans_conn, 1000);
3318 ret = _fs_wait_for_readable (conn, 1000);
3329 _fs_check_reconnect (FSFpePtr conn)
3333 ret = _fs_do_setup_connection (conn);
3336 _fs_unmark_block (conn, FS_RECONNECTING|FS_GIVE_UP);
3337 _fs_restart_connection (conn);
3342 conn->brokenConnectionTime = GetTimeInMillis () + FS_RECONNECT_POLL;
3351 _fs_start_reconnect (FSFpePtr conn)
3353 if (conn->blockState & FS_RECONNECTING)
3355 conn->alternate = 0;
3356 _fs_mark_block (conn, FS_RECONNECTING);
3357 _fs_unmark_block (conn, FS_BROKEN_CONNECTION);
3358 _fs_check_reconnect (conn);
3365 FSFpePtr conn;
3367 conn = calloc (1, sizeof (FSFpeRec) + strlen (servername) + 1);
3368 if (!conn)
3370 if (!_fs_io_init (conn))
3372 free (conn);
3375 conn->servername = (char *) (conn + 1);
3376 conn->fs_conn_state = FS_CONN_UNCONNECTED;
3377 conn->fs_fd = -1;
3378 strcpy (conn->servername, servername);
3379 return conn;
3383 _fs_free_conn (FSFpePtr conn)
3385 _fs_close_server (conn);
3386 _fs_io_fini (conn);
3387 if (conn->alts)
3388 free (conn->alts);
3389 free (conn);