Giter VIP home page Giter VIP logo

rpool's Introduction

Archived project. No maintenance.

This project is not maintained anymore and is archived. Feel free to fork and use make your own changes if needed.

Thanks all for their work on this project.

RPool GoDoc Build Status

Reader Pool is a thread safe reader pool for iocommon.ReadSeekCloser interface. It can be used to manage and reuse readers.

Install and Usage

Install the package with:

go get github.com/moisespsena-go/rpool

Please vendor the package with one of the releases: https://github.com/moisespsena-go/rpool/releases. master branch is development branch and will contain always the latest changes.

Example

// create a factory() to be used with channel based pool
factory    := func() (iocommon.ReadSeekCloser, error) { return os.Open("file.txt") }

// create a new channel based pool with an initial capacity of 5 and maximum
// capacity of 30. The factory will create 5 initial readers and put it
// into the pool.
p, err := rpool.NewChannelPool(5, 30, factory)

// now you can get a reader from the pool, if there is no reader
// available it will create a new one via the factory function.
reader, err := p.Get()

// do something with reader and put it back to the pool by closing the reader
// (this doesn't close the underlying reader instead it's putting it back
// to the pool).
reader.Close()

// close the underlying reader instead of returning it to pool
// it is useful when acceptor has already closed reader and reader.Write() returns error
if pr, ok := reader.(*rpool.PoolReader); ok {
  pr.MarkUnusable()
  pr.Close()
}

// close pool any time you want, this closes all the readers inside a pool
p.Close()

// currently available readers in the pool
current := p.Len()

Credits

License

The MIT License (MIT) - see LICENSE for more details

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.