github.com/Mericusta/go-stp@v0.6.8/queue.go (about)

     1  package stp
     2  
     3  type PoolDequeue interface {
     4  	PushHead(val any) bool
     5  	PopHead() (any, bool)
     6  	PopTail() (any, bool)
     7  }
     8  
     9  func NewPoolDequeue(n int) PoolDequeue {
    10  	d := &poolDequeue{
    11  		vals: make([]eface, n),
    12  	}
    13  	d.headTail = d.pack(0, 0)
    14  	return d
    15  }
    16  
    17  func (d *poolDequeue) PushHead(val any) bool {
    18  	return d.pushHead(val)
    19  }
    20  
    21  func (d *poolDequeue) PopHead() (any, bool) {
    22  	return d.popHead()
    23  }
    24  
    25  func (d *poolDequeue) PopTail() (any, bool) {
    26  	return d.popTail()
    27  }
    28  
    29  func NewPoolChain() PoolDequeue {
    30  	return new(poolChain)
    31  }
    32  
    33  func (c *poolChain) PushHead(val any) bool {
    34  	c.pushHead(val)
    35  	return true
    36  }
    37  
    38  func (c *poolChain) PopHead() (any, bool) {
    39  	return c.popHead()
    40  }
    41  
    42  func (c *poolChain) PopTail() (any, bool) {
    43  	return c.popTail()
    44  }
    45  
    46  // func NewRevertPoolDequeue(n int) PoolDequeue {
    47  // 	d := &revertPoolDequeue{
    48  // 		vals: make([]eface, n),
    49  // 	}
    50  // 	d.headTail = d.pack(1<<dequeueBits-500, 1<<dequeueBits-500)
    51  // 	return d
    52  // }
    53  
    54  // func (d *revertPoolDequeue) PushHead(val any) bool {
    55  // 	return d.pushHead(val)
    56  // }
    57  
    58  // func (d *revertPoolDequeue) PopHead() (any, bool) {
    59  // 	return d.popHead()
    60  // }
    61  
    62  // func (d *revertPoolDequeue) PopTail() (any, bool) {
    63  // 	return d.popTail()
    64  // }
    65  
    66  // func NewRPoolChain() PoolDequeue {
    67  // 	return new(revertPoolChain)
    68  // }
    69  
    70  // func (c *revertPoolChain) PushHead(val any) bool {
    71  // 	c.pushHead(val)
    72  // 	return true
    73  // }
    74  
    75  // func (c *revertPoolChain) PopHead() (any, bool) {
    76  // 	return c.popHead()
    77  // }
    78  
    79  // func (c *revertPoolChain) PopTail() (any, bool) {
    80  // 	return c.popTail()
    81  // }