Skip to content

Commit 074d268

Browse files
committed
Use Appender in more cases
1 parent bc7ffcc commit 074d268

File tree

5 files changed

+18
-16
lines changed

5 files changed

+18
-16
lines changed

src/pwhash.d

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ module soulfind.pwhash;
66
@safe:
77

88
import std.algorithm.iteration : splitter;
9+
import std.array : Appender;
910
import std.bitmanip : nativeToBigEndian;
1011
import std.conv : ConvException, text, to;
1112
import std.digest : LetterCase, secureEqual, toHexString;
@@ -128,8 +129,8 @@ void verify_password_async(string hash, string password,
128129

129130
void process_password_tasks()
130131
{
131-
HashCallback[] hash_password_tasks_to_remove;
132-
VerifyCallback[] verify_password_tasks_to_remove;
132+
Appender!(HashCallback[]) hash_password_tasks_to_remove;
133+
Appender!(VerifyCallback[]) verify_password_tasks_to_remove;
133134

134135
foreach (ref callback, ref task ; hash_password_tasks) {
135136
if (!task.done)

src/server/cmdhandler.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,7 @@ final class CommandHandler
346346
break;
347347
}
348348
}
349-
User[] users_to_kick;
349+
Appender!(User[]) users_to_kick;
350350
foreach (ref user ; server.connected_users)
351351
if (user.username != admin_username)
352352
users_to_kick ~= user;

src/server/conns.d

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import soulfind.server.msghandler : MessageHandler;
1414
import soulfind.server.select : DefaultSelector, SelectEvent, Selector;
1515
import soulfind.server.server : Server;
1616
import soulfind.server.user : User;
17+
import std.array : Appender;
1718
import std.bitmanip : Endian, nativeToLittleEndian, peek, read;
1819
import std.datetime : MonoTime, msecs;
1920
import std.socket : InternetAddress, parseAddress, Socket, socket_t,
@@ -89,7 +90,7 @@ final class UserConnections
8990

9091
// Check expired login attempts and unsearchable users
9192
if ((current_time - last_user_check) >= user_check_interval) {
92-
User[] expired_users;
93+
Appender!(User[]) expired_users;
9394
foreach (ref user ; sock_users)
9495
if (user.login_timed_out(current_time))
9596
expired_users ~= user;

src/server/select.d

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
module soulfind.server.select;
66
@safe:
77

8+
import std.array : Appender;
89
import std.datetime : Duration;
910
import std.socket : socket_t;
1011

@@ -288,7 +289,7 @@ final class PollSelector : Selector
288289
import core.sys.posix.poll;
289290
}
290291

291-
private pollfd[] pollfds;
292+
private Appender!(pollfd[]) pollfds;
292293

293294
this(Duration timeout)
294295
{
@@ -304,7 +305,7 @@ final class PollSelector : Selector
304305
const pfd = create_pollfd(fd, events);
305306

306307
if (is_registered)
307-
pollfds[find_fd_idx(fd)] = pfd;
308+
pollfds[][find_fd_idx(fd)] = pfd;
308309
else
309310
pollfds ~= pfd;
310311

@@ -322,11 +323,11 @@ final class PollSelector : Selector
322323

323324
if (remaining_events == 0) {
324325
fd_events.remove(fd);
325-
pollfds[idx] = pollfds[$ - 1];
326-
pollfds.length--;
326+
pollfds[][idx] = pollfds[][$ - 1];
327+
pollfds[].length--;
327328
return;
328329
}
329-
pollfds[idx] = create_pollfd(fd, remaining_events);
330+
pollfds[][idx] = create_pollfd(fd, remaining_events);
330331
}
331332

332333
override ReadyFD[] select()
@@ -379,7 +380,7 @@ final class PollSelector : Selector
379380
private int wait()
380381
{
381382
return poll(
382-
pollfds.ptr, cast(uint) pollfds.length,
383+
pollfds[].ptr, cast(uint) pollfds.length,
383384
cast(int) timeout.total!"msecs"
384385
);
385386
}

src/server/server.d

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ final class Server
248248

249249
void del_user_pms(string username, bool include_received = false)
250250
{
251-
PM[] pms_to_remove;
251+
Appender!(PM[]) pms_to_remove;
252252
foreach (ref pm ; pms) {
253253
if (pm.from_username == username
254254
|| (include_received && pm.to_username == username))
@@ -387,20 +387,19 @@ final class Server
387387
private Recommendation[] filter_recommendations(
388388
int[string] recommendations, size_t max_length, bool ascending = false)
389389
{
390-
Recommendation[] filtered_recommendations;
390+
Appender!(Recommendation[]) filtered_recommendations;
391391
foreach (ref item, ref rating ; recommendations)
392392
if (rating != 0)
393393
filtered_recommendations ~= Recommendation(item, rating);
394394

395-
filtered_recommendations.sort!(
395+
filtered_recommendations[].sort!(
396396
(ref a, ref b)
397397
=> ascending ? a.rating < b.rating : a.rating > b.rating
398398
);
399-
400399
if (filtered_recommendations.length > max_length)
401-
filtered_recommendations.length = max_length;
400+
return filtered_recommendations[][0 .. max_length];
402401

403-
return filtered_recommendations;
402+
return filtered_recommendations[];
404403
}
405404

406405

0 commit comments

Comments
 (0)