manifest/program/processor/
expand_market.rs1use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, pubkey::Pubkey};
2
3use crate::{
4 program::get_dynamic_account, state::MarketRef, validation::loaders::ExpandMarketContext,
5};
6use std::cell::Ref;
7
8use super::expand_market;
9
10pub(crate) fn process_expand_market(
11 _program_id: &Pubkey,
12 accounts: &[AccountInfo],
13 _data: &[u8],
14) -> ProgramResult {
15 let expand_market_context: ExpandMarketContext = ExpandMarketContext::load(accounts)?;
16 let ExpandMarketContext { market, payer, .. } = expand_market_context;
17
18 let has_two_free_blocks: bool = {
19 let market_data: Ref<'_, &mut [u8]> = market.try_borrow_data()?;
20 let dynamic_account: MarketRef = get_dynamic_account(&market_data);
21 dynamic_account.has_two_free_blocks()
22 };
23
24 if !has_two_free_blocks {
25 expand_market(&payer, &market)
26 } else {
27 Ok(())
28 }
29}