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
10pub 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}