client: fix mango account reading
This commit is contained in:
parent
157b322635
commit
16290e07f4
|
@ -2,8 +2,10 @@ use std::sync::{Arc, RwLock};
|
||||||
|
|
||||||
use crate::chain_data::*;
|
use crate::chain_data::*;
|
||||||
|
|
||||||
|
use anchor_lang::Discriminator;
|
||||||
|
|
||||||
use mango_v4::accounts_zerocopy::LoadZeroCopy;
|
use mango_v4::accounts_zerocopy::LoadZeroCopy;
|
||||||
use mango_v4::state::MangoAccountValue;
|
use mango_v4::state::{MangoAccount, MangoAccountValue};
|
||||||
|
|
||||||
use anyhow::Context;
|
use anyhow::Context;
|
||||||
|
|
||||||
|
@ -31,7 +33,14 @@ impl AccountFetcher {
|
||||||
|
|
||||||
pub fn fetch_mango_account(&self, address: &Pubkey) -> anyhow::Result<MangoAccountValue> {
|
pub fn fetch_mango_account(&self, address: &Pubkey) -> anyhow::Result<MangoAccountValue> {
|
||||||
let acc = self.fetch_raw(address)?;
|
let acc = self.fetch_raw(address)?;
|
||||||
Ok(MangoAccountValue::from_bytes(acc.data())
|
|
||||||
|
let data = acc.data();
|
||||||
|
let disc_bytes = &data[0..8];
|
||||||
|
if disc_bytes != &MangoAccount::discriminator() {
|
||||||
|
anyhow::bail!("not a mango account at {}", address);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(MangoAccountValue::from_bytes(&data[8..])
|
||||||
.with_context(|| format!("loading mango account {}", address))?)
|
.with_context(|| format!("loading mango account {}", address))?)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,11 +21,14 @@ pub fn is_mango_account<'a>(
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
let mango_account = MangoAccountRefWithHeader::from_bytes(&data[8..]).expect("always ok");
|
if let Ok(mango_account) = MangoAccountRefWithHeader::from_bytes(&data[8..]) {
|
||||||
if mango_account.fixed.group != *group_id {
|
if mango_account.fixed.group != *group_id {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
Some(mango_account)
|
Some(mango_account)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn is_mango_bank<'a>(
|
pub fn is_mango_bank<'a>(
|
||||||
|
|
Loading…
Reference in New Issue