Changeset 387 in code for trunk/downstream.go
- Timestamp:
- Aug 11, 2020, 1:58:50 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/downstream.go
r362 r387 1599 1599 } 1600 1600 1601 batchRef := "history" 1602 maxTries := 100 1601 var history []*irc.Message 1603 1602 switch subcommand { 1604 1603 case "BEFORE": 1605 dc.SendMessage(&irc.Message{ 1606 Prefix: dc.srv.prefix(), 1607 Command: "BATCH", 1608 Params: []string{"+" + batchRef, "chathistory", target}, 1609 }) 1610 1611 history := make([]*irc.Message, limit) 1612 remaining := limit 1613 1614 tries := 0 1615 for remaining > 0 && tries < maxTries { 1616 buf, err := parseMessagesBefore(uc.network, entity, timestamp, remaining) 1617 if err != nil { 1618 dc.logger.Printf("failed parsing log messages for chathistory: %v", err) 1619 return newChatHistoryError(subcommand, target) 1620 } 1621 if len(buf) == 0 { 1622 tries++ 1623 } else { 1624 tries = 0 1625 } 1626 copy(history[remaining-len(buf):], buf) 1627 remaining -= len(buf) 1628 year, month, day := timestamp.Date() 1629 timestamp = time.Date(year, month, day, 0, 0, 0, 0, timestamp.Location()).Add(-1) 1630 } 1631 1632 for _, msg := range history[remaining:] { 1633 msg.Tags["batch"] = irc.TagValue(batchRef) 1634 dc.SendMessage(dc.marshalMessage(msg, uc.network)) 1635 } 1636 1637 dc.SendMessage(&irc.Message{ 1638 Prefix: dc.srv.prefix(), 1639 Command: "BATCH", 1640 Params: []string{"-" + batchRef}, 1641 }) 1604 history, err = loadHistoryBeforeTime(uc.network, entity, timestamp, limit) 1642 1605 case "AFTER": 1643 dc.SendMessage(&irc.Message{ 1644 Prefix: dc.srv.prefix(), 1645 Command: "BATCH", 1646 Params: []string{"+" + batchRef, "chathistory", target}, 1647 }) 1648 1649 remaining := limit 1650 tries := 0 1651 now := time.Now() 1652 for remaining > 0 && tries < maxTries && timestamp.Before(now) { 1653 buf, err := parseMessagesAfter(uc.network, entity, timestamp, remaining) 1654 if err != nil { 1655 dc.logger.Printf("failed parsing log messages for chathistory: %v", err) 1656 return newChatHistoryError(subcommand, target) 1657 } 1658 if len(buf) == 0 { 1659 tries++ 1660 } else { 1661 tries = 0 1662 } 1663 for _, msg := range buf { 1664 msg.Tags["batch"] = irc.TagValue(batchRef) 1665 dc.SendMessage(dc.marshalMessage(msg, uc.network)) 1666 } 1667 remaining -= len(buf) 1668 year, month, day := timestamp.Date() 1669 timestamp = time.Date(year, month, day+1, 0, 0, 0, 0, timestamp.Location()) 1670 } 1671 1672 dc.SendMessage(&irc.Message{ 1673 Prefix: dc.srv.prefix(), 1674 Command: "BATCH", 1675 Params: []string{"-" + batchRef}, 1676 }) 1606 history, err = loadHistoryAfterTime(uc.network, entity, timestamp, limit) 1677 1607 default: 1678 1608 // TODO: support LATEST, BETWEEN … … 1682 1612 }} 1683 1613 } 1614 if err != nil { 1615 dc.logger.Printf("failed parsing log messages for chathistory: %v", err) 1616 return newChatHistoryError(subcommand, target) 1617 } 1618 1619 batchRef := "history" 1620 dc.SendMessage(&irc.Message{ 1621 Prefix: dc.srv.prefix(), 1622 Command: "BATCH", 1623 Params: []string{"+" + batchRef, "chathistory", target}, 1624 }) 1625 1626 for _, msg := range history { 1627 msg.Tags["batch"] = irc.TagValue(batchRef) 1628 dc.SendMessage(dc.marshalMessage(msg, uc.network)) 1629 } 1630 1631 dc.SendMessage(&irc.Message{ 1632 Prefix: dc.srv.prefix(), 1633 Command: "BATCH", 1634 Params: []string{"-" + batchRef}, 1635 }) 1684 1636 default: 1685 1637 dc.logger.Printf("unhandled message: %v", msg)
Note:
See TracChangeset
for help on using the changeset viewer.