Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
Pipe Class Reference

Private data for a can device. More...

Inheritance diagram for Pipe:
Node Device FileIO

Public Member Functions

 Pipe (const char *name)
 Constructor.
 
 ~Pipe ()
 Destructor.
 
- Public Member Functions inherited from Device
 Device (const char *name)
 Constructor.
 
virtual ~Device ()
 Destructor.
 

Static Public Member Functions

static int pipe (int pipefds[2])
 Create a Unix style pipe.
 
- Static Public Member Functions inherited from Device
static int open (struct _reent *reent, const char *path, int flags, int mode)
 Open a file or device.
 
static int close (struct _reent *reent, int fd)
 Close a file or device.
 
static int stat (struct _reent *reent, const char *path, struct stat *stat)
 Get the status information of a file or device.
 
static int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, long long timeout)
 POSIX select().
 
static void select_clear ()
 Clears the current thread's select bits.
 
- Static Public Member Functions inherited from FileIO
static ssize_t read (struct _reent *reent, int fd, void *buf, size_t count)
 Read from a file or device.
 
static ssize_t write (struct _reent *reent, int fd, const void *buf, size_t count)
 Write to a file or device.
 
static _off_t lseek (struct _reent *reent, int fd, _off_t offset, int whence)
 Change the offset index of a file or device.
 
static int fstat (struct _reent *reent, int fd, struct stat *stat)
 Get the status information of a file or device.
 
static int ioctl (int fd, unsigned long int key, unsigned long data)
 Request and ioctl transaction.
 
static int fcntl (int fd, int cmd, unsigned long data)
 Manipulate a file descriptor.
 
static bool is_device (int fd)
 Test if the file descriptor belongs to a device.
 

Private Member Functions

int close (File *file) OVERRIDE
 Close method.
 
ssize_t read (File *file, void *buf, size_t count) OVERRIDE
 Read from a file or device.
 
ssize_t write (File *file, const void *buf, size_t count) OVERRIDE
 Write to a file or device.
 
off_t lseek (File *f, off_t offset, int whence) override
 Seek method.
 
int fcntl (File *file, int cmd, unsigned long data) OVERRIDE
 Manipulate a file descriptor.
 
bool select (File *file, int mode) OVERRIDE
 Device select method.
 
void enable () OVERRIDE
 function to enable device
 
void disable () OVERRIDE
 This will be called when reference count goes from non-zero to 0.
 
void flush_buffers () OVERRIDE
 function to disable device
 
 DISALLOW_COPY_AND_ASSIGN (Pipe)
 

Private Attributes

SelectInfo selInfoRd
 called after disable
 
SelectInfo selInfoWr
 select wakeup metadata for write active
 
RingBuffer< uint8_t > * ring
 ring buffer for storing the data
 
size_t size
 pipe size
 

Additional Inherited Members

- Protected Member Functions inherited from Node
 Node (const char *name)
 Constructor.
 
virtual ~Node ()
 Destructor.
 
int open (File *, const char *, int, int) OVERRIDE
 Open method.
 
virtual int fstat (File *file, struct stat *stat) override
 Get the status information of a file or device.
 
- Protected Member Functions inherited from FileIO
 FileIO (const char *name)
 Constructor.
 
virtual ~FileIO ()
 Destructor.
 
virtual int ioctl (File *file, unsigned long int key, unsigned long data)
 Request an ioctl transaction.
 
- Static Protected Member Functions inherited from Device
static void select_insert (SelectInfo *info)
 Add client to list of clients needing woken.
 
static void select_wakeup (SelectInfo *info)
 Wakeup the list of clients needing woken.
 
static void select_wakeup_from_isr (SelectInfo *info, int *woken)
 Wakeup the list of clients needing woken.
 
- Static Protected Member Functions inherited from FileIO
static int fd_alloc (void)
 Allocate a free file descriptor.
 
static void fd_free (int fd)
 Free up a file descriptor.
 
static Filefile_lookup (int fd)
 Looks up a reference to a File corresponding to a given file descriptor.
 
static int fd_lookup (File *file)
 Looks up a file descriptor corresponding to a given File reference.
 
- Protected Attributes inherited from Node
OSMutex lock_
 protects internal structures.
 
mode_t mode_
 File open mode, such as O_NONBLOCK.
 
unsigned int references_
 number of open references
 
- Protected Attributes inherited from FileIO
const char * name
 device name
 
- Static Protected Attributes inherited from FileIO
static const unsigned int numOpenFiles = 20
 
static File files []
 File descriptor pool.
 
static OSMutex mutex
 mutual exclusion for fileio
 

Detailed Description

Private data for a can device.

Definition at line 46 of file Pipe.cxx.

Constructor & Destructor Documentation

◆ Pipe()

Pipe::Pipe ( const char *  name)
inline

Constructor.

Parameters
namedevice name in file system

Definition at line 52 of file Pipe.cxx.

◆ ~Pipe()

Pipe::~Pipe ( )
inline

Destructor.

Definition at line 64 of file Pipe.cxx.

Member Function Documentation

◆ close()

int Pipe::close ( File file)
privatevirtual

Close method.

Returns negative errno on failure.

Parameters
filereference to close
Returns
0 upon success or negative error number upon error.

Reimplemented from Node.

Definition at line 267 of file Pipe.cxx.

◆ disable()

void Pipe::disable ( )
inlineprivatevirtual

This will be called when reference count goes from non-zero to 0.

Called with lock_ held.

Implements Node.

Definition at line 132 of file Pipe.cxx.

◆ enable()

void Pipe::enable ( )
inlineprivatevirtual

function to enable device

Implements Node.

Definition at line 131 of file Pipe.cxx.

◆ fcntl()

int Pipe::fcntl ( File file,
int  cmd,
unsigned long  data 
)
privatevirtual

Manipulate a file descriptor.

Parameters
filefile reference for this device
cmdoperation to perform
dataparameter to the cmd operation
Returns
dependent on the operation (POSIX compliant where applicable) or negative error number upon error.

Reimplemented from FileIO.

Definition at line 291 of file Pipe.cxx.

◆ flush_buffers()

void Pipe::flush_buffers ( )
inlineprivatevirtual

function to disable device

Implements Node.

Definition at line 133 of file Pipe.cxx.

◆ lseek()

off_t Pipe::lseek ( File f,
off_t  offset,
int  whence 
)
inlineoverrideprivatevirtual

Seek method.

Not valid for a socket.

Parameters
ffile reference for this device
offsetoffset in bytes from whence directive
whenceSEEK_SET if to set the file offset to an abosolute position, SEEK_CUR if to set the file offset from current position
Returns
-ESPIPE

Reimplemented from FileIO.

Definition at line 109 of file Pipe.cxx.

◆ pipe()

int Pipe::pipe ( int  pipefds[2])
static

Create a Unix style pipe.

Parameters
pipefdsindex 0, file descriptor open for reading. index 1, file descriptor open for writing.
Returns
0 upon success, -1 on errer with errno set appropriately

Definition at line 352 of file Pipe.cxx.

◆ read()

ssize_t Pipe::read ( File file,
void *  buf,
size_t  count 
)
privatevirtual

Read from a file or device.

Parameters
filefile reference for this device
buflocation to place read data
countnumber of bytes to read
Returns
number of bytes read upon success, -1 upon failure with errno containing the cause

Implements FileIO.

Definition at line 151 of file Pipe.cxx.

◆ select()

bool Pipe::select ( File file,
int  mode 
)
privatevirtual

Device select method.

Default impementation returns true.

Parameters
filereference to the file
modeFREAD for read active, FWRITE for write active, 0 for exceptions
Returns
true if active, false if inactive

Reimplemented from FileIO.

Definition at line 309 of file Pipe.cxx.

◆ write()

ssize_t Pipe::write ( File file,
const void *  buf,
size_t  count 
)
privatevirtual

Write to a file or device.

Parameters
filefile reference for this device
buflocation to find write data
countnumber of bytes to write
Returns
number of bytes written upon success, -1 upon failure with errno containing the cause

Implements FileIO.

Definition at line 210 of file Pipe.cxx.

Member Data Documentation

◆ ring

RingBuffer<uint8_t>* Pipe::ring
private

ring buffer for storing the data

Definition at line 138 of file Pipe.cxx.

◆ selInfoRd

SelectInfo Pipe::selInfoRd
private

called after disable

select wakeup metadata for read active

Definition at line 135 of file Pipe.cxx.

◆ selInfoWr

SelectInfo Pipe::selInfoWr
private

select wakeup metadata for write active

Definition at line 136 of file Pipe.cxx.

◆ size

size_t Pipe::size
private

pipe size

Definition at line 140 of file Pipe.cxx.


The documentation for this class was generated from the following file: