rsfbclient_core/
transaction.rs1use crate::*;
7
8#[derive(Debug, Eq, PartialEq, Copy, Clone)]
10pub enum TrIsolationLevel {
11 Concurrency,
13 Consistency,
15 ReadCommited(TrRecordVersion),
17}
18
19impl Default for TrIsolationLevel {
20 fn default() -> Self {
21 Self::ReadCommited(TrRecordVersion::default())
22 }
23}
24
25impl From<TrIsolationLevel> for u8 {
26 fn from(tp: TrIsolationLevel) -> Self {
27 match tp {
28 TrIsolationLevel::Concurrency => ibase::isc_tpb_concurrency as u8,
29 TrIsolationLevel::Consistency => ibase::isc_tpb_consistency as u8,
30 TrIsolationLevel::ReadCommited(_) => ibase::isc_tpb_read_committed as u8,
31 }
32 }
33}
34
35#[derive(Debug, Eq, PartialEq, Copy, Clone)]
36pub enum TrOp {
38 Commit,
39 CommitRetaining,
40 Rollback,
41 RollbackRetaining,
42}
43
44#[derive(Debug, Eq, PartialEq, Copy, Clone)]
46pub enum TrLockResolution {
47 NoWait,
49 Wait(Option<u32>),
53}
54
55impl Default for TrLockResolution {
56 fn default() -> Self {
57 Self::Wait(None)
58 }
59}
60
61impl From<TrLockResolution> for u8 {
62 fn from(tp: TrLockResolution) -> Self {
63 match tp {
64 TrLockResolution::NoWait => ibase::isc_tpb_nowait as u8,
65 TrLockResolution::Wait(_) => ibase::isc_tpb_wait as u8,
66 }
67 }
68}
69
70#[repr(u8)]
72#[derive(Debug, Eq, PartialEq, Copy, Clone)]
73pub enum TrDataAccessMode {
74 ReadWrite = ibase::isc_tpb_write as u8,
76 ReadOnly = ibase::isc_tpb_read as u8,
78}
79
80impl Default for TrDataAccessMode {
81 fn default() -> Self {
82 Self::ReadWrite
83 }
84}
85
86#[repr(u8)]
88#[derive(Debug, Eq, PartialEq, Copy, Clone)]
89pub enum TrRecordVersion {
90 RecordVersion = ibase::isc_tpb_rec_version as u8,
92 NoRecordVersion = ibase::isc_tpb_no_rec_version as u8,
94}
95
96impl Default for TrRecordVersion {
97 fn default() -> Self {
98 Self::NoRecordVersion
99 }
100}
101
102#[derive(Debug, Eq, PartialEq, Copy, Clone)]
104pub struct TransactionConfiguration {
105 pub data_access: TrDataAccessMode,
106 pub isolation: TrIsolationLevel,
107 pub lock_resolution: TrLockResolution,
108}
109
110impl Default for TransactionConfiguration {
111 fn default() -> Self {
112 Self {
113 data_access: TrDataAccessMode::default(),
114 isolation: TrIsolationLevel::default(),
115 lock_resolution: TrLockResolution::default(),
116 }
117 }
118}