Add message and return assigned key.
(self, message)
| 949 | self._locked = False |
| 950 | |
| 951 | def add(self, message): |
| 952 | """Add message and return assigned key.""" |
| 953 | keys = self.keys() |
| 954 | if len(keys) == 0: |
| 955 | new_key = 1 |
| 956 | else: |
| 957 | new_key = max(keys) + 1 |
| 958 | new_path = os.path.join(self._path, str(new_key)) |
| 959 | f = _create_carefully(new_path) |
| 960 | closed = False |
| 961 | try: |
| 962 | if self._locked: |
| 963 | _lock_file(f) |
| 964 | try: |
| 965 | try: |
| 966 | self._dump_message(message, f) |
| 967 | except BaseException: |
| 968 | # Unlock and close so it can be deleted on Windows |
| 969 | if self._locked: |
| 970 | _unlock_file(f) |
| 971 | _sync_close(f) |
| 972 | closed = True |
| 973 | os.remove(new_path) |
| 974 | raise |
| 975 | if isinstance(message, MHMessage): |
| 976 | self._dump_sequences(message, new_key) |
| 977 | finally: |
| 978 | if self._locked: |
| 979 | _unlock_file(f) |
| 980 | finally: |
| 981 | if not closed: |
| 982 | _sync_close(f) |
| 983 | return new_key |
| 984 | |
| 985 | def remove(self, key): |
| 986 | """Remove the keyed message; raise KeyError if it doesn't exist.""" |
no test coverage detected