mdp/
entrypoint.rs

1use crate::{instructions::Instruction, processors::*};
2use borsh::BorshDeserialize;
3use solana_program::{
4    account_info::AccountInfo, entrypoint::ProgramResult, program_error::ProgramError,
5    pubkey::Pubkey,
6};
7
8solana_program::entrypoint!(process);
9
10/// Main program entrypoint for processing supported instructions
11pub fn process<'a>(
12    program_id: &Pubkey,
13    accounts: &'a [AccountInfo<'a>],
14    data: &[u8],
15) -> ProgramResult {
16    if *program_id != crate::ID {
17        return Err(ProgramError::IncorrectProgramId);
18    }
19    let ix = Instruction::try_from_slice(data)?;
20    let accounts = accounts.iter();
21    match ix {
22        Instruction::Register(record) => register::process_registration(accounts, record),
23        Instruction::Sync(ix) => sync::process_sync_record(accounts, ix),
24        Instruction::Unregister(node_id) => unregister::process_unregistration(accounts, node_id),
25    }
26}