manifest/program/processor/
expand_market.rs

1use 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}