| 35 | |
| 36 | |
| 37 | class Transaction(NullMessage): |
| 38 | |
| 39 | def __init__(self, mtype, mname): |
| 40 | self._trans = sdk().new_transaction(mtype, mname) |
| 41 | self._py = isinstance(self._trans, PyTransaction) |
| 42 | self._completed = False |
| 43 | |
| 44 | def complete(self): |
| 45 | if not self._completed: |
| 46 | self._trans.complete(self._trans) |
| 47 | self._completed = True |
| 48 | return self |
| 49 | |
| 50 | def set_status(self, status): |
| 51 | if self._py: |
| 52 | self._trans.setStatus(self._trans, status) |
| 53 | else: |
| 54 | self._trans.setStatus(self._trans, _(status)) |
| 55 | return self |
| 56 | |
| 57 | def __add_data(self, data): |
| 58 | if self._py: |
| 59 | self._trans.addData(self._trans, data) |
| 60 | else: |
| 61 | self._trans.addData(self._trans, _(data)) |
| 62 | |
| 63 | def __add_kv(self, key, val): |
| 64 | if self._py: |
| 65 | self._trans.addKV(self._trans, key, val) |
| 66 | else: |
| 67 | self._trans.addKV(self._trans, _(key), _(val)) |
| 68 | |
| 69 | def add_data(self, data, val=None): |
| 70 | if val is None: |
| 71 | self.__add_data(data) |
| 72 | else: |
| 73 | self.__add_kv(data, val) |
| 74 | return self |
| 75 | |
| 76 | def set_duration(self, duration): |
| 77 | self._trans.setDurationInMillis(self._trans, int(duration)) |
| 78 | return self |
| 79 | |
| 80 | def set_duration_start(self, timestamp): |
| 81 | self._trans.setDurationStart(self._trans, int(timestamp)) |
| 82 | return self |
| 83 | |
| 84 | def set_timestamp(self, timestamp): |
| 85 | self._trans.setTimestamp(self._trans, int(timestamp)) |
| 86 | return self |
| 87 | |
| 88 | def __enter__(self): |
| 89 | return self |
| 90 | |
| 91 | def __exit__(self, exc_type, exc_val, exc_tb): |
| 92 | if exc_type is not None: |
| 93 | trace = traceback.format_exception(exc_type, exc_val, exc_tb) |
| 94 | log_exception( |