Server 0.0.1
HTTP/REST server implementation

src/server/write.c

Go to the documentation of this file.
00001 
00023 #include "server.h"
00024 #include "logger.h"
00025 #include "stream.h"
00026 
00027 void serverCloseConn(Server, unsigned int);
00028 
00029 ssize_t
00030 serverWrite(Server this, unsigned int i)
00031 {
00032         int     fd = (this->fds)[i].fd;
00033         ssize_t remaining;
00034 
00035         if (NULL == (this->conns)[fd].worker) {
00036                 loggerLog(
00037                                 this->logger,
00038                                 LOGGER_INFO,
00039                                 "initialization error: NULL worker");
00040                 return -1;
00041         }
00042 
00043         remaining = streamWriterWrite(
00044                         (this->conns)[fd].worker,
00045                         (this->conns)[fd].stream);
00046 
00047         switch(remaining) {
00048                 case -1:
00049                         serverCloseConn(this, i);
00050                         break;
00051 
00052                 case 0:
00053                         (this->fds)[i].events &= ~POLLOUT;
00054                         break;
00055 
00056                 default:
00057                         break;
00058         }
00059 
00060         return remaining;
00061 }
00062 
00063 // vim: set ts=4 sw=4:
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines