GA3P7FOMATKDOGCZDYWLZJHAUNOWMRIP3BXTYFEH7PNWTTYYVLIAC
LOJL4HMYG7EOVZ5MSMCORDLDSRHWO2JPHMOTLMLQA7GPJNSVDXOQC
OY3CGEHQCHMCPWQAXCW2SZCDIDTE2OB6CRFIDT7E2TCFFKXQ43XAC
SXEYMYF7P4RZMZ46WPL4IZUTSQ2ATBWYZX7QNVMS3SGOYXYOHAGQC
VO5OQW4W2656DIYYRNZ3PO7TQ4JOKQ3GVWE5ALUTYVMX3WMXJOYQC
DNQHXWRZF6EWII3RGQ6HPGFD47BOOFH4FCQHSCACBS3RLQO3DNIQC
WKX5S4Z4DOB5S6A6X5V6ECZFCHQUMWRGX5XT4FBOG57P6HPWK7CAC
Z6FWHKCAGF5MJCIG327JK7SYXQ53KM2UVGVE3QL64KDVOUPKQ3HQC
TVVW53HZGYPODAXEQ4BFZNSPBOFG6JEDVOKIYIDZMWFAMOBKOR2QC
CCLLB7OIFNFYJZTG3UCI7536TOCWSCSXR67VELSB466R24WLJSDAC
self.w.write_all(s.as_bytes())?;
} else {
self.w.write_all(&s.as_bytes()[1..])?;
self.w.write_all(b"\n")?;
}
write!(self.w, "{} {}", marker, id)?;
for side in sides {
let h = side.to_base32();
write!(self.w, " [{}]", h.split_at(8).0)?;
fn output_conflict_marker(&mut self, s: &str) -> Result<(), std::io::Error>;
fn begin_conflict(&mut self) -> Result<(), std::io::Error> {
self.output_conflict_marker(START_MARKER)
fn output_conflict_marker(
&mut self,
s: &str,
id: usize,
sides: &[&Hash],
) -> Result<(), std::io::Error>;
fn begin_conflict(&mut self, id: usize, side: &[&Hash]) -> Result<(), std::io::Error> {
self.output_conflict_marker(START_MARKER, id, side)
fn begin_zombie_conflict(&mut self) -> Result<(), std::io::Error> {
self.begin_conflict()
fn begin_zombie_conflict(
&mut self,
id: usize,
add_del: &[&Hash],
) -> Result<(), std::io::Error> {
self.output_conflict_marker(START_MARKER, id, add_del)
fn begin_cyclic_conflict(&mut self) -> Result<(), std::io::Error> {
self.begin_conflict()
fn begin_cyclic_conflict(&mut self, id: usize) -> Result<(), std::io::Error> {
self.output_conflict_marker(START_MARKER, id, &[])
fn conflict_next(&mut self) -> Result<(), std::io::Error> {
self.output_conflict_marker(SEPARATOR)
fn conflict_next(&mut self, id: usize, side: &[&Hash]) -> Result<(), std::io::Error> {
self.output_conflict_marker(SEPARATOR, id, side)
fn end_conflict(&mut self) -> Result<(), std::io::Error> {
self.output_conflict_marker(END_MARKER)
fn end_conflict(&mut self, id: usize) -> Result<(), std::io::Error> {
self.output_conflict_marker(END_MARKER, id, &[])
fn end_cyclic_conflict(&mut self) -> Result<(), std::io::Error> {
self.output_conflict_marker(END_MARKER)
fn end_cyclic_conflict(&mut self, id: usize) -> Result<(), std::io::Error> {
self.output_conflict_marker(END_MARKER, id, &[])
debug!("{:?}", &s.as_bytes()[1..]);
self.w.write_all(&s.as_bytes()[1..])?;
debug!("{:?}", s.as_bytes());
}
write!(self.w, "{} {}", s, id)?;
for side in sides {
let h = side.to_base32();
write!(self.w, " [{}]", h.split_at(8).0)?;
self.w.write_all(s.as_bytes())?;
} else {
debug!("{:?}", &s.as_bytes()[1..]);
self.w.write_all(&s.as_bytes()[1..])?;
self.w.write_all(b"\n")?;
}
write!(self.w, "{} {}", s, id)?;
for side in sides {
let h = side.to_base32();
write!(self.w, " [{}]", h.split_at(8).0)?;
fn begin_conflict(&mut self) -> Result<(), std::io::Error> {
self.output_conflict_marker(START_MARKER)
fn begin_conflict(&mut self, id: usize, side: &[&Hash]) -> Result<(), std::io::Error> {
self.output_conflict_marker(START_MARKER, id, side)
fn begin_cyclic_conflict(&mut self) -> Result<(), std::io::Error> {
self.output_conflict_marker(START_MARKER)
fn begin_cyclic_conflict(&mut self, id: usize) -> Result<(), std::io::Error> {
self.output_conflict_marker(START_MARKER, id, &[])
let pos = match self.contents_a.last() {
Some(&b'\n') | None => {
let len = self.contents_a.len();
self.contents_a.extend(marker.as_bytes().iter().skip(1));
len
}
_ => {
let len = self.contents_a.len() + 1;
self.contents_a.extend(marker.as_bytes().iter());
len
}
};
match self.contents_a.last() {
Some(&b'\n') | None => {}
_ => self.contents_a.push(b'\n'),
}
let pos = self.contents_a.len();
use std::io::Write;
write!(self.contents_a, "{} {}", marker, id)?;
for side in sides {
let h = side.to_base32();
write!(self.contents_a, " [{}]", h.split_at(8).0)?;
}
self.contents_a.write_all(b"\n")?;
line_buf.conflict_next()?;
match elt.conflict[elt.side].path[elt.idx] {
PathElement::Scc { scc } => {
let vid = sccs[scc][0];
let ext = txn.get_external(&graph[vid].vertex.change)?.unwrap();
line_buf.conflict_next(id0, &[&ext.into()])?;
}
_ => {
line_buf.conflict_next(id0, &[])?;
}
}