From 93cfb9caebffbe3f43e29f71c994681673b3d874 Mon Sep 17 00:00:00 2001 From: Kelvin Mwinuka Date: Mon, 25 Mar 2024 16:23:16 +0800 Subject: [PATCH] Renames Server struct and utils.Server interface to EchoVault and utils.EchoVault respectively --- coverage/coverage.out | 1104 +++++++++++------------ src/main.go | 2 +- src/modules/acl/acl.go | 2 +- src/modules/acl/commands.go | 20 +- src/modules/acl/commands_test.go | 6 +- src/modules/admin/commands.go | 14 +- src/modules/admin/commands_test.go | 7 +- src/modules/connection/commands.go | 2 +- src/modules/connection/commands_test.go | 4 +- src/modules/generic/commands.go | 20 +- src/modules/generic/commands_test.go | 4 +- src/modules/hash/commands.go | 22 +- src/modules/hash/commands_test.go | 4 +- src/modules/list/commands.go | 20 +- src/modules/list/commands_test.go | 4 +- src/modules/pubsub/commands.go | 14 +- src/modules/pubsub/commands_test.go | 10 +- src/modules/set/commands.go | 32 +- src/modules/set/commant_test.go | 4 +- src/modules/sorted_set/commands.go | 46 +- src/modules/sorted_set/commands_test.go | 4 +- src/modules/string/commands.go | 6 +- src/modules/string/commands_test.go | 4 +- src/raft/fsm.go | 2 +- src/raft/raft.go | 2 +- src/server/cluster.go | 6 +- src/server/keyspace.go | 32 +- src/server/modules.go | 10 +- src/server/server.go | 32 +- src/utils/config.go | 2 +- src/utils/types.go | 4 +- 31 files changed, 725 insertions(+), 720 deletions(-) diff --git a/coverage/coverage.out b/coverage/coverage.out index 5deeefd..dd1d92a 100644 --- a/coverage/coverage.out +++ b/coverage/coverage.out @@ -1,4 +1,274 @@ mode: set +github.com/echovault/echovault/src/modules/connection/commands.go:25.108,26.18 1 1 +github.com/echovault/echovault/src/modules/connection/commands.go:27.10,28.50 1 1 +github.com/echovault/echovault/src/modules/connection/commands.go:29.9,30.34 1 1 +github.com/echovault/echovault/src/modules/connection/commands.go:31.9,32.72 1 1 +github.com/echovault/echovault/src/modules/connection/commands.go:36.33,43.60 1 0 +github.com/echovault/echovault/src/modules/connection/commands.go:43.60,45.5 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:29.105,31.16 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:31.16,33.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:35.2,38.25 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:38.25,40.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:42.2,42.38 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:42.38,44.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:46.2,46.33 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:46.33,48.17 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:48.17,50.4 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:51.3,52.59 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:52.59,54.4 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:55.3,55.59 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:58.2,58.51 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:58.51,60.3 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:61.2,64.9 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:64.9,66.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:68.2,69.36 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:69.36,70.42 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:70.42,71.26 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:71.26,74.5 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:75.4,75.12 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:77.3,78.13 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:80.2,80.55 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:80.55,82.3 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:84.2,84.51 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:87.108,89.16 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:89.16,91.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:93.2,96.33 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:96.33,98.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:100.2,100.52 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:100.52,102.3 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:103.2,106.9 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:106.9,108.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:110.2,113.31 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:113.31,115.19 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:115.19,117.12 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:119.3,119.34 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:119.34,121.12 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:123.3,123.31 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:123.31,125.12 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:127.3,127.35 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:127.35,130.12 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:132.3,132.32 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:135.2,135.25 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:138.111,140.16 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:140.16,142.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:144.2,147.33 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:147.33,149.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:151.2,151.52 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:151.52,153.3 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:154.2,157.9 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:157.9,159.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:161.2,164.31 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:164.31,166.19 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:166.19,168.12 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:170.3,170.34 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:170.34,172.12 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:174.3,174.35 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:174.35,177.12 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:179.3,179.31 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:179.31,181.12 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:183.3,183.18 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:186.2,186.25 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:189.109,191.16 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:191.16,193.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:195.2,197.33 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:197.33,199.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:201.2,201.52 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:201.52,203.3 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:204.2,207.9 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:207.9,209.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:211.2,212.27 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:212.27,213.32 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:213.32,215.12 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:217.3,217.33 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:217.33,220.12 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:222.3,222.29 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:222.29,224.4 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:227.2,227.25 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:230.114,232.16 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:232.16,234.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:236.2,239.19 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:239.19,241.17 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:241.17,243.4 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:244.3,244.13 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:244.13,246.4 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:247.3,247.12 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:250.2,251.19 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:251.19,252.46 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:252.46,254.4 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:254.9,256.4 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:259.2,259.33 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:259.33,261.3 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:263.2,263.52 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:263.52,265.3 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:266.2,269.9 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:269.9,271.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:274.2,274.24 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:274.24,276.17 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:276.17,278.4 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:279.3,279.34 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:279.34,281.18 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:281.18,282.36 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:282.36,284.14 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:286.5,286.37 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:286.37,289.14 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:291.5,291.33 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:291.33,293.14 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:297.3,297.26 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:301.2,302.29 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:302.29,304.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:307.2,309.43 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:309.43,313.16 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:313.16,314.59 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:314.59,316.5 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:320.2,321.16 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:321.16,323.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:324.2,324.38 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:324.38,326.17 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:326.17,327.41 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:327.41,329.13 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:331.4,331.42 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:331.42,334.13 3 0 +github.com/echovault/echovault/src/modules/hash/commands.go:336.4,336.38 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:336.38,338.13 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:343.2,343.25 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:346.108,348.16 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:348.16,350.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:352.2,354.33 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:354.33,356.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:358.2,358.52 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:358.52,360.3 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:361.2,364.9 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:364.9,366.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:368.2,368.55 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:371.109,373.16 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:373.16,375.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:377.2,379.33 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:379.33,381.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:383.2,383.52 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:383.52,385.3 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:386.2,389.9 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:389.9,391.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:393.2,394.29 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:394.29,396.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:398.2,398.25 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:401.111,403.16 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:403.16,405.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:407.2,413.47 5 1 +github.com/echovault/echovault/src/modules/hash/commands.go:413.47,415.17 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:415.17,417.4 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:418.3,418.21 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:419.8,421.17 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:421.17,423.4 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:424.3,424.19 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:427.2,427.33 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:427.33,428.62 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:428.62,430.4 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:431.3,433.48 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:433.48,435.57 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:435.57,437.5 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:438.4,438.96 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:439.9,441.57 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:441.57,443.5 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:444.4,444.60 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:448.2,448.52 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:448.52,450.3 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:451.2,454.9 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:454.9,456.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:458.2,458.24 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:458.24,460.3 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:462.2,462.28 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:463.10,464.69 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:465.11,467.48 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:467.48,469.4 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:469.9,471.4 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:472.15,474.48 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:474.48,476.4 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:476.9,478.4 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:481.2,481.55 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:481.55,483.3 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:485.2,485.40 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:485.40,487.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:489.2,490.47 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:493.111,495.16 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:495.16,497.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:499.2,501.33 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:501.33,503.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:505.2,505.52 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:505.52,507.3 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:508.2,511.9 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:511.9,513.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:515.2,516.33 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:516.33,518.34 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:518.34,520.4 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:521.3,521.35 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:521.35,524.4 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:525.3,525.31 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:525.31,527.4 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:530.2,530.25 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:533.111,535.16 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:535.16,537.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:539.2,542.33 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:542.33,544.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:546.2,546.52 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:546.52,548.3 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:549.2,552.9 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:552.9,554.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:556.2,556.24 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:556.24,558.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:560.2,560.30 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:563.108,565.16 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:565.16,567.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:569.2,572.33 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:572.33,574.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:576.2,576.51 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:576.51,578.3 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:579.2,582.9 3 1 +github.com/echovault/echovault/src/modules/hash/commands.go:582.9,584.3 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:586.2,588.31 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:588.31,589.25 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:589.25,592.4 2 1 +github.com/echovault/echovault/src/modules/hash/commands.go:595.2,595.55 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:595.55,597.3 1 0 +github.com/echovault/echovault/src/modules/hash/commands.go:599.2,599.51 1 1 +github.com/echovault/echovault/src/modules/hash/commands.go:602.33,710.2 1 0 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:22.50,23.18 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:23.18,25.3 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:26.2,26.22 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:29.52,30.18 1 0 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:30.18,32.3 1 0 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:33.2,33.22 1 0 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:36.50,37.18 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:37.18,39.3 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:40.2,40.22 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:43.53,44.18 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:44.18,46.3 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:47.2,47.22 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:50.51,51.19 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:51.19,53.3 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:54.2,54.21 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:57.56,58.34 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:58.34,60.3 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:61.2,61.19 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:61.19,63.3 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:64.2,64.22 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:67.50,68.19 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:68.19,70.3 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:71.2,71.21 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:74.51,75.19 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:75.19,77.3 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:78.2,78.21 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:81.53,82.19 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:82.19,84.3 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:85.2,85.22 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:88.53,89.19 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:89.19,91.3 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:92.2,92.21 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:95.53,96.19 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:96.19,98.3 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:99.2,99.22 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:102.50,103.18 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:103.18,105.3 1 1 +github.com/echovault/echovault/src/modules/hash/key_funcs.go:106.2,106.22 1 1 github.com/echovault/echovault/src/modules/acl/acl.go:50.39,55.24 3 1 github.com/echovault/echovault/src/modules/acl/acl.go:55.24,63.3 2 1 github.com/echovault/echovault/src/modules/acl/acl.go:66.2,66.28 1 1 @@ -138,14 +408,14 @@ github.com/echovault/echovault/src/modules/acl/acl.go:457.29,459.2 1 1 github.com/echovault/echovault/src/modules/acl/acl.go:461.31,463.2 1 1 github.com/echovault/echovault/src/modules/acl/acl.go:465.30,467.2 1 1 github.com/echovault/echovault/src/modules/acl/acl.go:469.32,471.2 1 1 -github.com/echovault/echovault/src/modules/acl/commands.go:32.105,33.34 1 1 +github.com/echovault/echovault/src/modules/acl/commands.go:32.108,33.34 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:33.34,35.3 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:36.2,37.9 2 1 github.com/echovault/echovault/src/modules/acl/commands.go:37.9,39.3 1 0 github.com/echovault/echovault/src/modules/acl/commands.go:40.2,40.67 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:40.67,42.3 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:43.2,43.38 1 1 -github.com/echovault/echovault/src/modules/acl/commands.go:46.103,47.19 1 1 +github.com/echovault/echovault/src/modules/acl/commands.go:46.106,47.19 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:47.19,49.3 1 0 github.com/echovault/echovault/src/modules/acl/commands.go:51.2,52.9 2 1 github.com/echovault/echovault/src/modules/acl/commands.go:52.9,54.3 1 0 @@ -192,7 +462,7 @@ github.com/echovault/echovault/src/modules/acl/commands.go:151.54,153.3 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:154.2,154.54 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:154.54,156.3 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:158.2,160.25 2 1 -github.com/echovault/echovault/src/modules/acl/commands.go:163.99,164.18 1 1 +github.com/echovault/echovault/src/modules/acl/commands.go:163.102,164.18 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:164.18,166.3 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:168.2,172.35 3 1 github.com/echovault/echovault/src/modules/acl/commands.go:172.35,173.36 1 1 @@ -217,27 +487,27 @@ github.com/echovault/echovault/src/modules/acl/commands.go:209.38,211.30 2 1 github.com/echovault/echovault/src/modules/acl/commands.go:211.30,213.7 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:215.5,215.28 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:220.2,220.74 1 1 -github.com/echovault/echovault/src/modules/acl/commands.go:223.99,225.9 2 1 +github.com/echovault/echovault/src/modules/acl/commands.go:223.102,225.9 2 1 github.com/echovault/echovault/src/modules/acl/commands.go:225.9,227.3 1 0 github.com/echovault/echovault/src/modules/acl/commands.go:228.2,229.33 2 1 github.com/echovault/echovault/src/modules/acl/commands.go:229.33,231.3 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:232.2,233.25 2 1 -github.com/echovault/echovault/src/modules/acl/commands.go:236.103,238.9 2 1 +github.com/echovault/echovault/src/modules/acl/commands.go:236.106,238.9 2 1 github.com/echovault/echovault/src/modules/acl/commands.go:238.9,240.3 1 0 github.com/echovault/echovault/src/modules/acl/commands.go:241.2,241.45 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:241.45,243.3 1 0 github.com/echovault/echovault/src/modules/acl/commands.go:244.2,244.38 1 1 -github.com/echovault/echovault/src/modules/acl/commands.go:247.105,248.18 1 1 +github.com/echovault/echovault/src/modules/acl/commands.go:247.108,248.18 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:248.18,250.3 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:251.2,252.9 2 1 github.com/echovault/echovault/src/modules/acl/commands.go:252.9,254.3 1 0 github.com/echovault/echovault/src/modules/acl/commands.go:255.2,255.53 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:255.53,257.3 1 0 github.com/echovault/echovault/src/modules/acl/commands.go:258.2,258.38 1 1 -github.com/echovault/echovault/src/modules/acl/commands.go:261.103,263.9 2 1 +github.com/echovault/echovault/src/modules/acl/commands.go:261.106,263.9 2 1 github.com/echovault/echovault/src/modules/acl/commands.go:263.9,265.3 1 0 github.com/echovault/echovault/src/modules/acl/commands.go:266.2,267.74 2 1 -github.com/echovault/echovault/src/modules/acl/commands.go:270.100,271.18 1 1 +github.com/echovault/echovault/src/modules/acl/commands.go:270.103,271.18 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:271.18,273.3 1 0 github.com/echovault/echovault/src/modules/acl/commands.go:274.2,275.9 2 1 github.com/echovault/echovault/src/modules/acl/commands.go:275.9,277.3 1 0 @@ -283,7 +553,7 @@ github.com/echovault/echovault/src/modules/acl/commands.go:356.3,356.55 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:356.55,358.4 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:359.3,359.54 1 1 github.com/echovault/echovault/src/modules/acl/commands.go:362.2,363.25 2 1 -github.com/echovault/echovault/src/modules/acl/commands.go:366.100,367.19 1 0 +github.com/echovault/echovault/src/modules/acl/commands.go:366.103,367.19 1 0 github.com/echovault/echovault/src/modules/acl/commands.go:367.19,369.3 1 0 github.com/echovault/echovault/src/modules/acl/commands.go:371.2,372.9 2 0 github.com/echovault/echovault/src/modules/acl/commands.go:372.9,374.3 1 0 @@ -308,7 +578,7 @@ github.com/echovault/echovault/src/modules/acl/commands.go:421.5,421.10 1 0 github.com/echovault/echovault/src/modules/acl/commands.go:425.3,425.17 1 0 github.com/echovault/echovault/src/modules/acl/commands.go:425.17,427.4 1 0 github.com/echovault/echovault/src/modules/acl/commands.go:430.2,430.38 1 0 -github.com/echovault/echovault/src/modules/acl/commands.go:433.100,434.18 1 0 +github.com/echovault/echovault/src/modules/acl/commands.go:433.103,434.18 1 0 github.com/echovault/echovault/src/modules/acl/commands.go:434.18,436.3 1 0 github.com/echovault/echovault/src/modules/acl/commands.go:438.2,439.9 2 0 github.com/echovault/echovault/src/modules/acl/commands.go:439.9,441.3 1 0 @@ -440,7 +710,7 @@ github.com/echovault/echovault/src/modules/generic/commands.go:32.13,33.34 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:33.34,37.3 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:39.2,40.29 2 0 github.com/echovault/echovault/src/modules/generic/commands.go:40.29,42.3 1 0 -github.com/echovault/echovault/src/modules/generic/commands.go:50.101,52.16 2 1 +github.com/echovault/echovault/src/modules/generic/commands.go:50.104,52.16 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:52.16,54.3 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:56.2,61.16 5 1 github.com/echovault/echovault/src/modules/generic/commands.go:61.16,63.3 1 1 @@ -466,7 +736,7 @@ github.com/echovault/echovault/src/modules/generic/commands.go:102.73,104.3 1 0 github.com/echovault/echovault/src/modules/generic/commands.go:107.2,107.28 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:107.28,109.3 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:111.2,111.17 1 1 -github.com/echovault/echovault/src/modules/generic/commands.go:114.102,115.44 1 1 +github.com/echovault/echovault/src/modules/generic/commands.go:114.105,115.44 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:115.44,117.3 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:119.2,122.15 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:122.15,123.29 1 1 @@ -487,14 +757,14 @@ github.com/echovault/echovault/src/modules/generic/commands.go:161.2,161.28 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:161.28,162.58 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:162.58,164.4 1 0 github.com/echovault/echovault/src/modules/generic/commands.go:167.2,167.38 1 1 -github.com/echovault/echovault/src/modules/generic/commands.go:170.101,172.16 2 1 +github.com/echovault/echovault/src/modules/generic/commands.go:170.104,172.16 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:172.16,174.3 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:175.2,177.33 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:177.33,179.3 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:181.2,182.16 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:182.16,184.3 1 0 github.com/echovault/echovault/src/modules/generic/commands.go:185.2,189.51 3 1 -github.com/echovault/echovault/src/modules/generic/commands.go:192.102,194.16 2 1 +github.com/echovault/echovault/src/modules/generic/commands.go:192.105,194.16 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:194.16,196.3 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:198.2,201.27 3 1 github.com/echovault/echovault/src/modules/generic/commands.go:201.27,202.31 1 1 @@ -515,14 +785,14 @@ github.com/echovault/echovault/src/modules/generic/commands.go:231.30,232.24 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:232.24,234.12 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:236.3,236.96 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:239.2,239.19 1 1 -github.com/echovault/echovault/src/modules/generic/commands.go:242.101,244.16 2 1 +github.com/echovault/echovault/src/modules/generic/commands.go:242.104,244.16 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:244.16,246.3 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:247.2,248.27 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:248.27,250.17 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:250.17,252.12 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:254.3,254.13 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:256.2,256.51 1 1 -github.com/echovault/echovault/src/modules/generic/commands.go:259.105,261.16 2 1 +github.com/echovault/echovault/src/modules/generic/commands.go:259.108,261.16 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:261.16,263.3 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:265.2,267.33 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:267.33,269.3 1 1 @@ -531,7 +801,7 @@ github.com/echovault/echovault/src/modules/generic/commands.go:271.51,273.3 1 0 github.com/echovault/echovault/src/modules/generic/commands.go:274.2,277.31 3 1 github.com/echovault/echovault/src/modules/generic/commands.go:277.31,279.3 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:281.2,283.30 2 1 -github.com/echovault/echovault/src/modules/generic/commands.go:286.108,288.16 2 1 +github.com/echovault/echovault/src/modules/generic/commands.go:286.111,288.16 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:288.16,290.3 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:292.2,294.33 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:294.33,296.3 1 1 @@ -542,7 +812,7 @@ github.com/echovault/echovault/src/modules/generic/commands.go:305.31,307.3 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:309.2,310.46 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:310.46,312.3 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:314.2,314.47 1 1 -github.com/echovault/echovault/src/modules/generic/commands.go:317.101,319.16 2 1 +github.com/echovault/echovault/src/modules/generic/commands.go:317.104,319.16 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:319.16,321.3 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:323.2,325.33 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:325.33,327.3 1 1 @@ -555,7 +825,7 @@ github.com/echovault/echovault/src/modules/generic/commands.go:341.39,343.3 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:345.2,345.12 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:345.12,347.3 1 0 github.com/echovault/echovault/src/modules/generic/commands.go:349.2,349.47 1 1 -github.com/echovault/echovault/src/modules/generic/commands.go:352.104,354.16 2 1 +github.com/echovault/echovault/src/modules/generic/commands.go:352.107,354.16 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:354.16,356.3 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:358.2,362.16 3 1 github.com/echovault/echovault/src/modules/generic/commands.go:362.16,364.3 1 1 @@ -586,7 +856,7 @@ github.com/echovault/echovault/src/modules/generic/commands.go:410.4,410.47 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:412.3,412.46 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:413.10,414.71 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:417.2,417.30 1 1 -github.com/echovault/echovault/src/modules/generic/commands.go:420.106,422.16 2 1 +github.com/echovault/echovault/src/modules/generic/commands.go:420.109,422.16 2 1 github.com/echovault/echovault/src/modules/generic/commands.go:422.16,424.3 1 1 github.com/echovault/echovault/src/modules/generic/commands.go:426.2,430.16 3 1 github.com/echovault/echovault/src/modules/generic/commands.go:430.16,432.3 1 1 @@ -690,277 +960,74 @@ github.com/echovault/echovault/src/modules/generic/utils.go:106.3,108.17 3 1 github.com/echovault/echovault/src/modules/generic/utils.go:108.17,110.4 1 1 github.com/echovault/echovault/src/modules/generic/utils.go:111.3,112.46 2 1 github.com/echovault/echovault/src/modules/generic/utils.go:114.10,115.95 1 1 -github.com/echovault/echovault/src/modules/connection/commands.go:25.105,26.18 1 1 -github.com/echovault/echovault/src/modules/connection/commands.go:27.10,28.50 1 1 -github.com/echovault/echovault/src/modules/connection/commands.go:29.9,30.34 1 1 -github.com/echovault/echovault/src/modules/connection/commands.go:31.9,32.72 1 1 -github.com/echovault/echovault/src/modules/connection/commands.go:36.33,43.60 1 0 -github.com/echovault/echovault/src/modules/connection/commands.go:43.60,45.5 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:29.105,31.16 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:31.16,33.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:35.2,38.25 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:38.25,40.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:42.2,42.38 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:42.38,44.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:46.2,46.33 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:46.33,48.17 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:48.17,50.4 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:51.3,52.59 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:52.59,54.4 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:55.3,55.59 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:58.2,58.51 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:58.51,60.3 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:61.2,64.9 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:64.9,66.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:68.2,69.36 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:69.36,70.42 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:70.42,71.26 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:71.26,74.5 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:75.4,75.12 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:77.3,78.13 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:80.2,80.55 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:80.55,82.3 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:84.2,84.51 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:87.105,89.16 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:89.16,91.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:93.2,96.33 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:96.33,98.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:100.2,100.52 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:100.52,102.3 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:103.2,106.9 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:106.9,108.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:110.2,113.31 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:113.31,115.19 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:115.19,117.12 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:119.3,119.34 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:119.34,121.12 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:123.3,123.31 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:123.31,125.12 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:127.3,127.35 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:127.35,130.12 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:132.3,132.32 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:135.2,135.25 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:138.108,140.16 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:140.16,142.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:144.2,147.33 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:147.33,149.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:151.2,151.52 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:151.52,153.3 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:154.2,157.9 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:157.9,159.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:161.2,164.31 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:164.31,166.19 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:166.19,168.12 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:170.3,170.34 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:170.34,172.12 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:174.3,174.35 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:174.35,177.12 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:179.3,179.31 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:179.31,181.12 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:183.3,183.18 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:186.2,186.25 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:189.106,191.16 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:191.16,193.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:195.2,197.33 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:197.33,199.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:201.2,201.52 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:201.52,203.3 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:204.2,207.9 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:207.9,209.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:211.2,212.27 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:212.27,213.32 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:213.32,215.12 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:217.3,217.33 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:217.33,220.12 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:222.3,222.29 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:222.29,224.4 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:227.2,227.25 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:230.111,232.16 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:232.16,234.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:236.2,239.19 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:239.19,241.17 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:241.17,243.4 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:244.3,244.13 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:244.13,246.4 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:247.3,247.12 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:250.2,251.19 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:251.19,252.46 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:252.46,254.4 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:254.9,256.4 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:259.2,259.33 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:259.33,261.3 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:263.2,263.52 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:263.52,265.3 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:266.2,269.9 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:269.9,271.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:274.2,274.24 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:274.24,276.17 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:276.17,278.4 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:279.3,279.34 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:279.34,281.18 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:281.18,282.36 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:282.36,284.14 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:286.5,286.37 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:286.37,289.14 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:291.5,291.33 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:291.33,293.14 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:297.3,297.26 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:301.2,302.29 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:302.29,304.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:307.2,309.43 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:309.43,313.16 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:313.16,314.59 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:314.59,316.5 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:320.2,321.16 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:321.16,323.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:324.2,324.38 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:324.38,326.17 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:326.17,327.41 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:327.41,329.13 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:331.4,331.42 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:331.42,334.13 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:336.4,336.38 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:336.38,338.13 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:343.2,343.25 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:346.105,348.16 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:348.16,350.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:352.2,354.33 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:354.33,356.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:358.2,358.52 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:358.52,360.3 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:361.2,364.9 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:364.9,366.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:368.2,368.55 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:371.106,373.16 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:373.16,375.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:377.2,379.33 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:379.33,381.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:383.2,383.52 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:383.52,385.3 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:386.2,389.9 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:389.9,391.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:393.2,394.29 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:394.29,396.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:398.2,398.25 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:401.108,403.16 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:403.16,405.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:407.2,413.47 5 1 -github.com/echovault/echovault/src/modules/hash/commands.go:413.47,415.17 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:415.17,417.4 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:418.3,418.21 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:419.8,421.17 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:421.17,423.4 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:424.3,424.19 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:427.2,427.33 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:427.33,428.62 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:428.62,430.4 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:431.3,433.48 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:433.48,435.57 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:435.57,437.5 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:438.4,438.96 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:439.9,441.57 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:441.57,443.5 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:444.4,444.60 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:448.2,448.52 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:448.52,450.3 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:451.2,454.9 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:454.9,456.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:458.2,458.24 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:458.24,460.3 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:462.2,462.28 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:463.10,464.69 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:465.11,467.48 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:467.48,469.4 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:469.9,471.4 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:472.15,474.48 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:474.48,476.4 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:476.9,478.4 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:481.2,481.55 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:481.55,483.3 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:485.2,485.40 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:485.40,487.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:489.2,490.47 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:493.108,495.16 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:495.16,497.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:499.2,501.33 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:501.33,503.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:505.2,505.52 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:505.52,507.3 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:508.2,511.9 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:511.9,513.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:515.2,516.33 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:516.33,518.34 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:518.34,520.4 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:521.3,521.35 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:521.35,524.4 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:525.3,525.31 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:525.31,527.4 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:530.2,530.25 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:533.108,535.16 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:535.16,537.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:539.2,542.33 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:542.33,544.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:546.2,546.52 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:546.52,548.3 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:549.2,552.9 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:552.9,554.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:556.2,556.24 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:556.24,558.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:560.2,560.30 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:563.105,565.16 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:565.16,567.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:569.2,572.33 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:572.33,574.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:576.2,576.51 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:576.51,578.3 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:579.2,582.9 3 1 -github.com/echovault/echovault/src/modules/hash/commands.go:582.9,584.3 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:586.2,588.31 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:588.31,589.25 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:589.25,592.4 2 1 -github.com/echovault/echovault/src/modules/hash/commands.go:595.2,595.55 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:595.55,597.3 1 0 -github.com/echovault/echovault/src/modules/hash/commands.go:599.2,599.51 1 1 -github.com/echovault/echovault/src/modules/hash/commands.go:602.33,710.2 1 0 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:22.50,23.18 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:23.18,25.3 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:26.2,26.22 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:29.52,30.18 1 0 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:30.18,32.3 1 0 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:33.2,33.22 1 0 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:36.50,37.18 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:37.18,39.3 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:40.2,40.22 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:43.53,44.18 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:44.18,46.3 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:47.2,47.22 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:50.51,51.19 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:51.19,53.3 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:54.2,54.21 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:57.56,58.34 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:58.34,60.3 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:61.2,61.19 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:61.19,63.3 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:64.2,64.22 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:67.50,68.19 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:68.19,70.3 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:71.2,71.21 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:74.51,75.19 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:75.19,77.3 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:78.2,78.21 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:81.53,82.19 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:82.19,84.3 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:85.2,85.22 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:88.53,89.19 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:89.19,91.3 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:92.2,92.21 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:95.53,96.19 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:96.19,98.3 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:99.2,99.22 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:102.50,103.18 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:103.18,105.3 1 1 -github.com/echovault/echovault/src/modules/hash/key_funcs.go:106.2,106.22 1 1 -github.com/echovault/echovault/src/modules/list/commands.go:28.102,30.16 2 1 +github.com/echovault/echovault/src/modules/admin/commands.go:28.115,34.29 4 1 +github.com/echovault/echovault/src/modules/admin/commands.go:34.29,35.54 1 1 +github.com/echovault/echovault/src/modules/admin/commands.go:35.54,41.42 4 1 +github.com/echovault/echovault/src/modules/admin/commands.go:41.42,43.5 1 1 +github.com/echovault/echovault/src/modules/admin/commands.go:45.4,48.12 3 1 +github.com/echovault/echovault/src/modules/admin/commands.go:51.3,51.36 1 1 +github.com/echovault/echovault/src/modules/admin/commands.go:51.36,58.43 5 1 +github.com/echovault/echovault/src/modules/admin/commands.go:58.43,60.5 1 1 +github.com/echovault/echovault/src/modules/admin/commands.go:62.4,64.21 2 1 +github.com/echovault/echovault/src/modules/admin/commands.go:68.2,70.25 2 1 +github.com/echovault/echovault/src/modules/admin/commands.go:73.109,77.35 3 0 +github.com/echovault/echovault/src/modules/admin/commands.go:77.35,78.65 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:78.65,79.41 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:79.41,81.5 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:82.4,82.12 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:84.3,84.13 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:87.2,87.51 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:90.112,91.18 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:92.9,97.36 4 0 +github.com/echovault/echovault/src/modules/admin/commands.go:97.36,98.66 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:98.66,99.52 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:99.52,103.6 3 0 +github.com/echovault/echovault/src/modules/admin/commands.go:104.5,104.13 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:106.4,107.14 2 0 +github.com/echovault/echovault/src/modules/admin/commands.go:109.3,110.26 2 0 +github.com/echovault/echovault/src/modules/admin/commands.go:112.9,116.45 3 0 +github.com/echovault/echovault/src/modules/admin/commands.go:116.45,118.4 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:119.3,119.42 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:119.42,123.37 3 0 +github.com/echovault/echovault/src/modules/admin/commands.go:123.37,124.67 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:124.67,125.53 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:125.53,126.59 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:126.59,130.8 3 0 +github.com/echovault/echovault/src/modules/admin/commands.go:132.6,132.14 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:134.5,134.54 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:134.54,137.6 2 0 +github.com/echovault/echovault/src/modules/admin/commands.go:139.9,139.50 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:139.50,143.37 3 0 +github.com/echovault/echovault/src/modules/admin/commands.go:143.37,144.67 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:144.67,145.53 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:145.53,147.24 2 0 +github.com/echovault/echovault/src/modules/admin/commands.go:147.24,150.8 2 0 +github.com/echovault/echovault/src/modules/admin/commands.go:152.6,152.14 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:154.5,154.33 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:154.33,157.6 2 0 +github.com/echovault/echovault/src/modules/admin/commands.go:159.9,161.4 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:162.3,163.26 2 0 +github.com/echovault/echovault/src/modules/admin/commands.go:164.10,165.50 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:169.112,171.2 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:173.33,180.60 1 1 +github.com/echovault/echovault/src/modules/admin/commands.go:180.60,180.86 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:188.60,190.5 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:197.62,197.88 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:205.62,205.88 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:214.62,214.88 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:224.60,226.5 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:227.113,228.49 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:228.49,230.6 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:231.5,231.41 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:239.60,241.5 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:242.113,244.18 2 0 +github.com/echovault/echovault/src/modules/admin/commands.go:244.18,246.6 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:247.5,247.53 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:255.60,257.5 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:258.113,259.47 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:259.47,261.6 1 0 +github.com/echovault/echovault/src/modules/admin/commands.go:262.5,262.41 1 0 +github.com/echovault/echovault/src/modules/list/commands.go:28.105,30.16 2 1 github.com/echovault/echovault/src/modules/list/commands.go:30.16,32.3 1 1 github.com/echovault/echovault/src/modules/list/commands.go:34.2,36.33 2 1 github.com/echovault/echovault/src/modules/list/commands.go:36.33,39.3 1 1 @@ -969,7 +1036,7 @@ github.com/echovault/echovault/src/modules/list/commands.go:41.52,43.3 1 0 github.com/echovault/echovault/src/modules/list/commands.go:44.2,46.63 2 1 github.com/echovault/echovault/src/modules/list/commands.go:46.63,48.3 1 1 github.com/echovault/echovault/src/modules/list/commands.go:50.2,50.57 1 1 -github.com/echovault/echovault/src/modules/list/commands.go:53.107,55.16 2 1 +github.com/echovault/echovault/src/modules/list/commands.go:53.110,55.16 2 1 github.com/echovault/echovault/src/modules/list/commands.go:55.16,57.3 1 1 github.com/echovault/echovault/src/modules/list/commands.go:59.2,62.9 3 1 github.com/echovault/echovault/src/modules/list/commands.go:62.9,64.3 1 1 @@ -982,7 +1049,7 @@ github.com/echovault/echovault/src/modules/list/commands.go:76.9,78.3 1 1 github.com/echovault/echovault/src/modules/list/commands.go:80.2,80.40 1 1 github.com/echovault/echovault/src/modules/list/commands.go:80.40,82.3 1 1 github.com/echovault/echovault/src/modules/list/commands.go:84.2,84.57 1 1 -github.com/echovault/echovault/src/modules/list/commands.go:87.107,89.16 2 1 +github.com/echovault/echovault/src/modules/list/commands.go:87.110,89.16 2 1 github.com/echovault/echovault/src/modules/list/commands.go:89.16,91.3 1 1 github.com/echovault/echovault/src/modules/list/commands.go:93.2,97.24 4 1 github.com/echovault/echovault/src/modules/list/commands.go:97.24,99.3 1 1 @@ -1009,7 +1076,7 @@ github.com/echovault/echovault/src/modules/list/commands.go:153.13,156.18 3 1 github.com/echovault/echovault/src/modules/list/commands.go:156.18,158.4 1 1 github.com/echovault/echovault/src/modules/list/commands.go:158.9,160.4 1 1 github.com/echovault/echovault/src/modules/list/commands.go:163.2,163.19 1 1 -github.com/echovault/echovault/src/modules/list/commands.go:166.105,168.16 2 1 +github.com/echovault/echovault/src/modules/list/commands.go:166.108,168.16 2 1 github.com/echovault/echovault/src/modules/list/commands.go:168.16,170.3 1 1 github.com/echovault/echovault/src/modules/list/commands.go:172.2,175.9 3 1 github.com/echovault/echovault/src/modules/list/commands.go:175.9,177.3 1 1 @@ -1024,7 +1091,7 @@ github.com/echovault/echovault/src/modules/list/commands.go:193.40,195.3 1 1 github.com/echovault/echovault/src/modules/list/commands.go:197.2,198.55 2 1 github.com/echovault/echovault/src/modules/list/commands.go:198.55,200.3 1 0 github.com/echovault/echovault/src/modules/list/commands.go:202.2,202.38 1 1 -github.com/echovault/echovault/src/modules/list/commands.go:205.106,207.16 2 1 +github.com/echovault/echovault/src/modules/list/commands.go:205.109,207.16 2 1 github.com/echovault/echovault/src/modules/list/commands.go:207.16,209.3 1 1 github.com/echovault/echovault/src/modules/list/commands.go:211.2,215.24 4 1 github.com/echovault/echovault/src/modules/list/commands.go:215.24,217.3 1 1 @@ -1045,7 +1112,7 @@ github.com/echovault/echovault/src/modules/list/commands.go:245.3,245.39 1 1 github.com/echovault/echovault/src/modules/list/commands.go:248.2,248.66 1 1 github.com/echovault/echovault/src/modules/list/commands.go:248.66,250.3 1 0 github.com/echovault/echovault/src/modules/list/commands.go:251.2,251.38 1 1 -github.com/echovault/echovault/src/modules/list/commands.go:254.105,256.16 2 1 +github.com/echovault/echovault/src/modules/list/commands.go:254.108,256.16 2 1 github.com/echovault/echovault/src/modules/list/commands.go:256.16,258.3 1 1 github.com/echovault/echovault/src/modules/list/commands.go:260.2,264.9 4 1 github.com/echovault/echovault/src/modules/list/commands.go:264.9,266.3 1 1 @@ -1072,7 +1139,7 @@ github.com/echovault/echovault/src/modules/list/commands.go:311.61,313.3 1 1 github.com/echovault/echovault/src/modules/list/commands.go:315.2,315.55 1 1 github.com/echovault/echovault/src/modules/list/commands.go:315.55,317.3 1 0 github.com/echovault/echovault/src/modules/list/commands.go:319.2,319.38 1 1 -github.com/echovault/echovault/src/modules/list/commands.go:322.106,324.16 2 1 +github.com/echovault/echovault/src/modules/list/commands.go:322.109,324.16 2 1 github.com/echovault/echovault/src/modules/list/commands.go:324.16,326.3 1 1 github.com/echovault/echovault/src/modules/list/commands.go:328.2,333.116 5 1 github.com/echovault/echovault/src/modules/list/commands.go:333.116,335.3 1 1 @@ -1096,7 +1163,7 @@ github.com/echovault/echovault/src/modules/list/commands.go:371.32,373.4 1 1 github.com/echovault/echovault/src/modules/list/commands.go:376.2,376.16 1 1 github.com/echovault/echovault/src/modules/list/commands.go:376.16,378.3 1 0 github.com/echovault/echovault/src/modules/list/commands.go:380.2,380.38 1 1 -github.com/echovault/echovault/src/modules/list/commands.go:383.106,385.16 2 1 +github.com/echovault/echovault/src/modules/list/commands.go:383.109,385.16 2 1 github.com/echovault/echovault/src/modules/list/commands.go:385.16,387.3 1 1 github.com/echovault/echovault/src/modules/list/commands.go:389.2,391.31 2 1 github.com/echovault/echovault/src/modules/list/commands.go:391.31,393.3 1 1 @@ -1114,7 +1181,7 @@ github.com/echovault/echovault/src/modules/list/commands.go:419.9,421.3 1 0 github.com/echovault/echovault/src/modules/list/commands.go:423.2,423.73 1 1 github.com/echovault/echovault/src/modules/list/commands.go:423.73,425.3 1 0 github.com/echovault/echovault/src/modules/list/commands.go:426.2,426.38 1 1 -github.com/echovault/echovault/src/modules/list/commands.go:429.106,431.16 2 1 +github.com/echovault/echovault/src/modules/list/commands.go:429.109,431.16 2 1 github.com/echovault/echovault/src/modules/list/commands.go:431.16,433.3 1 1 github.com/echovault/echovault/src/modules/list/commands.go:435.2,439.31 3 1 github.com/echovault/echovault/src/modules/list/commands.go:439.31,441.3 1 1 @@ -1133,7 +1200,7 @@ github.com/echovault/echovault/src/modules/list/commands.go:467.9,469.3 1 0 github.com/echovault/echovault/src/modules/list/commands.go:471.2,471.73 1 1 github.com/echovault/echovault/src/modules/list/commands.go:471.73,473.3 1 0 github.com/echovault/echovault/src/modules/list/commands.go:474.2,474.38 1 1 -github.com/echovault/echovault/src/modules/list/commands.go:477.104,479.16 2 1 +github.com/echovault/echovault/src/modules/list/commands.go:477.107,479.16 2 1 github.com/echovault/echovault/src/modules/list/commands.go:479.16,481.3 1 1 github.com/echovault/echovault/src/modules/list/commands.go:483.2,485.33 2 1 github.com/echovault/echovault/src/modules/list/commands.go:485.33,487.3 1 0 @@ -1179,217 +1246,7 @@ github.com/echovault/echovault/src/modules/list/key_funcs.go:82.2,82.30 1 1 github.com/echovault/echovault/src/modules/list/key_funcs.go:85.51,86.19 1 1 github.com/echovault/echovault/src/modules/list/key_funcs.go:86.19,88.3 1 1 github.com/echovault/echovault/src/modules/list/key_funcs.go:89.2,89.38 1 1 -github.com/echovault/echovault/src/modules/admin/commands.go:28.112,34.29 4 1 -github.com/echovault/echovault/src/modules/admin/commands.go:34.29,35.54 1 1 -github.com/echovault/echovault/src/modules/admin/commands.go:35.54,41.42 4 1 -github.com/echovault/echovault/src/modules/admin/commands.go:41.42,43.5 1 1 -github.com/echovault/echovault/src/modules/admin/commands.go:45.4,48.12 3 1 -github.com/echovault/echovault/src/modules/admin/commands.go:51.3,51.36 1 1 -github.com/echovault/echovault/src/modules/admin/commands.go:51.36,58.43 5 1 -github.com/echovault/echovault/src/modules/admin/commands.go:58.43,60.5 1 1 -github.com/echovault/echovault/src/modules/admin/commands.go:62.4,64.21 2 1 -github.com/echovault/echovault/src/modules/admin/commands.go:68.2,70.25 2 1 -github.com/echovault/echovault/src/modules/admin/commands.go:73.106,77.35 3 0 -github.com/echovault/echovault/src/modules/admin/commands.go:77.35,78.65 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:78.65,79.41 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:79.41,81.5 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:82.4,82.12 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:84.3,84.13 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:87.2,87.51 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:90.109,91.18 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:92.9,97.36 4 0 -github.com/echovault/echovault/src/modules/admin/commands.go:97.36,98.66 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:98.66,99.52 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:99.52,103.6 3 0 -github.com/echovault/echovault/src/modules/admin/commands.go:104.5,104.13 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:106.4,107.14 2 0 -github.com/echovault/echovault/src/modules/admin/commands.go:109.3,110.26 2 0 -github.com/echovault/echovault/src/modules/admin/commands.go:112.9,116.45 3 0 -github.com/echovault/echovault/src/modules/admin/commands.go:116.45,118.4 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:119.3,119.42 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:119.42,123.37 3 0 -github.com/echovault/echovault/src/modules/admin/commands.go:123.37,124.67 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:124.67,125.53 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:125.53,126.59 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:126.59,130.8 3 0 -github.com/echovault/echovault/src/modules/admin/commands.go:132.6,132.14 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:134.5,134.54 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:134.54,137.6 2 0 -github.com/echovault/echovault/src/modules/admin/commands.go:139.9,139.50 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:139.50,143.37 3 0 -github.com/echovault/echovault/src/modules/admin/commands.go:143.37,144.67 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:144.67,145.53 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:145.53,147.24 2 0 -github.com/echovault/echovault/src/modules/admin/commands.go:147.24,150.8 2 0 -github.com/echovault/echovault/src/modules/admin/commands.go:152.6,152.14 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:154.5,154.33 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:154.33,157.6 2 0 -github.com/echovault/echovault/src/modules/admin/commands.go:159.9,161.4 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:162.3,163.26 2 0 -github.com/echovault/echovault/src/modules/admin/commands.go:164.10,165.50 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:169.109,171.2 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:173.33,180.60 1 1 -github.com/echovault/echovault/src/modules/admin/commands.go:180.60,180.86 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:188.60,190.5 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:197.62,197.88 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:205.62,205.88 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:214.62,214.88 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:224.60,226.5 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:227.110,228.49 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:228.49,230.6 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:231.5,231.41 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:239.60,241.5 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:242.110,244.18 2 0 -github.com/echovault/echovault/src/modules/admin/commands.go:244.18,246.6 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:247.5,247.53 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:255.60,257.5 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:258.110,259.47 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:259.47,261.6 1 0 -github.com/echovault/echovault/src/modules/admin/commands.go:262.5,262.41 1 0 -github.com/echovault/echovault/src/modules/pubsub/channel.go:36.51,37.32 1 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:37.32,39.3 1 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:42.57,43.32 1 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:43.32,46.3 2 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:49.61,60.33 3 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:60.33,62.3 1 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:64.2,64.16 1 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:67.28,68.12 1 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:68.12,69.7 1 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:69.7,74.40 3 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:74.40,75.30 1 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:75.30,80.21 1 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:80.21,82.7 1 0 -github.com/echovault/echovault/src/modules/pubsub/channel.go:86.4,86.33 1 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:91.51,94.40 3 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:94.40,96.3 1 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:97.2,98.11 2 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:101.53,104.40 3 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:104.40,106.3 1 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:107.2,108.13 2 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:111.44,113.2 1 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:115.36,119.2 3 1 -github.com/echovault/echovault/src/modules/pubsub/channel.go:121.34,125.2 3 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:26.110,28.9 2 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:28.9,30.3 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:32.2,34.24 2 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:34.24,36.3 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:38.2,41.17 3 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:44.112,46.9 2 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:46.9,48.3 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:50.2,54.66 3 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:57.105,59.9 2 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:59.9,61.3 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:62.2,62.19 1 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:62.19,64.3 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:65.2,66.38 2 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:69.110,70.18 1 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:70.18,72.3 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:74.2,75.9 2 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:75.9,77.3 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:79.2,80.19 2 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:80.19,82.3 1 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:84.2,84.38 1 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:87.106,89.9 2 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:89.9,91.3 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:92.2,93.49 2 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:96.109,98.9 2 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:98.9,100.3 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:101.2,101.36 1 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:104.33,111.60 1 1 -github.com/echovault/echovault/src/modules/pubsub/commands.go:111.60,113.21 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:113.21,115.6 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:116.5,116.24 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:125.60,127.21 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:127.21,129.6 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:130.5,130.24 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:139.60,141.22 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:141.22,143.6 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:144.5,144.33 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:155.60,158.5 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:168.60,171.5 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:179.60,179.86 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:180.98,182.5 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:191.62,191.88 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:199.62,199.88 1 0 -github.com/echovault/echovault/src/modules/pubsub/commands.go:208.62,208.85 1 0 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:34.26,39.2 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:41.101,48.17 5 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:48.17,50.3 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:52.2,52.37 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:52.37,56.75 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:56.75,58.4 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:60.3,60.23 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:60.23,63.19 2 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:63.19,65.5 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:65.10,67.5 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:68.4,69.31 2 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:69.31,74.20 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:74.20,76.6 1 0 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:78.4,78.46 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:79.9,81.47 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:81.47,86.20 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:86.20,88.6 1 0 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:94.112,99.17 4 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:99.17,101.3 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:103.2,106.24 3 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:106.24,107.19 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:107.19,110.40 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:110.40,111.31 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:111.31,112.14 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:114.5,114.34 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:114.34,117.6 2 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:119.9,122.40 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:122.40,123.31 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:123.31,124.14 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:126.5,126.34 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:126.34,129.6 2 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:137.2,137.38 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:137.38,138.30 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:138.30,139.54 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:139.54,142.5 2 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:148.2,148.17 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:148.17,149.36 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:149.36,151.40 2 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:151.40,153.58 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:153.58,154.35 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:154.35,157.7 2 0 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:158.6,158.14 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:161.5,161.30 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:161.30,162.35 1 0 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:162.35,165.7 2 0 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:171.2,172.39 2 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:172.39,174.3 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:176.2,176.20 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:179.84,183.38 3 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:183.38,185.29 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:185.29,186.35 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:186.35,188.5 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:189.4,189.12 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:192.3,192.41 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:192.41,194.4 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:198.51,205.19 5 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:205.19,206.39 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:206.39,207.26 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:207.26,210.5 2 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:212.3,213.21 2 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:216.2,218.38 2 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:218.38,220.78 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:220.78,223.12 3 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:226.3,226.50 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:226.50,229.4 2 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:232.2,232.53 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:235.32,240.38 4 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:240.38,241.51 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:241.51,243.4 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:245.2,245.14 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:248.52,253.35 4 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:253.35,255.66 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:255.66,257.4 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:258.3,258.20 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:258.20,260.12 2 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:262.3,262.106 1 1 -github.com/echovault/echovault/src/modules/pubsub/pubsub.go:264.2,264.20 1 1 -github.com/echovault/echovault/src/modules/set/commands.go:27.105,29.16 2 1 +github.com/echovault/echovault/src/modules/set/commands.go:27.108,29.16 2 1 github.com/echovault/echovault/src/modules/set/commands.go:29.16,31.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:33.2,37.33 3 1 github.com/echovault/echovault/src/modules/set/commands.go:37.33,39.70 2 1 @@ -1402,7 +1259,7 @@ github.com/echovault/echovault/src/modules/set/commands.go:49.51,51.3 1 0 github.com/echovault/echovault/src/modules/set/commands.go:52.2,55.9 3 1 github.com/echovault/echovault/src/modules/set/commands.go:55.9,57.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:59.2,61.51 2 1 -github.com/echovault/echovault/src/modules/set/commands.go:64.106,66.16 2 1 +github.com/echovault/echovault/src/modules/set/commands.go:64.109,66.16 2 1 github.com/echovault/echovault/src/modules/set/commands.go:66.16,68.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:70.2,72.33 2 1 github.com/echovault/echovault/src/modules/set/commands.go:72.33,74.3 1 1 @@ -1411,7 +1268,7 @@ github.com/echovault/echovault/src/modules/set/commands.go:76.52,78.3 1 0 github.com/echovault/echovault/src/modules/set/commands.go:79.2,82.9 3 1 github.com/echovault/echovault/src/modules/set/commands.go:82.9,84.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:86.2,88.57 2 1 -github.com/echovault/echovault/src/modules/set/commands.go:91.106,93.16 2 1 +github.com/echovault/echovault/src/modules/set/commands.go:91.109,93.16 2 1 github.com/echovault/echovault/src/modules/set/commands.go:93.16,95.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:98.2,98.37 1 1 github.com/echovault/echovault/src/modules/set/commands.go:98.37,100.3 1 1 @@ -1437,7 +1294,7 @@ github.com/echovault/echovault/src/modules/set/commands.go:138.2,142.26 4 1 github.com/echovault/echovault/src/modules/set/commands.go:142.26,144.24 2 1 github.com/echovault/echovault/src/modules/set/commands.go:144.24,146.4 1 1 github.com/echovault/echovault/src/modules/set/commands.go:149.2,149.25 1 1 -github.com/echovault/echovault/src/modules/set/commands.go:152.111,154.16 2 1 +github.com/echovault/echovault/src/modules/set/commands.go:152.114,154.16 2 1 github.com/echovault/echovault/src/modules/set/commands.go:154.16,156.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:158.2,161.37 2 1 github.com/echovault/echovault/src/modules/set/commands.go:161.37,163.3 1 1 @@ -1470,7 +1327,7 @@ github.com/echovault/echovault/src/modules/set/commands.go:217.68,219.3 1 0 github.com/echovault/echovault/src/modules/set/commands.go:220.2,220.63 1 1 github.com/echovault/echovault/src/modules/set/commands.go:220.63,222.3 1 0 github.com/echovault/echovault/src/modules/set/commands.go:223.2,225.25 2 1 -github.com/echovault/echovault/src/modules/set/commands.go:228.107,230.16 2 1 +github.com/echovault/echovault/src/modules/set/commands.go:228.110,230.16 2 1 github.com/echovault/echovault/src/modules/set/commands.go:230.16,232.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:234.2,235.15 2 1 github.com/echovault/echovault/src/modules/set/commands.go:235.15,236.34 1 1 @@ -1492,7 +1349,7 @@ github.com/echovault/echovault/src/modules/set/commands.go:269.2,273.26 4 1 github.com/echovault/echovault/src/modules/set/commands.go:273.26,275.24 2 1 github.com/echovault/echovault/src/modules/set/commands.go:275.24,277.4 1 1 github.com/echovault/echovault/src/modules/set/commands.go:280.2,280.25 1 1 -github.com/echovault/echovault/src/modules/set/commands.go:283.111,285.16 2 1 +github.com/echovault/echovault/src/modules/set/commands.go:283.114,285.16 2 1 github.com/echovault/echovault/src/modules/set/commands.go:285.16,287.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:290.2,291.56 2 1 github.com/echovault/echovault/src/modules/set/commands.go:291.56,293.3 1 1 @@ -1521,7 +1378,7 @@ github.com/echovault/echovault/src/modules/set/commands.go:338.3,338.27 1 1 github.com/echovault/echovault/src/modules/set/commands.go:341.2,341.20 1 1 github.com/echovault/echovault/src/modules/set/commands.go:341.20,343.3 1 0 github.com/echovault/echovault/src/modules/set/commands.go:345.2,347.69 2 1 -github.com/echovault/echovault/src/modules/set/commands.go:350.112,352.16 2 1 +github.com/echovault/echovault/src/modules/set/commands.go:350.115,352.16 2 1 github.com/echovault/echovault/src/modules/set/commands.go:352.16,354.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:356.2,357.15 2 1 github.com/echovault/echovault/src/modules/set/commands.go:357.15,358.34 1 1 @@ -1545,7 +1402,7 @@ github.com/echovault/echovault/src/modules/set/commands.go:395.69,397.4 1 0 github.com/echovault/echovault/src/modules/set/commands.go:400.2,400.68 1 1 github.com/echovault/echovault/src/modules/set/commands.go:400.68,402.3 1 0 github.com/echovault/echovault/src/modules/set/commands.go:403.2,405.69 2 1 -github.com/echovault/echovault/src/modules/set/commands.go:408.110,410.16 2 1 +github.com/echovault/echovault/src/modules/set/commands.go:408.113,410.16 2 1 github.com/echovault/echovault/src/modules/set/commands.go:410.16,412.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:414.2,416.33 2 1 github.com/echovault/echovault/src/modules/set/commands.go:416.33,418.3 1 0 @@ -1556,7 +1413,7 @@ github.com/echovault/echovault/src/modules/set/commands.go:426.9,428.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:430.2,430.27 1 1 github.com/echovault/echovault/src/modules/set/commands.go:430.27,432.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:434.2,434.30 1 1 -github.com/echovault/echovault/src/modules/set/commands.go:437.109,439.16 2 1 +github.com/echovault/echovault/src/modules/set/commands.go:437.112,439.16 2 1 github.com/echovault/echovault/src/modules/set/commands.go:439.16,441.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:443.2,445.33 2 1 github.com/echovault/echovault/src/modules/set/commands.go:445.33,447.3 1 1 @@ -1568,7 +1425,7 @@ github.com/echovault/echovault/src/modules/set/commands.go:459.2,462.26 3 1 github.com/echovault/echovault/src/modules/set/commands.go:462.26,464.24 2 1 github.com/echovault/echovault/src/modules/set/commands.go:464.24,466.4 1 1 github.com/echovault/echovault/src/modules/set/commands.go:469.2,469.25 1 1 -github.com/echovault/echovault/src/modules/set/commands.go:472.111,474.16 2 1 +github.com/echovault/echovault/src/modules/set/commands.go:472.114,474.16 2 1 github.com/echovault/echovault/src/modules/set/commands.go:474.16,476.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:478.2,481.33 3 1 github.com/echovault/echovault/src/modules/set/commands.go:481.33,483.29 2 1 @@ -1584,7 +1441,7 @@ github.com/echovault/echovault/src/modules/set/commands.go:503.36,504.31 1 1 github.com/echovault/echovault/src/modules/set/commands.go:504.31,506.4 1 1 github.com/echovault/echovault/src/modules/set/commands.go:506.9,508.4 1 1 github.com/echovault/echovault/src/modules/set/commands.go:510.2,512.25 2 1 -github.com/echovault/echovault/src/modules/set/commands.go:515.106,517.16 2 1 +github.com/echovault/echovault/src/modules/set/commands.go:515.109,517.16 2 1 github.com/echovault/echovault/src/modules/set/commands.go:517.16,519.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:521.2,525.36 4 1 github.com/echovault/echovault/src/modules/set/commands.go:525.36,527.3 1 0 @@ -1603,7 +1460,7 @@ github.com/echovault/echovault/src/modules/set/commands.go:556.3,558.10 3 1 github.com/echovault/echovault/src/modules/set/commands.go:558.10,560.4 1 1 github.com/echovault/echovault/src/modules/set/commands.go:561.3,561.22 1 1 github.com/echovault/echovault/src/modules/set/commands.go:564.2,566.49 2 1 -github.com/echovault/echovault/src/modules/set/commands.go:569.105,571.16 2 1 +github.com/echovault/echovault/src/modules/set/commands.go:569.108,571.16 2 1 github.com/echovault/echovault/src/modules/set/commands.go:571.16,573.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:575.2,578.19 3 1 github.com/echovault/echovault/src/modules/set/commands.go:578.19,580.10 2 1 @@ -1619,7 +1476,7 @@ github.com/echovault/echovault/src/modules/set/commands.go:600.2,603.28 3 1 github.com/echovault/echovault/src/modules/set/commands.go:603.28,605.26 2 1 github.com/echovault/echovault/src/modules/set/commands.go:605.26,607.4 1 1 github.com/echovault/echovault/src/modules/set/commands.go:610.2,610.25 1 1 -github.com/echovault/echovault/src/modules/set/commands.go:613.112,615.16 2 1 +github.com/echovault/echovault/src/modules/set/commands.go:613.115,615.16 2 1 github.com/echovault/echovault/src/modules/set/commands.go:615.16,617.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:619.2,622.19 3 1 github.com/echovault/echovault/src/modules/set/commands.go:622.19,624.10 2 1 @@ -1635,7 +1492,7 @@ github.com/echovault/echovault/src/modules/set/commands.go:644.2,647.28 3 1 github.com/echovault/echovault/src/modules/set/commands.go:647.28,649.26 2 1 github.com/echovault/echovault/src/modules/set/commands.go:649.26,651.4 1 1 github.com/echovault/echovault/src/modules/set/commands.go:654.2,654.25 1 1 -github.com/echovault/echovault/src/modules/set/commands.go:657.105,659.16 2 1 +github.com/echovault/echovault/src/modules/set/commands.go:657.108,659.16 2 1 github.com/echovault/echovault/src/modules/set/commands.go:659.16,661.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:663.2,666.33 3 1 github.com/echovault/echovault/src/modules/set/commands.go:666.33,668.3 1 0 @@ -1644,7 +1501,7 @@ github.com/echovault/echovault/src/modules/set/commands.go:670.51,672.3 1 0 github.com/echovault/echovault/src/modules/set/commands.go:673.2,676.9 3 1 github.com/echovault/echovault/src/modules/set/commands.go:676.9,678.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:680.2,682.51 2 1 -github.com/echovault/echovault/src/modules/set/commands.go:685.107,687.16 2 1 +github.com/echovault/echovault/src/modules/set/commands.go:685.110,687.16 2 1 github.com/echovault/echovault/src/modules/set/commands.go:687.16,689.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:691.2,692.15 2 1 github.com/echovault/echovault/src/modules/set/commands.go:692.15,693.34 1 1 @@ -1666,7 +1523,7 @@ github.com/echovault/echovault/src/modules/set/commands.go:723.2,726.35 3 1 github.com/echovault/echovault/src/modules/set/commands.go:726.35,728.33 2 1 github.com/echovault/echovault/src/modules/set/commands.go:728.33,730.4 1 1 github.com/echovault/echovault/src/modules/set/commands.go:733.2,733.25 1 1 -github.com/echovault/echovault/src/modules/set/commands.go:736.112,738.16 2 1 +github.com/echovault/echovault/src/modules/set/commands.go:736.115,738.16 2 1 github.com/echovault/echovault/src/modules/set/commands.go:738.16,740.3 1 1 github.com/echovault/echovault/src/modules/set/commands.go:742.2,743.15 2 1 github.com/echovault/echovault/src/modules/set/commands.go:743.15,744.34 1 1 @@ -1799,7 +1656,150 @@ github.com/echovault/echovault/src/modules/set/set.go:184.31,185.19 1 1 github.com/echovault/echovault/src/modules/set/set.go:186.9,187.17 1 1 github.com/echovault/echovault/src/modules/set/set.go:188.9,191.15 3 1 github.com/echovault/echovault/src/modules/set/set.go:192.10,195.28 3 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:30.105,32.16 2 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:36.51,37.32 1 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:37.32,39.3 1 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:42.57,43.32 1 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:43.32,46.3 2 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:49.61,60.33 3 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:60.33,62.3 1 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:64.2,64.16 1 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:67.28,68.12 1 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:68.12,69.7 1 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:69.7,74.40 3 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:74.40,75.30 1 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:75.30,80.21 1 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:80.21,82.7 1 0 +github.com/echovault/echovault/src/modules/pubsub/channel.go:86.4,86.33 1 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:91.51,94.40 3 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:94.40,96.3 1 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:97.2,98.11 2 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:101.53,104.40 3 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:104.40,106.3 1 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:107.2,108.13 2 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:111.44,113.2 1 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:115.36,119.2 3 1 +github.com/echovault/echovault/src/modules/pubsub/channel.go:121.34,125.2 3 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:26.113,28.9 2 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:28.9,30.3 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:32.2,34.24 2 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:34.24,36.3 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:38.2,41.17 3 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:44.115,46.9 2 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:46.9,48.3 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:50.2,54.66 3 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:57.108,59.9 2 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:59.9,61.3 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:62.2,62.19 1 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:62.19,64.3 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:65.2,66.38 2 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:69.113,70.18 1 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:70.18,72.3 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:74.2,75.9 2 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:75.9,77.3 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:79.2,80.19 2 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:80.19,82.3 1 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:84.2,84.38 1 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:87.109,89.9 2 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:89.9,91.3 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:92.2,93.49 2 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:96.112,98.9 2 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:98.9,100.3 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:101.2,101.36 1 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:104.33,111.60 1 1 +github.com/echovault/echovault/src/modules/pubsub/commands.go:111.60,113.21 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:113.21,115.6 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:116.5,116.24 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:125.60,127.21 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:127.21,129.6 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:130.5,130.24 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:139.60,141.22 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:141.22,143.6 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:144.5,144.33 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:155.60,158.5 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:168.60,171.5 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:179.60,179.86 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:180.101,182.5 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:191.62,191.88 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:199.62,199.88 1 0 +github.com/echovault/echovault/src/modules/pubsub/commands.go:208.62,208.85 1 0 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:34.26,39.2 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:41.101,48.17 5 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:48.17,50.3 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:52.2,52.37 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:52.37,56.75 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:56.75,58.4 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:60.3,60.23 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:60.23,63.19 2 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:63.19,65.5 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:65.10,67.5 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:68.4,69.31 2 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:69.31,74.20 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:74.20,76.6 1 0 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:78.4,78.46 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:79.9,81.47 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:81.47,86.20 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:86.20,88.6 1 0 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:94.112,99.17 4 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:99.17,101.3 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:103.2,106.24 3 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:106.24,107.19 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:107.19,110.40 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:110.40,111.31 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:111.31,112.14 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:114.5,114.34 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:114.34,117.6 2 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:119.9,122.40 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:122.40,123.31 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:123.31,124.14 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:126.5,126.34 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:126.34,129.6 2 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:137.2,137.38 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:137.38,138.30 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:138.30,139.54 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:139.54,142.5 2 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:148.2,148.17 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:148.17,149.36 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:149.36,151.40 2 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:151.40,153.58 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:153.58,154.35 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:154.35,157.7 2 0 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:158.6,158.14 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:161.5,161.30 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:161.30,162.35 1 0 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:162.35,165.7 2 0 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:171.2,172.39 2 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:172.39,174.3 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:176.2,176.20 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:179.84,183.38 3 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:183.38,185.29 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:185.29,186.35 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:186.35,188.5 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:189.4,189.12 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:192.3,192.41 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:192.41,194.4 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:198.51,205.19 5 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:205.19,206.39 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:206.39,207.26 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:207.26,210.5 2 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:212.3,213.21 2 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:216.2,218.38 2 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:218.38,220.78 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:220.78,223.12 3 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:226.3,226.50 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:226.50,229.4 2 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:232.2,232.53 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:235.32,240.38 4 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:240.38,241.51 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:241.51,243.4 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:245.2,245.14 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:248.52,253.35 4 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:253.35,255.66 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:255.66,257.4 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:258.3,258.20 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:258.20,260.12 2 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:262.3,262.106 1 1 +github.com/echovault/echovault/src/modules/pubsub/pubsub.go:264.2,264.20 1 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:30.108,32.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:32.16,34.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:36.2,45.32 7 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:45.32,46.29 1 1 @@ -1854,7 +1854,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:168.60,170.3 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:171.2,174.54 3 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:174.54,176.3 1 0 github.com/echovault/echovault/src/modules/sorted_set/commands.go:178.2,178.63 1 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:181.106,183.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:181.109,183.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:183.16,185.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:186.2,188.33 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:188.33,190.3 1 1 @@ -1863,7 +1863,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:192.52,194.3 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:195.2,198.9 3 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:198.9,200.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:202.2,202.63 1 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:205.107,207.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:205.110,207.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:207.16,209.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:211.2,214.40 3 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:215.10,216.60 1 0 @@ -1889,7 +1889,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:263.2,264.33 2 github.com/echovault/echovault/src/modules/sorted_set/commands.go:264.33,265.47 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:265.47,267.4 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:270.2,270.58 1 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:273.110,275.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:273.113,275.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:275.16,277.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:279.2,283.33 4 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:283.33,285.3 1 1 @@ -1904,7 +1904,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:306.2,308.28 2 github.com/echovault/echovault/src/modules/sorted_set/commands.go:308.28,310.72 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:310.72,312.4 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:315.2,315.51 1 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:318.106,320.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:318.109,320.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:320.16,322.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:324.2,324.63 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:324.63,326.3 1 1 @@ -1933,7 +1933,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:378.34,379.20 github.com/echovault/echovault/src/modules/sorted_set/commands.go:379.20,381.4 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:381.9,383.4 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:386.2,388.25 2 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:391.111,393.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:391.114,393.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:393.16,395.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:397.2,400.15 3 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:400.15,401.34 1 1 @@ -1960,7 +1960,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:444.69,446.4 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:448.2,450.63 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:450.63,452.3 1 0 github.com/echovault/echovault/src/modules/sorted_set/commands.go:454.2,454.64 1 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:457.108,459.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:457.111,459.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:459.16,461.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:463.2,467.40 4 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:468.10,469.55 1 0 @@ -1984,7 +1984,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:504.9,506.3 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:507.2,513.23 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:513.23,515.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:516.2,517.74 1 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:520.107,522.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:520.110,522.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:522.16,524.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:526.2,527.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:527.16,529.3 1 1 @@ -2006,7 +2006,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:566.40,567.18 github.com/echovault/echovault/src/modules/sorted_set/commands.go:567.18,569.5 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:569.10,571.5 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:575.2,577.25 2 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:580.112,582.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:580.115,582.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:582.16,584.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:586.2,589.51 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:589.51,591.3 1 1 @@ -2033,7 +2033,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:634.69,636.4 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:638.2,640.68 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:640.68,642.3 1 0 github.com/echovault/echovault/src/modules/sorted_set/commands.go:644.2,644.69 1 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:647.106,649.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:647.109,649.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:649.16,651.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:653.2,658.56 4 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:658.56,660.3 1 1 @@ -2066,7 +2066,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:708.4,712.38 3 github.com/echovault/echovault/src/modules/sorted_set/commands.go:712.38,714.5 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:716.4,718.27 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:722.2,722.30 1 0 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:725.105,727.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:725.108,727.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:727.16,729.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:731.2,735.42 4 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:735.42,737.3 1 1 @@ -2085,7 +2085,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:762.16,764.3 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:766.2,767.36 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:767.36,769.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:771.2,773.25 2 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:776.108,778.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:776.111,778.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:778.16,780.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:782.2,784.33 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:784.33,786.3 1 1 @@ -2098,7 +2098,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:804.36,806.21 github.com/echovault/echovault/src/modules/sorted_set/commands.go:806.21,808.4 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:808.9,810.4 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:813.2,815.25 2 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:818.112,820.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:818.115,820.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:820.16,822.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:824.2,827.19 3 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:827.19,829.17 2 1 @@ -2118,7 +2118,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:860.28,861.17 github.com/echovault/echovault/src/modules/sorted_set/commands.go:861.17,863.4 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:863.9,865.4 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:868.2,870.25 2 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:873.106,875.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:873.109,875.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:875.16,877.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:879.2,883.62 4 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:883.62,885.3 1 1 @@ -2138,7 +2138,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:910.40,911.18 github.com/echovault/echovault/src/modules/sorted_set/commands.go:911.18,914.5 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:914.10,916.5 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:920.2,920.31 1 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:923.105,925.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:923.108,925.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:925.16,927.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:929.2,931.33 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:931.33,933.3 1 1 @@ -2150,7 +2150,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:945.2,946.28 2 github.com/echovault/echovault/src/modules/sorted_set/commands.go:946.28,947.27 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:947.27,949.4 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:952.2,952.58 1 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:955.107,957.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:955.110,957.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:957.16,959.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:961.2,963.33 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:963.33,965.3 1 1 @@ -2161,7 +2161,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:971.9,973.3 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:974.2,975.20 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:975.20,977.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:979.2,981.69 2 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:984.117,986.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:984.120,986.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:986.16,988.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:990.2,995.16 4 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:995.16,997.3 1 0 @@ -2177,7 +2177,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:1018.2,1018.33 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1018.33,1019.61 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1019.61,1022.4 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1025.2,1025.58 1 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:1028.116,1030.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:1028.119,1030.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1030.16,1032.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1034.2,1037.16 3 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1037.16,1039.3 1 0 @@ -2203,7 +2203,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:1079.34,1082.4 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1083.8,1084.34 1 0 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1084.34,1087.4 2 0 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1090.2,1090.58 1 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:1093.115,1095.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:1093.118,1095.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1095.16,1097.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1099.2,1103.33 4 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1103.33,1105.3 1 1 @@ -2218,7 +2218,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:1126.2,1129.28 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1129.28,1131.72 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1131.72,1134.4 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1137.2,1137.58 1 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:1140.107,1142.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:1140.110,1142.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1142.16,1144.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1146.2,1155.65 9 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1155.65,1157.3 1 1 @@ -2280,7 +2280,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:1267.34,1268.1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1268.17,1270.4 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1270.9,1272.4 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1275.2,1277.25 2 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:1280.112,1282.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:1280.115,1282.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1282.16,1284.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1286.2,1296.62 10 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1296.62,1298.3 1 1 @@ -2343,7 +2343,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:1409.69,1411.4 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1413.2,1415.71 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1415.71,1417.3 1 0 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1419.2,1419.72 1 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:1422.107,1423.46 1 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:1422.110,1423.46 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1423.46,1425.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1427.2,1428.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1428.16,1430.3 1 1 @@ -2363,7 +2363,7 @@ github.com/echovault/echovault/src/modules/sorted_set/commands.go:1463.35,1464.1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1464.17,1466.4 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1466.9,1468.4 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1471.2,1473.25 2 1 -github.com/echovault/echovault/src/modules/sorted_set/commands.go:1476.112,1478.16 2 1 +github.com/echovault/echovault/src/modules/sorted_set/commands.go:1476.115,1478.16 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1478.16,1480.3 1 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1482.2,1485.51 2 1 github.com/echovault/echovault/src/modules/sorted_set/commands.go:1485.51,1487.3 1 1 @@ -2732,7 +2732,7 @@ github.com/echovault/echovault/src/modules/sorted_set/utils.go:190.2,191.29 2 1 github.com/echovault/echovault/src/modules/sorted_set/utils.go:191.29,193.13 2 1 github.com/echovault/echovault/src/modules/sorted_set/utils.go:193.13,194.9 1 1 github.com/echovault/echovault/src/modules/sorted_set/utils.go:198.2,198.10 1 1 -github.com/echovault/echovault/src/modules/string/commands.go:25.109,27.16 2 1 +github.com/echovault/echovault/src/modules/string/commands.go:25.112,27.16 2 1 github.com/echovault/echovault/src/modules/string/commands.go:27.16,29.3 1 1 github.com/echovault/echovault/src/modules/string/commands.go:31.2,34.9 3 1 github.com/echovault/echovault/src/modules/string/commands.go:34.9,36.3 1 1 @@ -2761,7 +2761,7 @@ github.com/echovault/echovault/src/modules/string/commands.go:89.3,90.8 2 1 github.com/echovault/echovault/src/modules/string/commands.go:93.2,93.67 1 1 github.com/echovault/echovault/src/modules/string/commands.go:93.67,95.3 1 0 github.com/echovault/echovault/src/modules/string/commands.go:97.2,97.59 1 1 -github.com/echovault/echovault/src/modules/string/commands.go:100.107,102.16 2 1 +github.com/echovault/echovault/src/modules/string/commands.go:100.110,102.16 2 1 github.com/echovault/echovault/src/modules/string/commands.go:102.16,104.3 1 1 github.com/echovault/echovault/src/modules/string/commands.go:106.2,108.33 2 1 github.com/echovault/echovault/src/modules/string/commands.go:108.33,110.3 1 1 @@ -2770,7 +2770,7 @@ github.com/echovault/echovault/src/modules/string/commands.go:112.53,114.3 1 0 github.com/echovault/echovault/src/modules/string/commands.go:115.2,119.9 3 1 github.com/echovault/echovault/src/modules/string/commands.go:119.9,121.3 1 0 github.com/echovault/echovault/src/modules/string/commands.go:123.2,123.56 1 1 -github.com/echovault/echovault/src/modules/string/commands.go:126.107,128.16 2 1 +github.com/echovault/echovault/src/modules/string/commands.go:126.110,128.16 2 1 github.com/echovault/echovault/src/modules/string/commands.go:128.16,130.3 1 1 github.com/echovault/echovault/src/modules/string/commands.go:132.2,138.24 5 1 github.com/echovault/echovault/src/modules/string/commands.go:138.24,140.3 1 1 diff --git a/src/main.go b/src/main.go index 1bf63bb..b409246 100644 --- a/src/main.go +++ b/src/main.go @@ -70,7 +70,7 @@ func main() { cancelCh := make(chan os.Signal, 1) signal.Notify(cancelCh, syscall.SIGINT, syscall.SIGTERM, os.Interrupt) - s := server.NewServer(server.Opts{ + s := server.NewEchoVault(server.Opts{ Config: config, ACL: acl.NewACL(config), PubSub: pubsub.NewPubSub(), diff --git a/src/modules/acl/acl.go b/src/modules/acl/acl.go index 740e97c..46ece9e 100644 --- a/src/modules/acl/acl.go +++ b/src/modules/acl/acl.go @@ -43,7 +43,7 @@ type ACL struct { Users []*User // List of ACL user profiles UsersMutex sync.RWMutex // RWMutex for concurrency control when accessing ACL profile list Connections map[*net.Conn]Connection // Connections to the server that are currently registered with the ACL module - Config utils.Config // Server configuration that contains the relevant ACL config options + Config utils.Config // EchoVault configuration that contains the relevant ACL config options GlobPatterns map[string]glob.Glob } diff --git a/src/modules/acl/commands.go b/src/modules/acl/commands.go index ce8013f..6e96f12 100644 --- a/src/modules/acl/commands.go +++ b/src/modules/acl/commands.go @@ -29,7 +29,7 @@ import ( "strings" ) -func handleAuth(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleAuth(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { if len(cmd) < 2 || len(cmd) > 3 { return nil, errors.New(utils.WrongArgsResponse) } @@ -43,7 +43,7 @@ func handleAuth(ctx context.Context, cmd []string, server utils.Server, conn *ne return []byte(utils.OkResponse), nil } -func handleGetUser(_ context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleGetUser(_ context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { if len(cmd) != 3 { return nil, errors.New(utils.WrongArgsResponse) } @@ -160,7 +160,7 @@ func handleGetUser(_ context.Context, cmd []string, server utils.Server, _ *net. return []byte(res), nil } -func handleCat(_ context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleCat(_ context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { if len(cmd) > 3 { return nil, errors.New(utils.WrongArgsResponse) } @@ -220,7 +220,7 @@ func handleCat(_ context.Context, cmd []string, server utils.Server, _ *net.Conn return nil, fmt.Errorf("category %s not found", strings.ToUpper(cmd[2])) } -func handleUsers(_ context.Context, _ []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleUsers(_ context.Context, _ []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { acl, ok := server.GetACL().(*ACL) if !ok { return nil, errors.New("could not load ACL") @@ -233,7 +233,7 @@ func handleUsers(_ context.Context, _ []string, server utils.Server, _ *net.Conn return []byte(res), nil } -func handleSetUser(_ context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleSetUser(_ context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { acl, ok := server.GetACL().(*ACL) if !ok { return nil, errors.New("could not load ACL") @@ -244,7 +244,7 @@ func handleSetUser(_ context.Context, cmd []string, server utils.Server, _ *net. return []byte(utils.OkResponse), nil } -func handleDelUser(ctx context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleDelUser(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { if len(cmd) < 3 { return nil, errors.New(utils.WrongArgsResponse) } @@ -258,7 +258,7 @@ func handleDelUser(ctx context.Context, cmd []string, server utils.Server, _ *ne return []byte(utils.OkResponse), nil } -func handleWhoAmI(_ context.Context, _ []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleWhoAmI(_ context.Context, _ []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { acl, ok := server.GetACL().(*ACL) if !ok { return nil, errors.New("could not load ACL") @@ -267,7 +267,7 @@ func handleWhoAmI(_ context.Context, _ []string, server utils.Server, conn *net. return []byte(fmt.Sprintf("+%s\r\n", connectionInfo.User.Username)), nil } -func handleList(_ context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleList(_ context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { if len(cmd) > 2 { return nil, errors.New(utils.WrongArgsResponse) } @@ -363,7 +363,7 @@ func handleList(_ context.Context, cmd []string, server utils.Server, _ *net.Con return []byte(res), nil } -func handleLoad(_ context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleLoad(_ context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { if len(cmd) != 3 { return nil, errors.New(utils.WrongArgsResponse) } @@ -430,7 +430,7 @@ func handleLoad(_ context.Context, cmd []string, server utils.Server, _ *net.Con return []byte(utils.OkResponse), nil } -func handleSave(_ context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleSave(_ context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { if len(cmd) > 2 { return nil, errors.New(utils.WrongArgsResponse) } diff --git a/src/modules/acl/commands_test.go b/src/modules/acl/commands_test.go index bae6234..c1faad4 100644 --- a/src/modules/acl/commands_test.go +++ b/src/modules/acl/commands_test.go @@ -29,7 +29,7 @@ import ( var bindAddr string var port uint16 -var mockServer *server.Server +var mockServer *server.EchoVault var acl *ACL @@ -44,7 +44,7 @@ func init() { }() } -func setUpServer(bindAddr string, port uint16, requirePass bool, aclConfig string) *server.Server { +func setUpServer(bindAddr string, port uint16, requirePass bool, aclConfig string) *server.EchoVault { config := utils.Config{ BindAddr: bindAddr, Port: port, @@ -58,7 +58,7 @@ func setUpServer(bindAddr string, port uint16, requirePass bool, aclConfig strin acl = NewACL(config) acl.Users = append(acl.Users, generateInitialTestUsers()...) - return server.NewServer(server.Opts{ + return server.NewEchoVault(server.Opts{ Config: config, ACL: acl, Commands: Commands(), diff --git a/src/modules/admin/commands.go b/src/modules/admin/commands.go index 9376018..e4c46f8 100644 --- a/src/modules/admin/commands.go +++ b/src/modules/admin/commands.go @@ -25,7 +25,7 @@ import ( "strings" ) -func handleGetAllCommands(ctx context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleGetAllCommands(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { commands := server.GetAllCommands() res := "" @@ -70,7 +70,7 @@ func handleGetAllCommands(ctx context.Context, cmd []string, server utils.Server return []byte(res), nil } -func handleCommandCount(_ context.Context, _ []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleCommandCount(_ context.Context, _ []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { var count int commands := server.GetAllCommands() @@ -87,7 +87,7 @@ func handleCommandCount(_ context.Context, _ []string, server utils.Server, _ *n return []byte(fmt.Sprintf(":%d\r\n", count)), nil } -func handleCommandList(ctx context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleCommandList(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { switch len(cmd) { case 2: // Command is COMMAND LIST @@ -166,7 +166,7 @@ func handleCommandList(ctx context.Context, cmd []string, server utils.Server, _ } } -func handleCommandDocs(ctx context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleCommandDocs(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { return []byte("*0\r\n"), nil } @@ -224,7 +224,7 @@ Allows for filtering by ACL category or glob pattern.`, KeyExtractionFunc: func(cmd []string) ([]string, error) { return []string{}, nil }, - HandlerFunc: func(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { + HandlerFunc: func(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { if err := server.TakeSnapshot(); err != nil { return nil, err } @@ -239,7 +239,7 @@ Allows for filtering by ACL category or glob pattern.`, KeyExtractionFunc: func(cmd []string) ([]string, error) { return []string{}, nil }, - HandlerFunc: func(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { + HandlerFunc: func(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { msec := server.GetLatestSnapshot() if msec == 0 { return nil, errors.New("no snapshot") @@ -255,7 +255,7 @@ Allows for filtering by ACL category or glob pattern.`, KeyExtractionFunc: func(cmd []string) ([]string, error) { return []string{}, nil }, - HandlerFunc: func(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { + HandlerFunc: func(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { if err := server.RewriteAOF(); err != nil { return nil, err } diff --git a/src/modules/admin/commands_test.go b/src/modules/admin/commands_test.go index 142b3af..af24c1a 100644 --- a/src/modules/admin/commands_test.go +++ b/src/modules/admin/commands_test.go @@ -19,12 +19,17 @@ import ( "context" "fmt" "github.com/echovault/echovault/src/server" + "github.com/echovault/echovault/src/utils" "github.com/tidwall/resp" "testing" ) func Test_CommandsHandler(t *testing.T) { - mockServer := server.NewServer(server.Opts{ + mockServer := server.NewEchoVault(server.Opts{ + Config: utils.Config{ + DataDir: "", + EvictionPolicy: utils.NoEviction, + }, Commands: Commands(), }) diff --git a/src/modules/connection/commands.go b/src/modules/connection/commands.go index e3d2335..356237f 100644 --- a/src/modules/connection/commands.go +++ b/src/modules/connection/commands.go @@ -22,7 +22,7 @@ import ( "net" ) -func handlePing(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handlePing(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { switch len(cmd) { default: return nil, errors.New(utils.WrongArgsResponse) diff --git a/src/modules/connection/commands_test.go b/src/modules/connection/commands_test.go index 229e1f9..47f6a63 100644 --- a/src/modules/connection/commands_test.go +++ b/src/modules/connection/commands_test.go @@ -24,10 +24,10 @@ import ( "testing" ) -var mockServer *server.Server +var mockServer *server.EchoVault func init() { - mockServer = server.NewServer(server.Opts{ + mockServer = server.NewEchoVault(server.Opts{ Config: utils.Config{ DataDir: "", EvictionPolicy: utils.NoEviction, diff --git a/src/modules/generic/commands.go b/src/modules/generic/commands.go index 48b54b1..e5c928f 100644 --- a/src/modules/generic/commands.go +++ b/src/modules/generic/commands.go @@ -47,7 +47,7 @@ type KeyObject struct { locked bool } -func handleSet(ctx context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleSet(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { keys, err := setKeyFunc(cmd) if err != nil { return nil, err @@ -111,7 +111,7 @@ func handleSet(ctx context.Context, cmd []string, server utils.Server, _ *net.Co return res, nil } -func handleMSet(ctx context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleMSet(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { if _, err := msetKeyFunc(cmd); err != nil { return nil, err } @@ -167,7 +167,7 @@ func handleMSet(ctx context.Context, cmd []string, server utils.Server, _ *net.C return []byte(utils.OkResponse), nil } -func handleGet(ctx context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleGet(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { keys, err := getKeyFunc(cmd) if err != nil { return nil, err @@ -189,7 +189,7 @@ func handleGet(ctx context.Context, cmd []string, server utils.Server, _ *net.Co return []byte(fmt.Sprintf("+%v\r\n", value)), nil } -func handleMGet(ctx context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleMGet(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { keys, err := mgetKeyFunc(cmd) if err != nil { return nil, err @@ -239,7 +239,7 @@ func handleMGet(ctx context.Context, cmd []string, server utils.Server, _ *net.C return bytes, nil } -func handleDel(ctx context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleDel(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { keys, err := delKeyFunc(cmd) if err != nil { return nil, err @@ -256,7 +256,7 @@ func handleDel(ctx context.Context, cmd []string, server utils.Server, _ *net.Co return []byte(fmt.Sprintf(":%d\r\n", count)), nil } -func handlePersist(ctx context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handlePersist(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { keys, err := persistKeyFunc(cmd) if err != nil { return nil, err @@ -283,7 +283,7 @@ func handlePersist(ctx context.Context, cmd []string, server utils.Server, _ *ne return []byte(":1\r\n"), nil } -func handleExpireTime(ctx context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleExpireTime(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { keys, err := expireTimeKeyFunc(cmd) if err != nil { return nil, err @@ -314,7 +314,7 @@ func handleExpireTime(ctx context.Context, cmd []string, server utils.Server, _ return []byte(fmt.Sprintf(":%d\r\n", t)), nil } -func handleTTL(ctx context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleTTL(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { keys, err := ttlKeyFunc(cmd) if err != nil { return nil, err @@ -349,7 +349,7 @@ func handleTTL(ctx context.Context, cmd []string, server utils.Server, _ *net.Co return []byte(fmt.Sprintf(":%d\r\n", t)), nil } -func handleExpire(ctx context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleExpire(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { keys, err := expireKeyFunc(cmd) if err != nil { return nil, err @@ -417,7 +417,7 @@ func handleExpire(ctx context.Context, cmd []string, server utils.Server, _ *net return []byte(":1\r\n"), nil } -func handleExpireAt(ctx context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleExpireAt(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { keys, err := expireKeyFunc(cmd) if err != nil { return nil, err diff --git a/src/modules/generic/commands_test.go b/src/modules/generic/commands_test.go index cfe523c..e544915 100644 --- a/src/modules/generic/commands_test.go +++ b/src/modules/generic/commands_test.go @@ -26,10 +26,10 @@ import ( "time" ) -var mockServer *server.Server +var mockServer *server.EchoVault func init() { - mockServer = server.NewServer(server.Opts{ + mockServer = server.NewEchoVault(server.Opts{ Config: utils.Config{ DataDir: "", EvictionPolicy: utils.NoEviction, diff --git a/src/modules/hash/commands.go b/src/modules/hash/commands.go index a362487..b77305d 100644 --- a/src/modules/hash/commands.go +++ b/src/modules/hash/commands.go @@ -26,7 +26,7 @@ import ( "strings" ) -func handleHSET(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleHSET(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { keys, err := hsetKeyFunc(cmd) if err != nil { return nil, err @@ -84,7 +84,7 @@ func handleHSET(ctx context.Context, cmd []string, server utils.Server, conn *ne return []byte(fmt.Sprintf(":%d\r\n", count)), nil } -func handleHGET(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleHGET(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := hgetKeyFunc(cmd) if err != nil { return nil, err @@ -135,7 +135,7 @@ func handleHGET(ctx context.Context, cmd []string, server utils.Server, conn *ne return []byte(res), nil } -func handleHSTRLEN(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleHSTRLEN(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := hstrlenKeyFunc(cmd) if err != nil { return nil, err @@ -186,7 +186,7 @@ func handleHSTRLEN(ctx context.Context, cmd []string, server utils.Server, conn return []byte(res), nil } -func handleHVALS(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleHVALS(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := hvalsKeyFunc(cmd) if err != nil { return nil, err @@ -227,7 +227,7 @@ func handleHVALS(ctx context.Context, cmd []string, server utils.Server, conn *n return []byte(res), nil } -func handleHRANDFIELD(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleHRANDFIELD(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := hrandfieldKeyFunc(cmd) if err != nil { return nil, err @@ -343,7 +343,7 @@ func handleHRANDFIELD(ctx context.Context, cmd []string, server utils.Server, co return []byte(res), nil } -func handleHLEN(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleHLEN(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := hlenKeyFunc(cmd) if err != nil { return nil, err @@ -368,7 +368,7 @@ func handleHLEN(ctx context.Context, cmd []string, server utils.Server, conn *ne return []byte(fmt.Sprintf(":%d\r\n", len(hash))), nil } -func handleHKEYS(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleHKEYS(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := hkeysKeyFunc(cmd) if err != nil { return nil, err @@ -398,7 +398,7 @@ func handleHKEYS(ctx context.Context, cmd []string, server utils.Server, conn *n return []byte(res), nil } -func handleHINCRBY(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleHINCRBY(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := hincrbyKeyFunc(cmd) if err != nil { return nil, err @@ -490,7 +490,7 @@ func handleHINCRBY(ctx context.Context, cmd []string, server utils.Server, conn return []byte(fmt.Sprintf(":%d\r\n", i)), nil } -func handleHGETALL(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleHGETALL(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := hgetallKeyFunc(cmd) if err != nil { return nil, err @@ -530,7 +530,7 @@ func handleHGETALL(ctx context.Context, cmd []string, server utils.Server, conn return []byte(res), nil } -func handleHEXISTS(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleHEXISTS(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := hexistsKeyFunc(cmd) if err != nil { return nil, err @@ -560,7 +560,7 @@ func handleHEXISTS(ctx context.Context, cmd []string, server utils.Server, conn return []byte(":0\r\n"), nil } -func handleHDEL(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleHDEL(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := hdelKeyFunc(cmd) if err != nil { return nil, err diff --git a/src/modules/hash/commands_test.go b/src/modules/hash/commands_test.go index a80a9d3..c2a7e2f 100644 --- a/src/modules/hash/commands_test.go +++ b/src/modules/hash/commands_test.go @@ -26,10 +26,10 @@ import ( "testing" ) -var mockServer *server.Server +var mockServer *server.EchoVault func init() { - mockServer = server.NewServer(server.Opts{ + mockServer = server.NewEchoVault(server.Opts{ Config: utils.Config{ DataDir: "", EvictionPolicy: utils.NoEviction, diff --git a/src/modules/list/commands.go b/src/modules/list/commands.go index 901e388..37adfd9 100644 --- a/src/modules/list/commands.go +++ b/src/modules/list/commands.go @@ -25,7 +25,7 @@ import ( "strings" ) -func handleLLen(ctx context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handleLLen(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { keys, err := llenKeyFunc(cmd) if err != nil { return nil, err @@ -50,7 +50,7 @@ func handleLLen(ctx context.Context, cmd []string, server utils.Server, _ *net.C return nil, errors.New("LLEN command on non-list item") } -func handleLIndex(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleLIndex(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := lindexKeyFunc(cmd) if err != nil { return nil, err @@ -84,7 +84,7 @@ func handleLIndex(ctx context.Context, cmd []string, server utils.Server, conn * return []byte(fmt.Sprintf("+%s\r\n", list[index])), nil } -func handleLRange(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleLRange(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := lrangeKeyFunc(cmd) if err != nil { return nil, err @@ -163,7 +163,7 @@ func handleLRange(ctx context.Context, cmd []string, server utils.Server, conn * return bytes, nil } -func handleLSet(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleLSet(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := lsetKeyFunc(cmd) if err != nil { return nil, err @@ -202,7 +202,7 @@ func handleLSet(ctx context.Context, cmd []string, server utils.Server, conn *ne return []byte(utils.OkResponse), nil } -func handleLTrim(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleLTrim(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := ltrimKeyFunc(cmd) if err != nil { return nil, err @@ -251,7 +251,7 @@ func handleLTrim(ctx context.Context, cmd []string, server utils.Server, conn *n return []byte(utils.OkResponse), nil } -func handleLRem(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleLRem(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := lremKeyFunc(cmd) if err != nil { return nil, err @@ -319,7 +319,7 @@ func handleLRem(ctx context.Context, cmd []string, server utils.Server, conn *ne return []byte(utils.OkResponse), nil } -func handleLMove(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleLMove(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := lmoveKeyFunc(cmd) if err != nil { return nil, err @@ -380,7 +380,7 @@ func handleLMove(ctx context.Context, cmd []string, server utils.Server, conn *n return []byte(utils.OkResponse), nil } -func handleLPush(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleLPush(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := lpushKeyFunc(cmd) if err != nil { return nil, err @@ -426,7 +426,7 @@ func handleLPush(ctx context.Context, cmd []string, server utils.Server, conn *n return []byte(utils.OkResponse), nil } -func handleRPush(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleRPush(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := rpushKeyFunc(cmd) if err != nil { return nil, err @@ -474,7 +474,7 @@ func handleRPush(ctx context.Context, cmd []string, server utils.Server, conn *n return []byte(utils.OkResponse), nil } -func handlePop(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handlePop(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := popKeyFunc(cmd) if err != nil { return nil, err diff --git a/src/modules/list/commands_test.go b/src/modules/list/commands_test.go index 7e99629..b197c04 100644 --- a/src/modules/list/commands_test.go +++ b/src/modules/list/commands_test.go @@ -25,10 +25,10 @@ import ( "testing" ) -var mockServer *server.Server +var mockServer *server.EchoVault func init() { - mockServer = server.NewServer(server.Opts{ + mockServer = server.NewEchoVault(server.Opts{ Config: utils.Config{ DataDir: "", EvictionPolicy: utils.NoEviction, diff --git a/src/modules/pubsub/commands.go b/src/modules/pubsub/commands.go index 77ecc70..5b9fd53 100644 --- a/src/modules/pubsub/commands.go +++ b/src/modules/pubsub/commands.go @@ -23,7 +23,7 @@ import ( "strings" ) -func handleSubscribe(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSubscribe(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { pubsub, ok := server.GetPubSub().(*PubSub) if !ok { return nil, errors.New("could not load pubsub module") @@ -41,7 +41,7 @@ func handleSubscribe(ctx context.Context, cmd []string, server utils.Server, con return nil, nil } -func handleUnsubscribe(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleUnsubscribe(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { pubsub, ok := server.GetPubSub().(*PubSub) if !ok { return nil, errors.New("could not load pubsub module") @@ -54,7 +54,7 @@ func handleUnsubscribe(ctx context.Context, cmd []string, server utils.Server, c return pubsub.Unsubscribe(ctx, conn, channels, withPattern), nil } -func handlePublish(ctx context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handlePublish(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { pubsub, ok := server.GetPubSub().(*PubSub) if !ok { return nil, errors.New("could not load pubsub module") @@ -66,7 +66,7 @@ func handlePublish(ctx context.Context, cmd []string, server utils.Server, _ *ne return []byte(utils.OkResponse), nil } -func handlePubSubChannels(_ context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handlePubSubChannels(_ context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { if len(cmd) > 3 { return nil, errors.New(utils.WrongArgsResponse) } @@ -84,7 +84,7 @@ func handlePubSubChannels(_ context.Context, cmd []string, server utils.Server, return pubsub.Channels(pattern), nil } -func handlePubSubNumPat(_ context.Context, _ []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handlePubSubNumPat(_ context.Context, _ []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { pubsub, ok := server.GetPubSub().(*PubSub) if !ok { return nil, errors.New("could not load pubsub module") @@ -93,7 +93,7 @@ func handlePubSubNumPat(_ context.Context, _ []string, server utils.Server, _ *n return []byte(fmt.Sprintf(":%d\r\n", num)), nil } -func handlePubSubNumSubs(_ context.Context, cmd []string, server utils.Server, _ *net.Conn) ([]byte, error) { +func handlePubSubNumSubs(_ context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) { pubsub, ok := server.GetPubSub().(*PubSub) if !ok { return nil, errors.New("could not load pubsub module") @@ -177,7 +177,7 @@ it's currently subscribe to.`, Description: "", Sync: false, KeyExtractionFunc: func(cmd []string) ([]string, error) { return []string{}, nil }, - HandlerFunc: func(_ context.Context, _ []string, _ utils.Server, _ *net.Conn) ([]byte, error) { + HandlerFunc: func(_ context.Context, _ []string, _ utils.EchoVault, _ *net.Conn) ([]byte, error) { return nil, errors.New("provide CHANNELS, NUMPAT, or NUMSUB subcommand") }, SubCommands: []utils.SubCommand{ diff --git a/src/modules/pubsub/commands_test.go b/src/modules/pubsub/commands_test.go index 79c1d09..5e3c3a0 100644 --- a/src/modules/pubsub/commands_test.go +++ b/src/modules/pubsub/commands_test.go @@ -28,14 +28,14 @@ import ( ) var pubsub *PubSub -var mockServer *server.Server +var mockServer *server.EchoVault var bindAddr = "localhost" var port uint16 = 7490 func init() { pubsub = NewPubSub() - mockServer = server.NewServer(server.Opts{ + mockServer = server.NewEchoVault(server.Opts{ PubSub: pubsub, Commands: Commands(), Config: utils.Config{ @@ -492,7 +492,7 @@ func Test_HandlePubSubChannels(t *testing.T) { // Create separate mock server for this test var port uint16 = 7590 pubsub = NewPubSub() - mockServer := server.NewServer(server.Opts{ + mockServer := server.NewEchoVault(server.Opts{ PubSub: pubsub, Commands: Commands(), Config: utils.Config{ @@ -637,7 +637,7 @@ func Test_HandleNumPat(t *testing.T) { // Create separate mock server for this test var port uint16 = 7591 pubsub = NewPubSub() - mockServer := server.NewServer(server.Opts{ + mockServer := server.NewEchoVault(server.Opts{ PubSub: pubsub, Commands: Commands(), Config: utils.Config{ @@ -741,7 +741,7 @@ func Test_HandleNumSub(t *testing.T) { // Create separate mock server for this test var port uint16 = 7591 pubsub = NewPubSub() - mockServer := server.NewServer(server.Opts{ + mockServer := server.NewEchoVault(server.Opts{ PubSub: pubsub, Commands: Commands(), Config: utils.Config{ diff --git a/src/modules/set/commands.go b/src/modules/set/commands.go index d576300..104a61d 100644 --- a/src/modules/set/commands.go +++ b/src/modules/set/commands.go @@ -24,7 +24,7 @@ import ( "strings" ) -func handleSADD(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSADD(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := saddKeyFunc(cmd) if err != nil { return nil, err @@ -61,7 +61,7 @@ func handleSADD(ctx context.Context, cmd []string, server utils.Server, conn *ne return []byte(fmt.Sprintf(":%d\r\n", count)), nil } -func handleSCARD(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSCARD(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := scardKeyFunc(cmd) if err != nil { return nil, err @@ -88,7 +88,7 @@ func handleSCARD(ctx context.Context, cmd []string, server utils.Server, conn *n return []byte(fmt.Sprintf(":%d\r\n", cardinality)), nil } -func handleSDIFF(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSDIFF(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := sdiffKeyFunc(cmd) if err != nil { return nil, err @@ -149,7 +149,7 @@ func handleSDIFF(ctx context.Context, cmd []string, server utils.Server, conn *n return []byte(res), nil } -func handleSDIFFSTORE(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSDIFFSTORE(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := sdiffstoreKeyFunc(cmd) if err != nil { return nil, err @@ -225,7 +225,7 @@ func handleSDIFFSTORE(ctx context.Context, cmd []string, server utils.Server, co return []byte(res), nil } -func handleSINTER(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSINTER(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := sinterKeyFunc(cmd) if err != nil { return nil, err @@ -280,7 +280,7 @@ func handleSINTER(ctx context.Context, cmd []string, server utils.Server, conn * return []byte(res), nil } -func handleSINTERCARD(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSINTERCARD(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := sintercardKeyFunc(cmd) if err != nil { return nil, err @@ -347,7 +347,7 @@ func handleSINTERCARD(ctx context.Context, cmd []string, server utils.Server, co return []byte(fmt.Sprintf(":%d\r\n", intersect.Cardinality())), nil } -func handleSINTERSTORE(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSINTERSTORE(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := sinterstoreKeyFunc(cmd) if err != nil { return nil, err @@ -405,7 +405,7 @@ func handleSINTERSTORE(ctx context.Context, cmd []string, server utils.Server, c return []byte(fmt.Sprintf(":%d\r\n", intersect.Cardinality())), nil } -func handleSISMEMBER(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSISMEMBER(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := sismemberKeyFunc(cmd) if err != nil { return nil, err @@ -434,7 +434,7 @@ func handleSISMEMBER(ctx context.Context, cmd []string, server utils.Server, con return []byte(":1\r\n"), nil } -func handleSMEMBERS(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSMEMBERS(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := smembersKeyFunc(cmd) if err != nil { return nil, err @@ -469,7 +469,7 @@ func handleSMEMBERS(ctx context.Context, cmd []string, server utils.Server, conn return []byte(res), nil } -func handleSMISMEMBER(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSMISMEMBER(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := smismemberKeyFunc(cmd) if err != nil { return nil, err @@ -512,7 +512,7 @@ func handleSMISMEMBER(ctx context.Context, cmd []string, server utils.Server, co return []byte(res), nil } -func handleSMOVE(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSMOVE(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := smoveKeyFunc(cmd) if err != nil { return nil, err @@ -566,7 +566,7 @@ func handleSMOVE(ctx context.Context, cmd []string, server utils.Server, conn *n return []byte(fmt.Sprintf(":%d\r\n", res)), nil } -func handleSPOP(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSPOP(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := spopKeyFunc(cmd) if err != nil { return nil, err @@ -610,7 +610,7 @@ func handleSPOP(ctx context.Context, cmd []string, server utils.Server, conn *ne return []byte(res), nil } -func handleSRANDMEMBER(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSRANDMEMBER(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := srandmemberKeyFunc(cmd) if err != nil { return nil, err @@ -654,7 +654,7 @@ func handleSRANDMEMBER(ctx context.Context, cmd []string, server utils.Server, c return []byte(res), nil } -func handleSREM(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSREM(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := sremKeyFunc(cmd) if err != nil { return nil, err @@ -682,7 +682,7 @@ func handleSREM(ctx context.Context, cmd []string, server utils.Server, conn *ne return []byte(fmt.Sprintf(":%d\r\n", count)), nil } -func handleSUNION(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSUNION(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := sunionKeyFunc(cmd) if err != nil { return nil, err @@ -733,7 +733,7 @@ func handleSUNION(ctx context.Context, cmd []string, server utils.Server, conn * return []byte(res), nil } -func handleSUNIONSTORE(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSUNIONSTORE(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := sunionstoreKeyFunc(cmd) if err != nil { return nil, err diff --git a/src/modules/set/commant_test.go b/src/modules/set/commant_test.go index ad9308e..639f668 100644 --- a/src/modules/set/commant_test.go +++ b/src/modules/set/commant_test.go @@ -26,10 +26,10 @@ import ( "testing" ) -var mockServer *server.Server +var mockServer *server.EchoVault func init() { - mockServer = server.NewServer(server.Opts{ + mockServer = server.NewEchoVault(server.Opts{ Config: utils.Config{ DataDir: "", EvictionPolicy: utils.NoEviction, diff --git a/src/modules/sorted_set/commands.go b/src/modules/sorted_set/commands.go index 2a5b2af..70279d6 100644 --- a/src/modules/sorted_set/commands.go +++ b/src/modules/sorted_set/commands.go @@ -27,7 +27,7 @@ import ( "strings" ) -func handleZADD(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZADD(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zaddKeyFunc(cmd) if err != nil { return nil, err @@ -178,7 +178,7 @@ func handleZADD(ctx context.Context, cmd []string, server utils.Server, conn *ne return []byte(fmt.Sprintf(":%d\r\n", set.Cardinality())), nil } -func handleZCARD(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZCARD(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zcardKeyFunc(cmd) if err != nil { return nil, err @@ -202,7 +202,7 @@ func handleZCARD(ctx context.Context, cmd []string, server utils.Server, conn *n return []byte(fmt.Sprintf(":%d\r\n", set.Cardinality())), nil } -func handleZCOUNT(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZCOUNT(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zcountKeyFunc(cmd) if err != nil { return nil, err @@ -270,7 +270,7 @@ func handleZCOUNT(ctx context.Context, cmd []string, server utils.Server, conn * return []byte(fmt.Sprintf(":%d\r\n", len(members))), nil } -func handleZLEXCOUNT(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZLEXCOUNT(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zlexcountKeyFunc(cmd) if err != nil { return nil, err @@ -315,7 +315,7 @@ func handleZLEXCOUNT(ctx context.Context, cmd []string, server utils.Server, con return []byte(fmt.Sprintf(":%d\r\n", count)), nil } -func handleZDIFF(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZDIFF(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zdiffKeyFunc(cmd) if err != nil { return nil, err @@ -388,7 +388,7 @@ func handleZDIFF(ctx context.Context, cmd []string, server utils.Server, conn *n return []byte(res), nil } -func handleZDIFFSTORE(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZDIFFSTORE(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zdiffstoreKeyFunc(cmd) if err != nil { return nil, err @@ -454,7 +454,7 @@ func handleZDIFFSTORE(ctx context.Context, cmd []string, server utils.Server, co return []byte(fmt.Sprintf(":%d\r\n", diff.Cardinality())), nil } -func handleZINCRBY(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZINCRBY(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zincrbyKeyFunc(cmd) if err != nil { return nil, err @@ -517,7 +517,7 @@ func handleZINCRBY(ctx context.Context, cmd []string, server utils.Server, conn strconv.FormatFloat(float64(set.Get(member).score), 'f', -1, 64))), nil } -func handleZINTER(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZINTER(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zinterKeyFunc(cmd) if err != nil { return nil, err @@ -577,7 +577,7 @@ func handleZINTER(ctx context.Context, cmd []string, server utils.Server, conn * return []byte(res), nil } -func handleZINTERSTORE(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZINTERSTORE(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zinterstoreKeyFunc(cmd) if err != nil { return nil, err @@ -644,7 +644,7 @@ func handleZINTERSTORE(ctx context.Context, cmd []string, server utils.Server, c return []byte(fmt.Sprintf(":%d\r\n", intersect.Cardinality())), nil } -func handleZMPOP(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZMPOP(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zmpopKeyFunc(cmd) if err != nil { return nil, err @@ -722,7 +722,7 @@ func handleZMPOP(ctx context.Context, cmd []string, server utils.Server, conn *n return []byte("*0\r\n"), nil } -func handleZPOP(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZPOP(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zpopKeyFunc(cmd) if err != nil { return nil, err @@ -773,7 +773,7 @@ func handleZPOP(ctx context.Context, cmd []string, server utils.Server, conn *ne return []byte(res), nil } -func handleZMSCORE(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZMSCORE(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zmscoreKeyFunc(cmd) if err != nil { return nil, err @@ -815,7 +815,7 @@ func handleZMSCORE(ctx context.Context, cmd []string, server utils.Server, conn return []byte(res), nil } -func handleZRANDMEMBER(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZRANDMEMBER(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zrandmemberKeyFunc(cmd) if err != nil { return nil, err @@ -870,7 +870,7 @@ func handleZRANDMEMBER(ctx context.Context, cmd []string, server utils.Server, c return []byte(res), nil } -func handleZRANK(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZRANK(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zrankKeyFunc(cmd) if err != nil { return nil, err @@ -920,7 +920,7 @@ func handleZRANK(ctx context.Context, cmd []string, server utils.Server, conn *n return []byte("$-1\r\n"), nil } -func handleZREM(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZREM(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zremKeyFunc(cmd) if err != nil { return nil, err @@ -952,7 +952,7 @@ func handleZREM(ctx context.Context, cmd []string, server utils.Server, conn *ne return []byte(fmt.Sprintf(":%d\r\n", deletedCount)), nil } -func handleZSCORE(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZSCORE(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zscoreKeyFunc(cmd) if err != nil { return nil, err @@ -981,7 +981,7 @@ func handleZSCORE(ctx context.Context, cmd []string, server utils.Server, conn * return []byte(fmt.Sprintf("$%d\r\n%s\r\n", len(score), score)), nil } -func handleZREMRANGEBYSCORE(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZREMRANGEBYSCORE(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zremrangebyscoreKeyFunc(cmd) if err != nil { return nil, err @@ -1025,7 +1025,7 @@ func handleZREMRANGEBYSCORE(ctx context.Context, cmd []string, server utils.Serv return []byte(fmt.Sprintf(":%d\r\n", deletedCount)), nil } -func handleZREMRANGEBYRANK(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZREMRANGEBYRANK(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zremrangebyrankKeyFunc(cmd) if err != nil { return nil, err @@ -1090,7 +1090,7 @@ func handleZREMRANGEBYRANK(ctx context.Context, cmd []string, server utils.Serve return []byte(fmt.Sprintf(":%d\r\n", deletedCount)), nil } -func handleZREMRANGEBYLEX(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZREMRANGEBYLEX(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zremrangebylexKeyFunc(cmd) if err != nil { return nil, err @@ -1137,7 +1137,7 @@ func handleZREMRANGEBYLEX(ctx context.Context, cmd []string, server utils.Server return []byte(fmt.Sprintf(":%d\r\n", deletedCount)), nil } -func handleZRANGE(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZRANGE(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zrangeKeyCount(cmd) if err != nil { return nil, err @@ -1277,7 +1277,7 @@ func handleZRANGE(ctx context.Context, cmd []string, server utils.Server, conn * return []byte(res), nil } -func handleZRANGESTORE(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZRANGESTORE(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zrangeStoreKeyFunc(cmd) if err != nil { return nil, err @@ -1419,7 +1419,7 @@ func handleZRANGESTORE(ctx context.Context, cmd []string, server utils.Server, c return []byte(fmt.Sprintf(":%d\r\n", newSortedSet.Cardinality())), nil } -func handleZUNION(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZUNION(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { if _, err := zunionKeyFunc(cmd); err != nil { return nil, err } @@ -1473,7 +1473,7 @@ func handleZUNION(ctx context.Context, cmd []string, server utils.Server, conn * return []byte(res), nil } -func handleZUNIONSTORE(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleZUNIONSTORE(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := zunionstoreKeyFunc(cmd) if err != nil { return nil, err diff --git a/src/modules/sorted_set/commands_test.go b/src/modules/sorted_set/commands_test.go index 005e166..b042aee 100644 --- a/src/modules/sorted_set/commands_test.go +++ b/src/modules/sorted_set/commands_test.go @@ -28,10 +28,10 @@ import ( "testing" ) -var mockServer *server.Server +var mockServer *server.EchoVault func init() { - mockServer = server.NewServer(server.Opts{ + mockServer = server.NewEchoVault(server.Opts{ Config: utils.Config{ DataDir: "", EvictionPolicy: utils.NoEviction, diff --git a/src/modules/string/commands.go b/src/modules/string/commands.go index ecf455e..0f40ad8 100644 --- a/src/modules/string/commands.go +++ b/src/modules/string/commands.go @@ -22,7 +22,7 @@ import ( "net" ) -func handleSetRange(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSetRange(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := setRangeKeyFunc(cmd) if err != nil { return nil, err @@ -97,7 +97,7 @@ func handleSetRange(ctx context.Context, cmd []string, server utils.Server, conn return []byte(fmt.Sprintf(":%d\r\n", len(strRunes))), nil } -func handleStrLen(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleStrLen(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := strLenKeyFunc(cmd) if err != nil { return nil, err @@ -123,7 +123,7 @@ func handleStrLen(ctx context.Context, cmd []string, server utils.Server, conn * return []byte(fmt.Sprintf(":%d\r\n", len(value))), nil } -func handleSubStr(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) { +func handleSubStr(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) { keys, err := subStrKeyFunc(cmd) if err != nil { return nil, err diff --git a/src/modules/string/commands_test.go b/src/modules/string/commands_test.go index 19d5c42..1e1adae 100644 --- a/src/modules/string/commands_test.go +++ b/src/modules/string/commands_test.go @@ -26,10 +26,10 @@ import ( "testing" ) -var mockServer *server.Server +var mockServer *server.EchoVault func init() { - mockServer = server.NewServer(server.Opts{ + mockServer = server.NewEchoVault(server.Opts{ Config: utils.Config{ DataDir: "", EvictionPolicy: utils.NoEviction, diff --git a/src/raft/fsm.go b/src/raft/fsm.go index 7d05c56..2f0ea4e 100644 --- a/src/raft/fsm.go +++ b/src/raft/fsm.go @@ -27,7 +27,7 @@ import ( type FSMOpts struct { Config utils.Config - Server utils.Server + Server utils.EchoVault GetCommand func(command string) (utils.Command, error) DeleteKey func(ctx context.Context, key string) error } diff --git a/src/raft/raft.go b/src/raft/raft.go index fdf0d75..9e787e9 100644 --- a/src/raft/raft.go +++ b/src/raft/raft.go @@ -32,7 +32,7 @@ import ( type Opts struct { Config utils.Config - Server utils.Server + Server utils.EchoVault GetCommand func(command string) (utils.Command, error) DeleteKey func(ctx context.Context, key string) error } diff --git a/src/server/cluster.go b/src/server/cluster.go index e459880..f733de8 100644 --- a/src/server/cluster.go +++ b/src/server/cluster.go @@ -22,11 +22,11 @@ import ( "time" ) -func (server *Server) IsInCluster() bool { +func (server *EchoVault) IsInCluster() bool { return server.Config.BootstrapCluster || server.Config.JoinAddr != "" } -func (server *Server) raftApplyDeleteKey(ctx context.Context, key string) error { +func (server *EchoVault) raftApplyDeleteKey(ctx context.Context, key string) error { serverId, _ := ctx.Value(utils.ContextServerID("ServerID")).(string) deleteKeyRequest := utils.ApplyRequest{ @@ -60,7 +60,7 @@ func (server *Server) raftApplyDeleteKey(ctx context.Context, key string) error return nil } -func (server *Server) raftApplyCommand(ctx context.Context, cmd []string) ([]byte, error) { +func (server *EchoVault) raftApplyCommand(ctx context.Context, cmd []string) ([]byte, error) { serverId, _ := ctx.Value(utils.ContextServerID("ServerID")).(string) connectionId, _ := ctx.Value(utils.ContextConnID("ConnectionID")).(string) diff --git a/src/server/keyspace.go b/src/server/keyspace.go index 4819502..37835f6 100644 --- a/src/server/keyspace.go +++ b/src/server/keyspace.go @@ -30,7 +30,7 @@ import ( // KeyLock tries to acquire the write lock for the specified key. // If the context passed to the function finishes before the lock is acquired, an error is returned. -func (server *Server) KeyLock(ctx context.Context, key string) (bool, error) { +func (server *EchoVault) KeyLock(ctx context.Context, key string) (bool, error) { // If context did not set deadline, set the default deadline var cancelFunc context.CancelFunc if _, ok := ctx.Deadline(); !ok { @@ -54,7 +54,7 @@ func (server *Server) KeyLock(ctx context.Context, key string) (bool, error) { } } -func (server *Server) KeyUnlock(ctx context.Context, key string) { +func (server *EchoVault) KeyUnlock(ctx context.Context, key string) { if _, ok := server.keyLocks[key]; ok { server.keyLocks[key].Unlock() } @@ -62,7 +62,7 @@ func (server *Server) KeyUnlock(ctx context.Context, key string) { // KeyRLock tries to acquire the read lock for the specified key. // If the context passed to the function finishes before the lock is acquired, an error is returned. -func (server *Server) KeyRLock(ctx context.Context, key string) (bool, error) { +func (server *EchoVault) KeyRLock(ctx context.Context, key string) (bool, error) { // If context did not set deadline, set the default deadline var cancelFunc context.CancelFunc if _, ok := ctx.Deadline(); !ok { @@ -86,13 +86,13 @@ func (server *Server) KeyRLock(ctx context.Context, key string) (bool, error) { } } -func (server *Server) KeyRUnlock(ctx context.Context, key string) { +func (server *EchoVault) KeyRUnlock(ctx context.Context, key string) { if _, ok := server.keyLocks[key]; ok { server.keyLocks[key].RUnlock() } } -func (server *Server) KeyExists(ctx context.Context, key string) bool { +func (server *EchoVault) KeyExists(ctx context.Context, key string) bool { entry, ok := server.store[key] if !ok { return false @@ -126,7 +126,7 @@ func (server *Server) KeyExists(ctx context.Context, key string) bool { // CreateKeyAndLock creates a new key lock and immediately locks it if the key does not exist. // If the key exists, the existing key is locked. -func (server *Server) CreateKeyAndLock(ctx context.Context, key string) (bool, error) { +func (server *EchoVault) CreateKeyAndLock(ctx context.Context, key string) (bool, error) { if utils.IsMaxMemoryExceeded(server.Config.MaxMemory) && server.Config.EvictionPolicy == utils.NoEviction { return false, errors.New("max memory reached, key not created") } @@ -152,7 +152,7 @@ func (server *Server) CreateKeyAndLock(ctx context.Context, key string) (bool, e // GetValue retrieves the current value at the specified key. // The key must be read-locked before calling this function. -func (server *Server) GetValue(ctx context.Context, key string) interface{} { +func (server *EchoVault) GetValue(ctx context.Context, key string) interface{} { if err := server.updateKeyInCache(ctx, key); err != nil { log.Printf("GetValue error: %+v\n", err) } @@ -164,7 +164,7 @@ func (server *Server) GetValue(ctx context.Context, key string) interface{} { // in the snapshot engine. // This count triggers a snapshot when the threshold is reached. // The key must be locked prior to calling this function. -func (server *Server) SetValue(ctx context.Context, key string, value interface{}) error { +func (server *EchoVault) SetValue(ctx context.Context, key string, value interface{}) error { if utils.IsMaxMemoryExceeded(server.Config.MaxMemory) && server.Config.EvictionPolicy == utils.NoEviction { return errors.New("max memory reached, key value not set") } @@ -188,7 +188,7 @@ func (server *Server) SetValue(ctx context.Context, key string, value interface{ // The GetExpiry function returns the expiry time associated with the provided key. // The key must be read locked before calling this function. -func (server *Server) GetExpiry(ctx context.Context, key string) time.Time { +func (server *EchoVault) GetExpiry(ctx context.Context, key string) time.Time { if err := server.updateKeyInCache(ctx, key); err != nil { log.Printf("GetKeyExpiry error: %+v\n", err) } @@ -201,7 +201,7 @@ func (server *Server) GetExpiry(ctx context.Context, key string) time.Time { // The touch parameter determines whether to update the keys access count on lfu eviction policy, // or the access time on lru eviction policy. // The key must be locked prior to calling this function. -func (server *Server) SetExpiry(ctx context.Context, key string, expireAt time.Time, touch bool) { +func (server *EchoVault) SetExpiry(ctx context.Context, key string, expireAt time.Time, touch bool) { server.store[key] = utils.KeyData{ Value: server.store[key].Value, ExpireAt: expireAt, @@ -225,7 +225,7 @@ func (server *Server) SetExpiry(ctx context.Context, key string, expireAt time.T // RemoveExpiry is called by commands that remove key expiry (e.g. PERSIST). // The key must be locked prior ro calling this function. -func (server *Server) RemoveExpiry(key string) { +func (server *EchoVault) RemoveExpiry(key string) { // Reset expiry time server.store[key] = utils.KeyData{ Value: server.store[key].Value, @@ -244,7 +244,7 @@ func (server *Server) RemoveExpiry(key string) { // functions that require a deep copy of the state. // The copy only starts when there's no current copy in progress (represented by StateCopyInProgress atomic boolean) // and when there's no current state mutation in progress (represented by StateMutationInProgress atomic boolean) -func (server *Server) GetState() map[string]utils.KeyData { +func (server *EchoVault) GetState() map[string]utils.KeyData { // Wait unit there's no state mutation or copy in progress before starting a new copy process. for { if !server.StateCopyInProgress.Load() && !server.StateMutationInProgress.Load() { @@ -261,7 +261,7 @@ func (server *Server) GetState() map[string]utils.KeyData { } // DeleteKey removes the key from store, keyLocks and keyExpiry maps. -func (server *Server) DeleteKey(ctx context.Context, key string) error { +func (server *EchoVault) DeleteKey(ctx context.Context, key string) error { if _, err := server.KeyLock(ctx, key); err != nil { return fmt.Errorf("deleteKey error: %+v", err) } @@ -288,7 +288,7 @@ func (server *Server) DeleteKey(ctx context.Context, key string) error { // updateKeyInCache updates either the key access count or the most recent access time in the cache // depending on whether an LFU or LRU strategy was used. -func (server *Server) updateKeyInCache(ctx context.Context, key string) error { +func (server *EchoVault) updateKeyInCache(ctx context.Context, key string) error { // Only update cache when in standalone mode or when raft leader if server.IsInCluster() || (server.IsInCluster() && !server.raft.IsRaftLeader()) { return nil @@ -326,7 +326,7 @@ func (server *Server) updateKeyInCache(ctx context.Context, key string) error { } // adjustMemoryUsage should only be called from standalone server or from raft cluster leader. -func (server *Server) adjustMemoryUsage(ctx context.Context) error { +func (server *EchoVault) adjustMemoryUsage(ctx context.Context) error { // If max memory is 0, there's no need to adjust memory usage. if server.Config.MaxMemory == 0 { return nil @@ -487,7 +487,7 @@ func (server *Server) adjustMemoryUsage(ctx context.Context) error { // This function will sample 20 keys from the list of keys with an associated TTL, // if the key is expired, it will be evicted. // This function is only executed in standalone mode or by the raft cluster leader. -func (server *Server) evictKeysWithExpiredTTL(ctx context.Context) error { +func (server *EchoVault) evictKeysWithExpiredTTL(ctx context.Context) error { // Only execute this if we're in standalone mode, or raft cluster leader. if server.IsInCluster() && !server.raft.IsRaftLeader() { return nil diff --git a/src/server/modules.go b/src/server/modules.go index b211e41..439ca3a 100644 --- a/src/server/modules.go +++ b/src/server/modules.go @@ -23,19 +23,19 @@ import ( "strings" ) -func (server *Server) GetAllCommands() []utils.Command { +func (server *EchoVault) GetAllCommands() []utils.Command { return server.Commands } -func (server *Server) GetACL() interface{} { +func (server *EchoVault) GetACL() interface{} { return server.ACL } -func (server *Server) GetPubSub() interface{} { +func (server *EchoVault) GetPubSub() interface{} { return server.PubSub } -func (server *Server) getCommand(cmd string) (utils.Command, error) { +func (server *EchoVault) getCommand(cmd string) (utils.Command, error) { for _, command := range server.Commands { if strings.EqualFold(command.Command, cmd) { return command, nil @@ -44,7 +44,7 @@ func (server *Server) getCommand(cmd string) (utils.Command, error) { return utils.Command{}, fmt.Errorf("command %s not supported", cmd) } -func (server *Server) handleCommand(ctx context.Context, message []byte, conn *net.Conn, replay bool) ([]byte, error) { +func (server *EchoVault) handleCommand(ctx context.Context, message []byte, conn *net.Conn, replay bool) ([]byte, error) { cmd, err := utils.Decode(message) if err != nil { return nil, err diff --git a/src/server/server.go b/src/server/server.go index a4f0d87..c0e3145 100644 --- a/src/server/server.go +++ b/src/server/server.go @@ -35,7 +35,7 @@ import ( "time" ) -type Server struct { +type EchoVault struct { // Config holds the server configuration variables. Config utils.Config @@ -92,8 +92,8 @@ type Opts struct { Commands []utils.Command } -func NewServer(opts Opts) *Server { - server := &Server{ +func NewEchoVault(opts Opts) *EchoVault { + server := &EchoVault{ Config: opts.Config, ACL: opts.ACL, PubSub: opts.PubSub, @@ -184,7 +184,7 @@ func NewServer(opts Opts) *Server { return server } -func (server *Server) StartTCP(ctx context.Context) { +func (server *EchoVault) StartTCP(ctx context.Context) { conf := server.Config listenConfig := net.ListenConfig{ @@ -258,7 +258,7 @@ func (server *Server) StartTCP(ctx context.Context) { } } -func (server *Server) handleConnection(ctx context.Context, conn net.Conn) { +func (server *EchoVault) handleConnection(ctx context.Context, conn net.Conn) { // If ACL module is loaded, register the connection with the ACL if server.ACL != nil { server.ACL.RegisterConnection(&conn) @@ -333,7 +333,7 @@ func (server *Server) handleConnection(ctx context.Context, conn net.Conn) { } } -func (server *Server) Start(ctx context.Context) { +func (server *EchoVault) Start(ctx context.Context) { conf := server.Config if conf.TLS && len(conf.CertKeyPairs) <= 0 { @@ -372,7 +372,7 @@ func (server *Server) Start(ctx context.Context) { server.StartTCP(ctx) } -func (server *Server) TakeSnapshot() error { +func (server *EchoVault) TakeSnapshot() error { if server.SnapshotInProgress.Load() { return errors.New("snapshot already in progress") } @@ -394,31 +394,31 @@ func (server *Server) TakeSnapshot() error { return nil } -func (server *Server) StartSnapshot() { +func (server *EchoVault) StartSnapshot() { server.SnapshotInProgress.Store(true) } -func (server *Server) FinishSnapshot() { +func (server *EchoVault) FinishSnapshot() { server.SnapshotInProgress.Store(false) } -func (server *Server) SetLatestSnapshot(msec int64) { +func (server *EchoVault) SetLatestSnapshot(msec int64) { server.LatestSnapshotMilliseconds.Store(msec) } -func (server *Server) GetLatestSnapshot() int64 { +func (server *EchoVault) GetLatestSnapshot() int64 { return server.LatestSnapshotMilliseconds.Load() } -func (server *Server) StartRewriteAOF() { +func (server *EchoVault) StartRewriteAOF() { server.RewriteAOFInProgress.Store(true) } -func (server *Server) FinishRewriteAOF() { +func (server *EchoVault) FinishRewriteAOF() { server.RewriteAOFInProgress.Store(false) } -func (server *Server) RewriteAOF() error { +func (server *EchoVault) RewriteAOF() error { if server.RewriteAOFInProgress.Load() { return errors.New("aof rewrite in progress") } @@ -430,14 +430,14 @@ func (server *Server) RewriteAOF() error { return nil } -func (server *Server) ShutDown(ctx context.Context) { +func (server *EchoVault) ShutDown(ctx context.Context) { if server.IsInCluster() { server.raft.RaftShutdown(ctx) server.memberList.MemberListShutdown(ctx) } } -func (server *Server) InitialiseCaches() { +func (server *EchoVault) InitialiseCaches() { // Set up LFU cache server.lfuCache = struct { mutex sync.Mutex diff --git a/src/utils/config.go b/src/utils/config.go index 4769aac..2522cbd 100644 --- a/src/utils/config.go +++ b/src/utils/config.go @@ -131,7 +131,7 @@ There is no limit by default.`, func(memory string) error { tls := flag.Bool("tls", false, "Start the server in TLS mode. Default is false.") mtls := flag.Bool("mtls", false, "Use mTLS to verify the client.") port := flag.Int("port", 7480, "Port to use. Default is 7480") - serverId := flag.String("server-id", "1", "Server ID in raft cluster. Leave empty for client.") + serverId := flag.String("server-id", "1", "EchoVault ID in raft cluster. Leave empty for client.") joinAddr := flag.String("join-addr", "", "Address of cluster member in a cluster to you want to join.") bindAddr := flag.String("bind-addr", "", "Address to bind the server to.") raftBindPort := flag.Uint("raft-port", 7481, "Port to use for intra-cluster communication. Leave on the client.") diff --git a/src/utils/types.go b/src/utils/types.go index a609d8f..cdda98d 100644 --- a/src/utils/types.go +++ b/src/utils/types.go @@ -26,7 +26,7 @@ type KeyData struct { ExpireAt time.Time } -type Server interface { +type EchoVault interface { KeyLock(ctx context.Context, key string) (bool, error) KeyUnlock(ctx context.Context, key string) KeyRLock(ctx context.Context, key string) (bool, error) @@ -68,7 +68,7 @@ type ApplyResponse struct { } type KeyExtractionFunc func(cmd []string) ([]string, error) -type HandlerFunc func(ctx context.Context, cmd []string, server Server, conn *net.Conn) ([]byte, error) +type HandlerFunc func(ctx context.Context, cmd []string, echovault EchoVault, conn *net.Conn) ([]byte, error) type SubCommand struct { Command string