Changeset 516 in code for trunk/msgstore_fs.go


Ignore:
Timestamp:
May 18, 2021, 8:44:10 AM (4 years ago)
Author:
hubert
Message:

Implement CHATHISTORY BETWEEN

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/msgstore_fs.go

    r515 r516  
    258258}
    259259
    260 func (ms *fsMessageStore) parseMessagesBefore(network *network, entity string, ref time.Time, limit int, afterOffset int64) ([]*irc.Message, error) {
     260func (ms *fsMessageStore) parseMessagesBefore(network *network, entity string, ref time.Time, end time.Time, limit int, afterOffset int64) ([]*irc.Message, error) {
    261261        path := ms.logPath(network, entity, ref)
    262262        f, err := os.Open(path)
     
    285285                if err != nil {
    286286                        return nil, err
    287                 } else if msg == nil {
     287                } else if msg == nil || !t.After(end) {
    288288                        continue
    289289                } else if !t.Before(ref) {
     
    314314}
    315315
    316 func (ms *fsMessageStore) parseMessagesAfter(network *network, entity string, ref time.Time, limit int) ([]*irc.Message, error) {
     316func (ms *fsMessageStore) parseMessagesAfter(network *network, entity string, ref time.Time, end time.Time, limit int) ([]*irc.Message, error) {
    317317        path := ms.logPath(network, entity, ref)
    318318        f, err := os.Open(path)
     
    333333                } else if msg == nil || !t.After(ref) {
    334334                        continue
     335                } else if !t.Before(end) {
     336                        break
    335337                }
    336338
     
    344346}
    345347
    346 func (ms *fsMessageStore) LoadBeforeTime(network *network, entity string, t time.Time, limit int) ([]*irc.Message, error) {
     348func (ms *fsMessageStore) LoadBeforeTime(network *network, entity string, start time.Time, end time.Time, limit int) ([]*irc.Message, error) {
    347349        history := make([]*irc.Message, limit)
    348350        remaining := limit
    349351        tries := 0
    350         for remaining > 0 && tries < fsMessageStoreMaxTries {
    351                 buf, err := ms.parseMessagesBefore(network, entity, t, remaining, -1)
     352        for remaining > 0 && tries < fsMessageStoreMaxTries && end.Before(start) {
     353                buf, err := ms.parseMessagesBefore(network, entity, start, end, remaining, -1)
    352354                if err != nil {
    353355                        return nil, err
     
    360362                copy(history[remaining-len(buf):], buf)
    361363                remaining -= len(buf)
    362                 year, month, day := t.Date()
    363                 t = time.Date(year, month, day, 0, 0, 0, 0, t.Location()).Add(-1)
     364                year, month, day := start.Date()
     365                start = time.Date(year, month, day, 0, 0, 0, 0, start.Location()).Add(-1)
    364366        }
    365367
     
    367369}
    368370
    369 func (ms *fsMessageStore) LoadAfterTime(network *network, entity string, t time.Time, limit int) ([]*irc.Message, error) {
     371func (ms *fsMessageStore) LoadAfterTime(network *network, entity string, start time.Time, end time.Time, limit int) ([]*irc.Message, error) {
    370372        var history []*irc.Message
    371373        remaining := limit
    372374        tries := 0
    373         now := time.Now()
    374         for remaining > 0 && tries < fsMessageStoreMaxTries && t.Before(now) {
    375                 buf, err := ms.parseMessagesAfter(network, entity, t, remaining)
     375        for remaining > 0 && tries < fsMessageStoreMaxTries && start.Before(end) {
     376                buf, err := ms.parseMessagesAfter(network, entity, start, end, remaining)
    376377                if err != nil {
    377378                        return nil, err
     
    384385                history = append(history, buf...)
    385386                remaining -= len(buf)
    386                 year, month, day := t.Date()
    387                 t = time.Date(year, month, day+1, 0, 0, 0, 0, t.Location())
     387                year, month, day := start.Date()
     388                start = time.Date(year, month, day+1, 0, 0, 0, 0, start.Location())
    388389        }
    389390        return history, nil
     
    421422                }
    422423
    423                 buf, err := ms.parseMessagesBefore(network, entity, t, remaining, offset)
     424                buf, err := ms.parseMessagesBefore(network, entity, t, time.Time{}, remaining, offset)
    424425                if err != nil {
    425426                        return nil, err
Note: See TracChangeset for help on using the changeset viewer.