0 ) { if ( count($rSockets) != 1 ) ajaxError( "Bogus return from select" ); } switch( $nbytes = @socket_recvfrom( $socket, $msg, MSG_DATA_SIZE, 0, $remSockFile ) ) { case -1 : { ajaxError( "socket_recvfrom( $remSockFile ) failed: ".socket_strerror(socket_last_error()) ); break; } case 0 : { ajaxError( "No data to read from socket" ); break; } default : { if ( $nbytes != MSG_DATA_SIZE ) ajaxError( "Got unexpected message size, got $nbytes, expected ".MSG_DATA_SIZE ); break; } } $data = unpack( "ltype", $msg ); switch ( $data['type'] ) { case MSG_DATA_WATCH : { $data = unpack( "ltype/imonitor/istate/dfps/ilevel/irate/ddelay/izoom/Cdelayed/Cpaused/Cenabled/Cforced", $msg ); $data['fps'] = sprintf( "%.2f", $data['fps'] ); $data['rate'] /= RATE_BASE; $data['delay'] = sprintf( "%.2f", $data['delay'] ); $data['zoom'] = sprintf( "%.1f", $data['zoom']/SCALE_BASE ); ajaxResponse( array( 'status'=>$data ) ); break; } case MSG_DATA_EVENT : { $data = unpack( "ltype/ievent/iprogress/irate/izoom/Cpaused", $msg ); //$data['progress'] = sprintf( "%.2f", $data['progress'] ); $data['rate'] /= RATE_BASE; $data['zoom'] = sprintf( "%.1f", $data['zoom']/SCALE_BASE ); ajaxResponse( array( 'status'=>$data ) ); break; } default : { ajaxError( "Unexpected received message type '$type'" ); } } ajaxError( 'Unrecognised action or insufficient permissions' ); function ajaxCleanup() { global $socket, $locSockFile; if ( !empty( $socket ) ) @socket_close( $socket ); if ( !empty( $locSockFile ) ) @unlink( $locSockFile ); } ?>