Changeset 360 in code for trunk/downstream.go
- Timestamp:
- Jul 15, 2020, 3:47:57 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/downstream.go
r354 r360 1599 1599 } 1600 1600 1601 batchRef := "history" 1602 maxTries := 100 1601 1603 switch subcommand { 1602 1604 case "BEFORE": 1603 batchRef := "history"1604 1605 dc.SendMessage(&irc.Message{ 1605 1606 Prefix: dc.srv.prefix(), … … 1612 1613 1613 1614 tries := 0 1614 for remaining > 0 {1615 for remaining > 0 && tries < maxTries { 1615 1616 buf, err := parseMessagesBefore(uc.network, entity, timestamp, remaining) 1616 1617 if err != nil { … … 1620 1621 if len(buf) == 0 { 1621 1622 tries++ 1622 if tries >= 100 {1623 break1624 }1625 1623 } else { 1626 1624 tries = 0 … … 1632 1630 } 1633 1631 1634 for _, m := range history[remaining:] {1635 m .Tags["batch"] = irc.TagValue(batchRef)1636 dc.SendMessage(dc.marshalMessage(m , uc.network))1632 for _, msg := range history[remaining:] { 1633 msg.Tags["batch"] = irc.TagValue(batchRef) 1634 dc.SendMessage(dc.marshalMessage(msg, uc.network)) 1637 1635 } 1638 1636 … … 1642 1640 Params: []string{"-" + batchRef}, 1643 1641 }) 1642 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 }) 1644 1677 default: 1645 // TODO: support AFTER,LATEST, BETWEEN1678 // TODO: support LATEST, BETWEEN 1646 1679 return ircError{&irc.Message{ 1647 1680 Command: "FAIL",
Note:
See TracChangeset
for help on using the changeset viewer.