Skip to content

Commit 878e282

Browse files
author
Ian Bishop
committed
memory List() fix order
1 parent e971f9e commit 878e282

1 file changed

Lines changed: 20 additions & 14 deletions

File tree

memory.go

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -154,28 +154,34 @@ func (memory *InMemory) Search(kind, query string, start, limit int) (*data.Mess
154154
func (memory *InMemory) List(start int, limit int) (*data.Messages, error) {
155155
var messages = make([]data.Message, 0)
156156

157+
start = (memory.writeIndex - 1) - start
158+
if start < 0 {
159+
start = len(memory.Messages) + start
160+
}
161+
157162
if len(memory.Messages) == 0 || start > len(memory.Messages) {
158163
msgs := data.Messages(messages)
159164
return &msgs, nil
160165
}
161166

162-
if start+limit > len(memory.Messages) {
163-
limit = len(memory.Messages) - start
167+
if limit > len(memory.Messages) {
168+
limit = len(memory.Messages)
164169
}
165170

166-
start = len(memory.Messages) - start - 1
167-
end := start - limit
168-
169-
if start < 0 {
170-
start = 0
171-
}
172-
if end < -1 {
173-
end = -1
174-
}
175-
176-
for i := start; i > end; i-- {
177-
//for _, m := range memory.MessageIndex[start:end] {
171+
i := start
172+
for {
173+
if len(messages) == limit {
174+
break
175+
}
178176
messages = append(messages, *memory.Messages[i])
177+
i--
178+
if i < 0 {
179+
i = len(memory.Messages) - 1
180+
}
181+
// we've gone full circle
182+
if i == memory.writeIndex {
183+
break
184+
}
179185
}
180186

181187
msgs := data.Messages(messages)

0 commit comments

Comments
 (0)