mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-05-30 15:42:25 +00:00
♻️ Extract runtime file state helpers
This commit is contained in:
+7
-71
@@ -9,94 +9,30 @@ pub(all) enum RuntimeSink {
|
|||||||
QueuedFile(QueuedSink[FileSink])
|
QueuedFile(QueuedSink[FileSink])
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct RuntimeFileState {
|
pub type RuntimeFileState = @utils.RuntimeFileState
|
||||||
file : FileSinkState
|
|
||||||
queued : Bool
|
|
||||||
pending_count : Int
|
|
||||||
dropped_count : Int
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn RuntimeFileState::new(
|
|
||||||
file : FileSinkState,
|
|
||||||
queued~ : Bool = false,
|
|
||||||
pending_count~ : Int = 0,
|
|
||||||
dropped_count~ : Int = 0,
|
|
||||||
) -> RuntimeFileState {
|
|
||||||
{ file, queued, pending_count, dropped_count }
|
|
||||||
}
|
|
||||||
|
|
||||||
fn file_sink_policy_to_json_value(policy : FileSinkPolicy) -> @json_parser.JsonValue {
|
|
||||||
let obj : Map[String, @json_parser.JsonValue] = {
|
|
||||||
"append": @json_parser.JsonValue::Bool(policy.append),
|
|
||||||
"auto_flush": @json_parser.JsonValue::Bool(policy.auto_flush),
|
|
||||||
}
|
|
||||||
match policy.rotation {
|
|
||||||
None => obj["rotation"] = @json_parser.JsonValue::Null
|
|
||||||
Some(rotation) => obj["rotation"] = file_rotation_config_to_json(rotation)
|
|
||||||
}
|
|
||||||
@json_parser.JsonValue::Object(obj)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn file_sink_policy_to_json(policy : FileSinkPolicy) -> @json_parser.JsonValue {
|
pub fn file_sink_policy_to_json(policy : FileSinkPolicy) -> @json_parser.JsonValue {
|
||||||
file_sink_policy_to_json_value(policy)
|
@utils.file_sink_policy_to_json(policy)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn stringify_file_sink_policy(policy : FileSinkPolicy, pretty~ : Bool = false) -> String {
|
pub fn stringify_file_sink_policy(policy : FileSinkPolicy, pretty~ : Bool = false) -> String {
|
||||||
let value = file_sink_policy_to_json_value(policy)
|
@utils.stringify_file_sink_policy(policy, pretty=pretty)
|
||||||
if pretty {
|
|
||||||
@json_parser.stringify_pretty(value, 2)
|
|
||||||
} else {
|
|
||||||
@json_parser.stringify(value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn file_sink_state_to_json_value(state : FileSinkState) -> @json_parser.JsonValue {
|
|
||||||
let obj : Map[String, @json_parser.JsonValue] = {
|
|
||||||
"path": @json_parser.JsonValue::String(state.path),
|
|
||||||
"available": @json_parser.JsonValue::Bool(state.available),
|
|
||||||
"append": @json_parser.JsonValue::Bool(state.append),
|
|
||||||
"auto_flush": @json_parser.JsonValue::Bool(state.auto_flush),
|
|
||||||
"open_failures": @json_parser.JsonValue::Number(state.open_failures.to_double()),
|
|
||||||
"write_failures": @json_parser.JsonValue::Number(state.write_failures.to_double()),
|
|
||||||
"flush_failures": @json_parser.JsonValue::Number(state.flush_failures.to_double()),
|
|
||||||
"rotation_failures": @json_parser.JsonValue::Number(state.rotation_failures.to_double()),
|
|
||||||
}
|
|
||||||
match state.rotation {
|
|
||||||
None => obj["rotation"] = @json_parser.JsonValue::Null
|
|
||||||
Some(rotation) => obj["rotation"] = file_rotation_config_to_json(rotation)
|
|
||||||
}
|
|
||||||
@json_parser.JsonValue::Object(obj)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn file_sink_state_to_json(state : FileSinkState) -> @json_parser.JsonValue {
|
pub fn file_sink_state_to_json(state : FileSinkState) -> @json_parser.JsonValue {
|
||||||
file_sink_state_to_json_value(state)
|
@utils.file_sink_state_to_json(state)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn stringify_file_sink_state(state : FileSinkState, pretty~ : Bool = false) -> String {
|
pub fn stringify_file_sink_state(state : FileSinkState, pretty~ : Bool = false) -> String {
|
||||||
let value = file_sink_state_to_json_value(state)
|
@utils.stringify_file_sink_state(state, pretty=pretty)
|
||||||
if pretty {
|
|
||||||
@json_parser.stringify_pretty(value, 2)
|
|
||||||
} else {
|
|
||||||
@json_parser.stringify(value)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn runtime_file_state_to_json(state : RuntimeFileState) -> @json_parser.JsonValue {
|
pub fn runtime_file_state_to_json(state : RuntimeFileState) -> @json_parser.JsonValue {
|
||||||
@json_parser.JsonValue::Object({
|
@utils.runtime_file_state_to_json(state)
|
||||||
"file": file_sink_state_to_json_value(state.file),
|
|
||||||
"queued": @json_parser.JsonValue::Bool(state.queued),
|
|
||||||
"pending_count": @json_parser.JsonValue::Number(state.pending_count.to_double()),
|
|
||||||
"dropped_count": @json_parser.JsonValue::Number(state.dropped_count.to_double()),
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn stringify_runtime_file_state(state : RuntimeFileState, pretty~ : Bool = false) -> String {
|
pub fn stringify_runtime_file_state(state : RuntimeFileState, pretty~ : Bool = false) -> String {
|
||||||
let value = runtime_file_state_to_json(state)
|
@utils.stringify_runtime_file_state(state, pretty=pretty)
|
||||||
if pretty {
|
|
||||||
@json_parser.stringify_pretty(value, 2)
|
|
||||||
} else {
|
|
||||||
@json_parser.stringify(value)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub impl Sink for RuntimeSink with write(self, rec) {
|
pub impl Sink for RuntimeSink with write(self, rec) {
|
||||||
|
|||||||
@@ -0,0 +1,89 @@
|
|||||||
|
pub struct RuntimeFileState {
|
||||||
|
file : FileSinkState
|
||||||
|
queued : Bool
|
||||||
|
pending_count : Int
|
||||||
|
dropped_count : Int
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn RuntimeFileState::new(
|
||||||
|
file : FileSinkState,
|
||||||
|
queued~ : Bool = false,
|
||||||
|
pending_count~ : Int = 0,
|
||||||
|
dropped_count~ : Int = 0,
|
||||||
|
) -> RuntimeFileState {
|
||||||
|
{ file, queued, pending_count, dropped_count }
|
||||||
|
}
|
||||||
|
|
||||||
|
fn file_sink_policy_to_json_value(policy : FileSinkPolicy) -> @json_parser.JsonValue {
|
||||||
|
let obj : Map[String, @json_parser.JsonValue] = {
|
||||||
|
"append": @json_parser.JsonValue::Bool(policy.append),
|
||||||
|
"auto_flush": @json_parser.JsonValue::Bool(policy.auto_flush),
|
||||||
|
}
|
||||||
|
match policy.rotation {
|
||||||
|
None => obj["rotation"] = @json_parser.JsonValue::Null
|
||||||
|
Some(rotation) => obj["rotation"] = file_rotation_config_to_json(rotation)
|
||||||
|
}
|
||||||
|
@json_parser.JsonValue::Object(obj)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn file_sink_policy_to_json(policy : FileSinkPolicy) -> @json_parser.JsonValue {
|
||||||
|
file_sink_policy_to_json_value(policy)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn stringify_file_sink_policy(policy : FileSinkPolicy, pretty~ : Bool = false) -> String {
|
||||||
|
let value = file_sink_policy_to_json_value(policy)
|
||||||
|
if pretty {
|
||||||
|
@json_parser.stringify_pretty(value, 2)
|
||||||
|
} else {
|
||||||
|
@json_parser.stringify(value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn file_sink_state_to_json_value(state : FileSinkState) -> @json_parser.JsonValue {
|
||||||
|
let obj : Map[String, @json_parser.JsonValue] = {
|
||||||
|
"path": @json_parser.JsonValue::String(state.path),
|
||||||
|
"available": @json_parser.JsonValue::Bool(state.available),
|
||||||
|
"append": @json_parser.JsonValue::Bool(state.append),
|
||||||
|
"auto_flush": @json_parser.JsonValue::Bool(state.auto_flush),
|
||||||
|
"open_failures": @json_parser.JsonValue::Number(state.open_failures.to_double()),
|
||||||
|
"write_failures": @json_parser.JsonValue::Number(state.write_failures.to_double()),
|
||||||
|
"flush_failures": @json_parser.JsonValue::Number(state.flush_failures.to_double()),
|
||||||
|
"rotation_failures": @json_parser.JsonValue::Number(state.rotation_failures.to_double()),
|
||||||
|
}
|
||||||
|
match state.rotation {
|
||||||
|
None => obj["rotation"] = @json_parser.JsonValue::Null
|
||||||
|
Some(rotation) => obj["rotation"] = file_rotation_config_to_json(rotation)
|
||||||
|
}
|
||||||
|
@json_parser.JsonValue::Object(obj)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn file_sink_state_to_json(state : FileSinkState) -> @json_parser.JsonValue {
|
||||||
|
file_sink_state_to_json_value(state)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn stringify_file_sink_state(state : FileSinkState, pretty~ : Bool = false) -> String {
|
||||||
|
let value = file_sink_state_to_json_value(state)
|
||||||
|
if pretty {
|
||||||
|
@json_parser.stringify_pretty(value, 2)
|
||||||
|
} else {
|
||||||
|
@json_parser.stringify(value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn runtime_file_state_to_json(state : RuntimeFileState) -> @json_parser.JsonValue {
|
||||||
|
@json_parser.JsonValue::Object({
|
||||||
|
"file": file_sink_state_to_json_value(state.file),
|
||||||
|
"queued": @json_parser.JsonValue::Bool(state.queued),
|
||||||
|
"pending_count": @json_parser.JsonValue::Number(state.pending_count.to_double()),
|
||||||
|
"dropped_count": @json_parser.JsonValue::Number(state.dropped_count.to_double()),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn stringify_runtime_file_state(state : RuntimeFileState, pretty~ : Bool = false) -> String {
|
||||||
|
let value = runtime_file_state_to_json(state)
|
||||||
|
if pretty {
|
||||||
|
@json_parser.stringify_pretty(value, 2)
|
||||||
|
} else {
|
||||||
|
@json_parser.stringify(value)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user