func (p *PeerListener) add(addr string, con *(net.Conn)) chan *message.Message { /* Adds a new peer sender */ handlePanic() p.mu.Lock() defer p.mu.Unlock() if _, ok := p.m[addr]; ok { return nil } ch := make(chan *message.Message, CHAN_BUFFER_SIZE) cache_no := 0 var err error var storage *cache.Cache for { storage, err = cache.New(addr + "_" + strconv.Itoa(cache_no)) if err == nil { break } cache_no += 1 } conn := &ListenerConnection{ channel: ch, conn: con, is_alive: true, cache: storage, } p.m[addr] = conn return ch }
func NewBusSocket(nodeName string) (sock *BusSocket) { /* Creates a new bus socket */ handlePanic() cached, err := cache.New(nodeName) if err != nil { panic("Error occured while creating cache for node") } sock = &BusSocket{ listeners: &PeerListener{m: make(map[string]*ListenerConnection)}, senders: &PeerSender{m: make(map[string]*DialerConnection)}, receiver_chan: make(chan *message.Message), sender_chan: make(chan *message.Message), is_active: false, address: "", cached: cached, } go sock.updatepeers() // Call updatepeers to start listening on sender_chan return sock }