Ignore:
Timestamp:
Nov 3, 2016 10:57:57 PM (7 years ago)
Author:
ldelgass
Message:

Add optional idle timeout to vtkvis server. Allows server to close connection
and exit after a specified period without commands from the client.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vtkvis/trunk/RenderServer.cpp

    r6383 r6568  
    482482    signal(SIGPIPE, SIG_IGN);
    483483
     484    long idleTimeout = -1L;
    484485    while (1) {
    485         int c = getopt(argc, argv, "i:o:");
     486        int c = getopt(argc, argv, "i:o:t:");
    486487        if (c == -1) {
    487488            break;
     
    502503        }
    503504            break;
     505        case 't':
     506            // Idle timeout in seconds
     507            idleTimeout = atol(optarg);
     508            break;
    504509        case '?':
    505510            break;
     
    543548    g_inBufPtr = new ReadBuffer(g_fdIn, 1<<12);
    544549
     550    g_renderer->setIdleTimeout(idleTimeout);
     551
    545552    Tcl_Interp *interp = Tcl_CreateInterp();
    546553    ClientData clientData = NULL;
     
    563570    // Start main server loop
    564571    for (;;) {
    565         if (processCommands(interp, clientData, g_inBufPtr, g_fdOut) < 0)
     572        struct timeval timeout;
     573        g_renderer->getTimeout(&timeout);
     574        int cmdStatus = processCommands(interp, clientData, g_inBufPtr, g_fdOut, &timeout);
     575        if (cmdStatus < 0)
    566576            break;
    567577
     
    577587            g_stats.nFrameBytes += imgData->GetDataSize() * imgData->GetDataTypeSize();
    578588        } else {
    579             TRACE("No render required");
    580             sendAck(clientData, g_fdOut);
     589            if (cmdStatus > 1) {
     590                sendAck(clientData, g_fdOut);
     591            } else {
     592                TRACE("No render required and status = %d", cmdStatus);
     593            }
    581594        }
    582595
Note: See TracChangeset for help on using the changeset viewer.