Coverage Summary for Class: CompositeProgramListener (org.ethereum.vm.program.listener)

Class Class, % Method, % Line, %
CompositeProgramListener 100% (1/1) 27.3% (3/11) 13.5% (5/37)


1 /* 2  * This file is part of RskJ 3  * Copyright (C) 2017 RSK Labs Ltd. 4  * (derived from ethereumJ library, Copyright (c) 2016 <ether.camp>) 5  * 6  * This program is free software: you can redistribute it and/or modify 7  * it under the terms of the GNU Lesser General Public License as published by 8  * the Free Software Foundation, either version 3 of the License, or 9  * (at your option) any later version. 10  * 11  * This program is distributed in the hope that it will be useful, 12  * but WITHOUT ANY WARRANTY; without even the implied warranty of 13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14  * GNU Lesser General Public License for more details. 15  * 16  * You should have received a copy of the GNU Lesser General Public License 17  * along with this program. If not, see <http://www.gnu.org/licenses/>. 18  */ 19  20 package org.ethereum.vm.program.listener; 21  22 import org.ethereum.vm.DataWord; 23  24 import java.util.ArrayList; 25 import java.util.List; 26  27  28 public class CompositeProgramListener implements ProgramListener { 29  30  private List<ProgramListener> listeners = new ArrayList<>(); 31  32  @Override 33  public void onMemoryExtend(int delta) { 34  for (ProgramListener listener : listeners) { 35  listener.onMemoryExtend(delta); 36  } 37  } 38  39  @Override 40  public void onMemoryWrite(int address, byte[] data, int size) { 41  for (ProgramListener listener : listeners) { 42  listener.onMemoryWrite(address, data, size); 43  } 44  } 45  46  @Override 47  public void onStackPop() { 48  for (ProgramListener listener : listeners) { 49  listener.onStackPop(); 50  } 51  } 52  53  @Override 54  public void onStackPush(DataWord value) { 55  for (ProgramListener listener : listeners) { 56  listener.onStackPush(value); 57  } 58  } 59  60  @Override 61  public void onStackSwap(int from, int to) { 62  for (ProgramListener listener : listeners) { 63  listener.onStackSwap(from, to); 64  } 65  } 66  67  @Override 68  public void onStoragePut(DataWord key, DataWord value) { 69  for (ProgramListener listener : listeners) { 70  listener.onStoragePut(key, value); 71  } 72  } 73  74  @Override 75  public void onStoragePut(DataWord key, byte[] value) { 76  for (ProgramListener listener : listeners) { 77  listener.onStoragePut(key, value); 78  } 79  } 80  81  @Override 82  public void onStorageClear() { 83  for (ProgramListener listener : listeners) { 84  listener.onStorageClear(); 85  } 86  } 87  88  public void addListener(ProgramListener listener) { 89  listeners.add(listener); 90  } 91  92  public boolean isEmpty() { 93  return listeners.isEmpty(); 94  } 95 }