Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion tuktuk-cli/src/cmd/task_queue.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use solana_sdk::{
instruction::Instruction, pubkey::Pubkey, signer::Signer, system_instruction::transfer,
};
use tuktuk::task_queue_name_mapping_key;
use tuktuk_program::{TaskQueueV0, TuktukConfigV0};
use tuktuk_program::TaskQueueV0;
use tuktuk_sdk::prelude::*;

use crate::{
Expand Down
2 changes: 2 additions & 0 deletions tuktuk-sdk/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ pub mod pubsub_client;
pub mod tuktuk;
pub mod watcher;

pub use tuktuk_program;

pub mod prelude {
pub use anchor_lang::prelude::*;

Expand Down
30 changes: 29 additions & 1 deletion tuktuk-sdk/src/tuktuk.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,14 @@ pub fn task_queue_name_mapping_key(config_key: &Pubkey, name: &str) -> Pubkey {
.0
}

pub fn custom_signing_key(task_queue: &Pubkey, signer_seeds: &[&[u8]]) -> Pubkey {
Pubkey::find_program_address(
&[&[b"custom", task_queue.as_ref()], signer_seeds].concat(),
&tuktuk::ID,
)
.0
}

#[derive(Debug)]
pub struct TaskQueueUpdate {
pub task_queues: Vec<(Pubkey, Option<TaskQueueV0>)>,
Expand Down Expand Up @@ -380,7 +388,23 @@ pub mod task_queue {

use self::tuktuk::types::InitializeTaskQueueArgsV0;
use super::*;
use crate::client::GetAnchorAccount;
use crate::{
client::GetAnchorAccount,
compiled_transaction::next_available_task_ids_excluding_in_progress,
};

pub fn next_available_task_ids(
task_queue: &tuktuk::accounts::TaskQueueV0,
n: u8,
) -> Result<Vec<u16>, Error> {
next_available_task_ids_excluding_in_progress(
task_queue.capacity,
&task_queue.task_bitmap,
n,
&Default::default(),
rand::random_range(0..task_queue.task_bitmap.len()),
)
}

pub fn key(config_key: &Pubkey, next_task_queue_id: u32) -> Pubkey {
Pubkey::find_program_address(
Expand All @@ -406,6 +430,10 @@ pub mod task_queue {
.0
}

pub fn queue_authority_key(program_id: &Pubkey) -> Pubkey {
Pubkey::find_program_address(&[b"queue_authority"], program_id).0
}

pub fn keys(config_key: &Pubkey, config: &TuktukConfigV0) -> Result<Vec<Pubkey>, Error> {
let queue_ids = 0..config.next_task_queue_id;
let queue_keys = queue_ids.map(|id| self::key(config_key, id)).collect_vec();
Expand Down