package native import ( "io" "sync" ) type readerTable struct { nextIndex int table map[int]io.Reader mutex sync.Mutex } func (bt *readerTable) Add(reader io.Reader) (index int) { bt.mutex.Lock() defer bt.mutex.Unlock() if bt.table == nil { bt.table = map[int]io.Reader{} } index = bt.nextIndex bt.table[index] = reader // TODO - Handle int overflow bt.nextIndex++ return } func (bt *readerTable) Get(index int) io.Reader { bt.mutex.Lock() defer bt.mutex.Unlock() return bt.table[index] }