Server::queue is now not a dList.
This commit is contained in:
+16
-18
@@ -88,7 +88,7 @@ struct Server_t {
|
|||||||
|
|
||||||
int active_conns;
|
int active_conns;
|
||||||
int running_the_queue;
|
int running_the_queue;
|
||||||
Dlist *queue;
|
std::vector< SocketData_t * > queue;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FdMapEntry_t {
|
struct FdMapEntry_t {
|
||||||
@@ -241,7 +241,7 @@ void a_Http_connect_done(int fd, bool success)
|
|||||||
|
|
||||||
static void Http_socket_activate(Server_t *srv, SocketData_t *sd)
|
static void Http_socket_activate(Server_t *srv, SocketData_t *sd)
|
||||||
{
|
{
|
||||||
dList_remove(srv->queue, sd);
|
srv->queue.erase( std::find( begin( srv->queue ), end( srv->queue ), sd ) );
|
||||||
sd->flags &= ~HTTP_SOCKET_QUEUED;
|
sd->flags &= ~HTTP_SOCKET_QUEUED;
|
||||||
srv->active_conns++;
|
srv->active_conns++;
|
||||||
sd->connected_to = srv->host.value().data();
|
sd->connected_to = srv->host.value().data();
|
||||||
@@ -255,14 +255,14 @@ static void Http_connect_queued_sockets(Server_t *srv)
|
|||||||
srv->running_the_queue++;
|
srv->running_the_queue++;
|
||||||
|
|
||||||
for (i = 0;
|
for (i = 0;
|
||||||
(i < dList_length(srv->queue) &&
|
(i < srv->queue.size() &&
|
||||||
srv->active_conns < prefs.http_max_conns);
|
srv->active_conns < prefs.http_max_conns);
|
||||||
i++) {
|
i++) {
|
||||||
sd = reinterpret_cast< SocketData_t * >( dList_nth_data(srv->queue, i) );
|
sd = srv->queue.at( i );
|
||||||
|
|
||||||
if (sd->flags & HTTP_SOCKET_TO_BE_FREED) {
|
if (sd->flags & HTTP_SOCKET_TO_BE_FREED) {
|
||||||
dList_remove(srv->queue, sd);
|
srv->queue.erase( std::find( begin( srv->queue ), end( srv->queue ), sd ) );
|
||||||
dFree(sd);
|
delete sd;
|
||||||
i--;
|
i--;
|
||||||
} else {
|
} else {
|
||||||
int connect_ready = TLS_CONNECT_READY;
|
int connect_ready = TLS_CONNECT_READY;
|
||||||
@@ -859,10 +859,10 @@ static void Http_socket_reuse(int SKey)
|
|||||||
Server_t *srv = Http_server_get(old_sd->connected_to,
|
Server_t *srv = Http_server_get(old_sd->connected_to,
|
||||||
old_sd->connect_port,
|
old_sd->connect_port,
|
||||||
(old_sd->flags & HTTP_SOCKET_TLS));
|
(old_sd->flags & HTTP_SOCKET_TLS));
|
||||||
int i, n = dList_length(srv->queue);
|
int i, n = srv->queue.size();
|
||||||
|
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
new_sd = reinterpret_cast< SocketData_t * >( dList_nth_data(srv->queue, i) );
|
new_sd = srv->queue.at( i );
|
||||||
|
|
||||||
if (!(new_sd->flags & HTTP_SOCKET_TO_BE_FREED) &&
|
if (!(new_sd->flags & HTTP_SOCKET_TO_BE_FREED) &&
|
||||||
Http_socket_reuse_compatible(old_sd, new_sd)) {
|
Http_socket_reuse_compatible(old_sd, new_sd)) {
|
||||||
@@ -1052,18 +1052,18 @@ static void Http_socket_enqueue(Server_t *srv, SocketData_t* sock)
|
|||||||
sock->flags |= HTTP_SOCKET_QUEUED;
|
sock->flags |= HTTP_SOCKET_QUEUED;
|
||||||
|
|
||||||
if ((sock->web->flags & WEB_Image) == 0) {
|
if ((sock->web->flags & WEB_Image) == 0) {
|
||||||
int i, n = dList_length(srv->queue);
|
int i, n = srv->queue.size();
|
||||||
|
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
SocketData_t *curr = reinterpret_cast< SocketData_t * >( dList_nth_data(srv->queue, i) );
|
SocketData_t *curr = srv->queue.at( i );
|
||||||
|
|
||||||
if (a_Web_valid(curr->web) && (curr->web->flags & WEB_Image)) {
|
if (a_Web_valid(curr->web) && (curr->web->flags & WEB_Image)) {
|
||||||
dList_insert_pos(srv->queue, sock, i);
|
srv->queue.insert( i + begin( srv->queue ), sock );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dList_append(srv->queue, sock);
|
srv->queue.push_back( sock );
|
||||||
}
|
}
|
||||||
|
|
||||||
static Server_t *Http_server_get(const std::string host, uint_t port, bool https)
|
static Server_t *Http_server_get(const std::string host, uint_t port, bool https)
|
||||||
@@ -1077,7 +1077,6 @@ static Server_t *Http_server_get(const std::string host, uint_t port, bool https
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto srv = std::make_unique< Server_t >();
|
auto srv = std::make_unique< Server_t >();
|
||||||
srv->queue = dList_new(10);
|
|
||||||
srv->running_the_queue = 0;
|
srv->running_the_queue = 0;
|
||||||
srv->host = host;
|
srv->host = host;
|
||||||
srv->port = port;
|
srv->port = port;
|
||||||
@@ -1091,11 +1090,10 @@ static void Http_server_remove(Server_t *srv)
|
|||||||
{
|
{
|
||||||
SocketData_t *sd;
|
SocketData_t *sd;
|
||||||
|
|
||||||
while ((sd = reinterpret_cast< SocketData_t * >( dList_nth_data(srv->queue, 0) ))) {
|
while (not srv->queue.empty() and (sd = srv->queue.at( 0 ))) {
|
||||||
dList_remove_fast(srv->queue, sd);
|
srv->queue.erase( begin( srv->queue ) );
|
||||||
delete sd;
|
delete sd;
|
||||||
}
|
}
|
||||||
dList_free(srv->queue);
|
|
||||||
servers.erase( std::find( begin( servers ), end( servers ), srv ) );
|
servers.erase( std::find( begin( servers ), end( servers ), srv ) );
|
||||||
delete srv;
|
delete srv;
|
||||||
}
|
}
|
||||||
@@ -1107,8 +1105,8 @@ static void Http_servers_remove_all(void)
|
|||||||
|
|
||||||
while (not servers.empty()) {
|
while (not servers.empty()) {
|
||||||
srv = servers.at( 0 );
|
srv = servers.at( 0 );
|
||||||
while ((sd = reinterpret_cast< SocketData_t * >( dList_nth_data(srv->queue, 0) ))) {
|
while (not srv->queue.empty() and (sd = srv->queue.at( 0 ))) {
|
||||||
dList_remove(srv->queue, sd);
|
srv->queue.erase( begin( srv->queue ) );
|
||||||
delete sd;
|
delete sd;
|
||||||
}
|
}
|
||||||
Http_server_remove(srv);
|
Http_server_remove(srv);
|
||||||
|
|||||||
Reference in New Issue
Block a user