12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- pragma solidity ^0.5.0;
- import "../access/roles/PauserRole.sol";
- /**
- * @dev Contract module which allows children to implement an emergency stop
- * mechanism that can be triggered by an authorized account.
- *
- * This module is used through inheritance. It will make available the
- * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
- * the functions of your contract. Note that they will not be pausable by
- * simply including this module, only once the modifiers are put in place.
- */
- contract Pausable is PauserRole {
- /**
- * @dev Emitted when the pause is triggered by a pauser (`account`).
- */
- event Paused(address account);
- /**
- * @dev Emitted when the pause is lifted by a pauser (`account`).
- */
- event Unpaused(address account);
- bool private _paused;
- /**
- * @dev Initializes the contract in unpaused state. Assigns the Pauser role
- * to the deployer.
- */
- constructor () internal {
- _paused = false;
- }
- /**
- * @dev Returns true if the contract is paused, and false otherwise.
- */
- function paused() public view returns (bool) {
- return _paused;
- }
- /**
- * @dev Modifier to make a function callable only when the contract is not paused.
- */
- modifier whenNotPaused() {
- require(!_paused, "Pausable: paused");
- _;
- }
- /**
- * @dev Modifier to make a function callable only when the contract is paused.
- */
- modifier whenPaused() {
- require(_paused, "Pausable: not paused");
- _;
- }
- /**
- * @dev Called by a pauser to pause, triggers stopped state.
- */
- function pause() public onlyPauser whenNotPaused {
- _paused = true;
- emit Paused(msg.sender);
- }
- /**
- * @dev Called by a pauser to unpause, returns to normal state.
- */
- function unpause() public onlyPauser whenPaused {
- _paused = false;
- emit Unpaused(msg.sender);
- }
- }
|