github.com/pdaian/flashboys2@v0.0.0-20190718175736-b101c35361f0/go-ethereum/eth/CircularBufferQueue/CircularBufferQueue.go (about)

     1  package CircularBufferQueue
     2  
     3  type EthereumRawTransaction struct {
     4  	MyIP        string
     5  	FromString  string
     6  	RecipString string
     7  	PeerString 	string
     8  	PeerNameString string
     9  	IpStringSplit string
    10  	IpPort  string
    11  	TimeString string
    12  	TxNonce uint64
    13  	Gprice string
    14  	Glimit uint64
    15  	TxAmount string
    16  	TxPayload string
    17  	TxVString string
    18  	TxRString string
    19  	TxSString string
    20  	TxHash string
    21  }
    22  
    23  
    24  
    25  type FIFOTransactionQueue struct {
    26  	Queue [1000]EthereumRawTransaction
    27  	Tail  int
    28  }
    29  
    30  func (f * FIFOTransactionQueue) New() {
    31  	f.Tail = 0
    32  	for counter := 0; counter < 1000; counter ++ {
    33  		f.Queue[counter] = EthereumRawTransaction{
    34  			"",
    35  			"",
    36  			"",
    37  			"",
    38  			"",
    39  			"",
    40  			"",
    41  			"",
    42  			0,
    43  			"",
    44  			0,
    45  			"",
    46  			"",
    47  			"",
    48  			"",
    49  			"",
    50  			"",
    51  		}
    52  	}
    53  }
    54  
    55  func (f * FIFOTransactionQueue) Insert(transaction EthereumRawTransaction) {
    56  	f.Tail = f.Tail + 1
    57  	if f.Tail > 999 {
    58  		f.Tail = 0
    59  	}
    60  	f.Queue[f.Tail] = transaction
    61  }