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