this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 177 lines 4.7 kB view raw
1defmodule Hobbes.Structs do 2 @moduledoc """ 3 This module contains data structures which are shared across 4 multiple types of Server. 5 """ 6 7 alias Hobbes.Utils 8 9 defmodule Cluster do 10 # Hide :servers from inspect output because they are spammy and unhelpful 11 @derive {Inspect, except: [:servers]} 12 @type t :: %__MODULE__{ 13 coordinators: [term], 14 generation: non_neg_integer, 15 tlog_generations: [TLogGeneration.t], 16 status: :recovering | :normal, 17 manager_pid: pid, 18 servers: %{non_neg_integer => Hobbes.Structs.Server.t}, 19 } 20 @enforce_keys [ 21 :coordinators, 22 :generation, 23 :tlog_generations, 24 :status, 25 :manager_pid, 26 :servers, 27 ] 28 defstruct @enforce_keys 29 end 30 31 defmodule TLogGeneration do 32 @type t :: %__MODULE__{ 33 generation: non_neg_integer, 34 start_version: non_neg_integer, 35 end_version: non_neg_integer | nil, 36 replication_factor: 1 | 2 | 3, 37 tlog_ids: [non_neg_integer], 38 } 39 @enforce_keys [:generation, :start_version, :replication_factor, :tlog_ids] 40 defstruct @enforce_keys ++ [:end_version] 41 end 42 43 defmodule Server do 44 @type t :: %__MODULE__{ 45 type: module, 46 id: integer, 47 pid: pid, 48 } 49 @enforce_keys [:type, :id, :pid] 50 defstruct @enforce_keys 51 end 52 53 defmodule SupervisorStatus do 54 @type t :: %__MODULE__{ 55 node: atom, 56 pid: pid, 57 generation_failed?: boolean, 58 slots: map | nil, 59 } 60 @enforce_keys [ 61 :node, 62 :pid, 63 :generation_failed?, 64 :slots, 65 ] 66 defstruct @enforce_keys 67 end 68 69 defmodule TLogStatus do 70 @type t :: %__MODULE__{ 71 id: non_neg_integer, 72 pid: pid, 73 locked?: boolean, 74 known_committed_version: non_neg_integer, 75 durable_version: non_neg_integer, 76 min_popped_version: non_neg_integer | -1, 77 } 78 @enforce_keys [ 79 :id, 80 :pid, 81 :locked?, 82 :known_committed_version, 83 :durable_version, 84 :min_popped_version, 85 ] 86 defstruct @enforce_keys 87 end 88 89 defmodule CommitTxn do 90 @type t :: %__MODULE__{ 91 read_version: non_neg_integer, 92 read_conflicts: [binary | {binary, binary}], 93 write_conflicts: [binary | {binary, binary}], 94 mutations: [Utils.mutation], 95 from: term, 96 batch_index: non_neg_integer | nil, 97 } 98 @enforce_keys [:read_version, :read_conflicts, :write_conflicts, :mutations] 99 defstruct @enforce_keys ++ [:from, :batch_index] 100 end 101 102 defmodule ResolveBatch do 103 @type t :: %__MODULE__{ 104 commit_buffer_id: integer, 105 commit_version: non_neg_integer, 106 prev_commit_version: non_neg_integer, 107 transactions: [ 108 # {read_version, read_conflicts, write_conflicts, meta_mutations} 109 { 110 non_neg_integer, 111 [binary | {binary, binary}], 112 [binary | {binary, binary}], 113 [Utils.mutation], 114 } 115 ] 116 } 117 @enforce_keys [:commit_buffer_id, :commit_version, :prev_commit_version, :transactions] 118 defstruct @enforce_keys 119 end 120 121 defmodule LogBatch do 122 @type t :: %__MODULE__{ 123 commit_buffer_id: integer, 124 commit_version: non_neg_integer, 125 prev_commit_version: non_neg_integer, 126 tagged_mutations: [{Utils.tag_list, Utils.numbered_mutation}], 127 last_committed_version: non_neg_integer, 128 } 129 @enforce_keys [:commit_buffer_id, :commit_version, :prev_commit_version, :tagged_mutations, :last_committed_version] 130 defstruct @enforce_keys 131 end 132 133 defmodule PeekResult do 134 @type t :: %__MODULE__{ 135 tlog_id: non_neg_integer, 136 nonce: reference, 137 known_committed_version: non_neg_integer, 138 start_version: non_neg_integer, 139 end_version: non_neg_integer, 140 batches: list, 141 } 142 @enforce_keys [:tlog_id, :nonce, :known_committed_version, :start_version, :end_version, :batches] 143 defstruct @enforce_keys 144 end 145 146 defmodule RangeResult do 147 @type t :: %__MODULE__{ 148 pairs: [{binary, binary | :deleted | nil}], 149 count: non_neg_integer, 150 range: {binary, binary} | nil, 151 more: boolean, 152 } 153 @enforce_keys [:pairs, :more] 154 defstruct [:pairs, :count, :range, :more] 155 end 156 157 defmodule StorageStats do 158 @type t :: %__MODULE__{ 159 server_id: non_neg_integer, 160 used_bytes: non_neg_integer, 161 free_bytes: non_neg_integer, 162 } 163 @enforce_keys [:server_id, :used_bytes, :free_bytes] 164 defstruct @enforce_keys 165 end 166 167 defmodule ShardStats do 168 @type t :: %__MODULE__{ 169 start_key: binary, 170 end_key: binary, 171 size_bytes: non_neg_integer, 172 midpoint_key: binary, 173 } 174 @enforce_keys [:start_key, :end_key, :size_bytes, :midpoint_key] 175 defstruct @enforce_keys 176 end 177end