Changeset 1118:62d16667d373 in roaraudio for libroar/vio.c


Ignore:
Timestamp:
01/16/09 17:32:49 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

add vio support for nonblock() and (f)sync()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/vio.c

    r989 r1118  
    3636 
    3737int roar_vio_init_calls (struct roar_vio_calls * calls) { 
    38  if ( !calls ) 
     38 if ( calls == NULL ) 
    3939  return -1; 
    4040 
     
    4747*/ 
    4848 
    49  calls->read  = roar_vio_basic_read; 
    50  calls->write = roar_vio_basic_write; 
    51  calls->lseek = roar_vio_basic_lseek; 
     49 calls->read     = roar_vio_basic_read; 
     50 calls->write    = roar_vio_basic_write; 
     51 calls->lseek    = roar_vio_basic_lseek; 
     52 calls->nonblock = roar_vio_basic_nonblock; 
     53 calls->sync     = roar_vio_basic_sync; 
    5254 
    5355 return 0; 
     
    103105 
    104106 return vio->lseek(vio, offset, whence); 
     107} 
     108 
     109int     roar_vio_nonblock(struct roar_vio_calls * vio, int state) { 
     110 if ( vio == NULL ) 
     111  return -1; 
     112 
     113 if ( vio->nonblock == NULL ) 
     114  return -1; 
     115 
     116 return vio->nonblock(vio, state); 
     117} 
     118 
     119int     roar_vio_sync    (struct roar_vio_calls * vio) { 
     120 if ( vio == NULL ) 
     121  return -1; 
     122 
     123 if ( vio->sync == NULL ) 
     124  return -1; 
     125 
     126 return vio->sync(vio); 
    105127} 
    106128 
     
    118140off_t   roar_vio_basic_lseek(struct roar_vio_calls * vio, off_t offset, int whence) { 
    119141 return lseek(roar_vio_get_fh(vio), offset, whence); 
     142} 
     143 
     144int     roar_vio_basic_nonblock(struct roar_vio_calls * vio, int state) { 
     145 if ( roar_socket_nonblock(roar_vio_get_fh(vio), state) == -1 ) 
     146  return -1; 
     147 
     148 if ( state == ROAR_SOCKET_NONBLOCK ) 
     149  return 0; 
     150 
     151 return roar_vio_sync(vio); 
     152} 
     153 
     154int     roar_vio_basic_sync    (struct roar_vio_calls * vio) { 
     155 return fdatasync(roar_vio_get_fh(vio)); 
    120156} 
    121157 
Note: See TracChangeset for help on using the changeset viewer.