Changeset 50 in code for trunk


Ignore:
Timestamp:
Feb 7, 2020, 3:43:54 PM (5 years ago)
Author:
contact
Message:

Add an in-memory ring buffer

References: https://todo.sr.ht/~emersion/jounce/2

Location:
trunk
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/downstream.go

    r49 r50  
    232232                        }
    233233                }
     234
     235                consumer := uc.ring.Consumer()
     236                for {
     237                        msg := consumer.Consume()
     238                        if msg == nil {
     239                                break
     240                        }
     241                        c.messages <- msg
     242                }
    234243        })
     244
    235245        return nil
    236246}
  • trunk/server.go

    r49 r50  
    9595        Hostname  string
    9696        Logger    Logger
     97        RingCap   int
    9798        Upstreams []Upstream // TODO: per-user
    9899
     
    104105func NewServer() *Server {
    105106        return &Server{
    106                 Logger: log.New(log.Writer(), "", log.LstdFlags),
    107                 users:  make(map[string]*user),
     107                Logger:  log.New(log.Writer(), "", log.LstdFlags),
     108                RingCap: 4096,
     109                users:   make(map[string]*user),
    108110        }
    109111}
  • trunk/upstream.go

    r46 r50  
    3333        user     *user
    3434        messages chan<- *irc.Message
     35        ring     *Ring
    3536
    3637        serverName            string
     
    6465                user:     u,
    6566                messages: msgs,
     67                ring:     NewRing(u.srv.RingCap),
    6668                channels: make(map[string]*upstreamChannel),
    6769        }
     
    303305                })
    304306        case "PRIVMSG":
     307                c.ring.Produce(msg)
    305308                c.user.forEachDownstream(func(dc *downstreamConn) {
    306309                        dc.messages <- msg
Note: See TracChangeset for help on using the changeset viewer.