Commit 1b971ade by dongshufeng

fix bug in dynamic topo logic

parent 9b900f6a
......@@ -98,6 +98,7 @@ pub unsafe fn run(ptr: i32, len: u32) -> u64 {
}
// build tns
let mut cn_tn: HashMap<u64, usize> = HashMap::with_capacity(terminal_cn.len() / 2);
let mut not_dealed = Vec::new();
for v in edges {
let cn1 = v[0];
let cn2 = v[1];
......@@ -136,10 +137,18 @@ pub unsafe fn run(ptr: i32, len: u32) -> u64 {
}
// this is open switch or not switch
else {
if !cn_tn.contains_key(&cn1) {
not_dealed.push(cn1);
}
if !cn_tn.contains_key(&cn2) {
not_dealed.push(cn2);
}
}
}
for cn in not_dealed {
if !cn_tn.contains_key(&cn) {
let tn = cn_tn.len() + 1;
cn_tn.insert(cn1, tn);
let tn = tn + 1;
cn_tn.insert(cn2, tn);
cn_tn.insert(cn, tn);
}
}
// get outgoing edges
......
......@@ -7,9 +7,9 @@ pub(crate) fn read_points(records: &mut StringRecordsIter<&[u8]>) -> Result<Vec<
// 按行读取csv
let mut row = 0;
loop {
points.push(vec![0u64; 2]);
match records.next() {
Some(Ok(record)) => {
points.push(vec![0u64; 2]);
let mut col = 0;
for str in record.iter() {
if let Ok(id) = str.parse() {
......@@ -43,9 +43,9 @@ pub(crate) fn read_terminals(records: &mut StringRecordsIter<&[u8]>) -> Result<V
// 按行读取csv
let mut row = 0;
loop {
terminals.push(vec![0u64; 3]);
match records.next() {
Some(Ok(record)) => {
terminals.push(vec![0u64; 3]);
let mut col = 0;
for str in record.iter() {
if let Ok(id) = str.parse() {
......@@ -82,9 +82,9 @@ pub(crate) fn read_edges(records: &mut StringRecordsIter<&[u8]>)
let swich_type = PsRsrType::Switch as u16;
// 按行读取csv
loop {
edges.push(vec![0u64; 3]);
match records.next() {
Some(Ok(record)) => {
edges.push(vec![0u64; 3]);
let mut col = 0;
let mut is_switch = false;
for str in record.iter() {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论