github.com/ethereum-optimism/optimism@v1.7.2/packages/sdk/test/contracts/MockMessenger.sol (about)

     1  pragma solidity ^0.8.9;
     2  
     3  import { ICrossDomainMessenger } from "./ICrossDomainMessenger.sol";
     4  
     5  contract MockMessenger is ICrossDomainMessenger {
     6      function xDomainMessageSender() public view returns (address) {
     7          return address(0);
     8      }
     9  
    10      uint256 public nonce;
    11      mapping (bytes32 => bool) public successfulMessages;
    12      mapping (bytes32 => bool) public failedMessages;
    13  
    14      // Empty function to satisfy the interface.
    15      function sendMessage(
    16          address _target,
    17          bytes calldata _message,
    18          uint32 _gasLimit
    19      ) public {
    20          emit SentMessage(
    21              _target,
    22              msg.sender,
    23              _message,
    24              nonce,
    25              _gasLimit
    26          );
    27          nonce++;
    28      }
    29  
    30      function replayMessage(
    31          address _target,
    32          address _sender,
    33          bytes calldata _message,
    34          uint256 _queueIndex,
    35          uint32 _oldGasLimit,
    36          uint32 _newGasLimit
    37      ) public {
    38          emit SentMessage(
    39              _target,
    40              _sender,
    41              _message,
    42              nonce,
    43              _newGasLimit
    44          );
    45          nonce++;
    46      }
    47  
    48      struct SentMessageEventParams {
    49          address target;
    50          address sender;
    51          bytes message;
    52          uint256 messageNonce;
    53          uint256 minGasLimit;
    54          uint256 value;
    55      }
    56  
    57      function doNothing() public {
    58          return;
    59      }
    60  
    61      function triggerSentMessageEvent(
    62          SentMessageEventParams memory _params
    63      ) public {
    64          emit SentMessage(
    65              _params.target,
    66              _params.sender,
    67              _params.message,
    68              _params.messageNonce,
    69              _params.minGasLimit
    70          );
    71      }
    72  
    73      function triggerSentMessageEvents(
    74          SentMessageEventParams[] memory _params
    75      ) public {
    76          for (uint256 i = 0; i < _params.length; i++) {
    77              triggerSentMessageEvent(_params[i]);
    78          }
    79      }
    80  
    81      function triggerRelayedMessageEvents(
    82          bytes32[] memory _params
    83      ) public {
    84          for (uint256 i = 0; i < _params.length; i++) {
    85              emit RelayedMessage(_params[i]);
    86              successfulMessages[_params[i]] = true;
    87          }
    88      }
    89  
    90      function triggerFailedRelayedMessageEvents(
    91          bytes32[] memory _params
    92      ) public {
    93          for (uint256 i = 0; i < _params.length; i++) {
    94              emit FailedRelayedMessage(_params[i]);
    95              failedMessages[_params[i]] = true;
    96          }
    97      }
    98  }