FreeNOS
Public Member Functions | Private Attributes
NetworkServer Class Reference

Networking server. More...

#include <NetworkServer.h>

Inheritance diagram for NetworkServer:
DeviceServer FileSystemServer ChannelServer< FileSystemServer, FileSystemMessage >

Public Member Functions

 NetworkServer (const char *path)
 Constructor. More...
 
virtual ~NetworkServer ()
 Destructor. More...
 
void registerNetworkDevice (NetworkDevice *dev)
 Register network device. More...
 
virtual FileSystem::Result initialize ()
 Initialize the NetworkServer. More...
 
virtual void onProcessTerminated (const ProcessID pid)
 Called whenever another Process is terminated. More...
 
virtual bool retryRequests ()
 Starts DMA on NetworkDevices after all pending requests are done. More...
 
- Public Member Functions inherited from DeviceServer
 DeviceServer (const char *path)
 Constructor. More...
 
virtual ~DeviceServer ()
 Destructor. More...
 
void registerDevice (Device *dev, const char *path)
 Add a Device. More...
 
void registerInterrupt (Device *dev, Size vector)
 Register an interrupt vector for the given device. More...
 
virtual void interruptHandler (Size vector)
 Interrupt request handler. More...
 
- Public Member Functions inherited from FileSystemServer
 FileSystemServer (Directory *root, const char *path)
 Constructor function. More...
 
virtual ~FileSystemServer ()
 Destructor function. More...
 
const char * getMountPath () const
 Get mount path. More...
 
u32 getNextInode ()
 Get next unused inode. More...
 
FileSystem::Result mount ()
 Mount the FileSystem. More...
 
FileSystem::Result registerFile (File *file, const char *path)
 Register a new File. More...
 
FileSystem::Result registerDirectory (Directory *dir, const char *path)
 Register a new Directory. More...
 
FileSystem::Result unregisterFile (const char *path)
 Remove a File from the FileSystemServer. More...
 
virtual FilecreateFile (const FileSystem::FileType type)
 Create a new file. More...
 
void pathHandler (FileSystemMessage *msg)
 Process an incoming filesystem request using a path. More...
 
void mountHandler (FileSystemMessage *msg)
 Process a filesystem mount request message. More...
 
void getFileSystemsHandler (FileSystemMessage *msg)
 Read the file system mounts table. More...
 
- Public Member Functions inherited from ChannelServer< FileSystemServer, FileSystemMessage >
 ChannelServer (FileSystemServer *inst)
 Constructor function. More...
 
virtual ~ChannelServer ()
 Destructor function. More...
 
int run ()
 Enters an infinite loop, serving incoming requests. More...
 
void setTimeout (const uint msec)
 Set a sleep timeout. More...
 

Private Attributes

NetworkDevicem_device
 Network device instance. More...
 

Additional Inherited Members

- Public Types inherited from ChannelServer< FileSystemServer, FileSystemMessage >
enum  Result
 Result codes. More...
 
- Protected Types inherited from ChannelServer< FileSystemServer, FileSystemMessage >
typedef void(FileSystemServer ::* IPCHandlerFunction) (FileSystemMessage *)
 Member function pointer inside Base, to handle IPC messages. More...
 
typedef void(FileSystemServer ::* IRQHandlerFunction) (Size)
 Member function pointer inside Base, to handle interrupts. More...
 
- Protected Member Functions inherited from FileSystemServer
FileSystem::Result processRequest (FileSystemRequest &req)
 Process a FileSystemRequest. More...
 
FileSystem::Result inodeHandler (FileSystemRequest &req)
 Handle a request for a File specified by its inode. More...
 
FileSystem::Result waitFileHandler (FileSystemRequest &req)
 Handle a WaitFile request. More...
 
void sendResponse (FileSystemMessage *msg) const
 Send response for a FileSystemMessage. More...
 
bool redirectRequest (const char *path, FileSystemMessage *msg)
 Try to forward the given FileSystemMessage to a mount file system. More...
 
void setRoot (Directory *newRoot)
 Change the filesystem root directory. More...
 
DirectorygetParentDirectory (const char *path)
 Retrieve parent Directory for a file. More...
 
FileCachelookupFile (const FileSystemPath &path)
 Retrieve a File from storage. More...
 
FileCachefindFileCache (const char *path) const
 Search the cache for an entry. More...
 
FileCachefindFileCache (const String &path) const
 Search the cache for an entry. More...
 
FileCachefindFileCache (const FileSystemPath &path) const
 Search the cache for an entry. More...
 
FileCacheinsertFileCache (File *file, const char *pathFormat)
 Inserts a file into the in-memory filesystem tree. More...
 
void removeFileFromCache (FileCache *cache, File *file)
 Remove a File from the cache. More...
 
void clearFileCache (FileCache *cache=ZERO)
 Cleans up the entire file cache (except opened file caches and root). More...
 
- Protected Member Functions inherited from ChannelServer< FileSystemServer, FileSystemMessage >
void addIPCHandler (const Size slot, IPCHandlerFunction h, const bool sendReply=true)
 Register a new IPC message action handler. More...
 
void addIRQHandler (const Size slot, IRQHandlerFunction h)
 Register a new IRQ message vector handler. More...
 
virtual void timeout ()
 Called when sleep timeout is reached. More...
 
void retryAllRequests ()
 Keep retrying requests until all served. More...
 
- Protected Attributes inherited from FileSystemServer
const ProcessID m_pid
 Process identifier. More...
 
FileCachem_root
 Root entry of the filesystem tree. More...
 
HashTable< u32, File * > m_inodeMap
 Contains a mapping of inode number to file of all cached files. More...
 
const char * m_mountPath
 Mount point path. More...
 
FileSystemMountm_mounts
 Table with mounted file systems (only used by the root file system). More...
 
List< FileSystemRequest * > * m_requests
 Contains ongoing requests. More...
 
- Protected Attributes inherited from ChannelServer< FileSystemServer, FileSystemMessage >
FileSystemServerm_instance
 Server object instance. More...
 
ChannelClientm_client
 Client for sending replies. More...
 
ChannelRegistrym_registry
 Contains registered channels. More...
 
MemoryChannel m_kernelEvent
 Kernel event channel. More...
 
Index< MessageHandler< IPCHandlerFunction >, MaximumHandlerCountm_ipcHandlers
 IPC handler functions. More...
 
Index< MessageHandler< IRQHandlerFunction >, MaximumHandlerCountm_irqHandlers
 IRQ handler functions. More...
 
ProcessID m_self
 ProcessID of ourselves. More...
 
Timer::Info m_time
 System timer value. More...
 
Timer::Info m_expiry
 System timer expiration value. More...
 

Detailed Description

Networking server.

Definition at line 40 of file NetworkServer.h.

Constructor & Destructor Documentation

◆ NetworkServer()

NetworkServer::NetworkServer ( const char *  path)

Constructor.

Definition at line 21 of file NetworkServer.cpp.

◆ ~NetworkServer()

NetworkServer::~NetworkServer ( )
virtual

Destructor.

Definition at line 27 of file NetworkServer.cpp.

Member Function Documentation

◆ initialize()

FileSystem::Result NetworkServer::initialize ( )
virtual

Initialize the NetworkServer.

Returns
Result code

Reimplemented from DeviceServer.

Definition at line 37 of file NetworkServer.cpp.

References DEBUG, and DeviceServer::initialize().

Referenced by main().

◆ onProcessTerminated()

void NetworkServer::onProcessTerminated ( const ProcessID  pid)
virtual

Called whenever another Process is terminated.

Parameters
pidProcessID of the terminating process

Reimplemented from ChannelServer< FileSystemServer, FileSystemMessage >.

Definition at line 43 of file NetworkServer.cpp.

References DEBUG, m_device, NetworkDevice::unregisterSockets(), and ZERO.

◆ registerNetworkDevice()

void NetworkServer::registerNetworkDevice ( NetworkDevice dev)

Register network device.

Parameters
devNetworkDevice pointer

Definition at line 31 of file NetworkServer.cpp.

References m_device, and DeviceServer::registerDevice().

Referenced by main().

◆ retryRequests()

bool NetworkServer::retryRequests ( )
virtual

Starts DMA on NetworkDevices after all pending requests are done.

Returns
True if retry is needed again, false if all requests processed

Reimplemented from FileSystemServer.

Definition at line 53 of file NetworkServer.cpp.

References assert, ERROR, m_device, FileSystemServer::retryRequests(), NetworkDevice::startDMA(), FileSystem::Success, and ZERO.

Field Documentation

◆ m_device

NetworkDevice* NetworkServer::m_device
private

Network device instance.

Definition at line 85 of file NetworkServer.h.

Referenced by onProcessTerminated(), registerNetworkDevice(), and retryRequests().


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