#![cfg(all(feature = "comms", any(unix, windows)))]
use serde::{Deserialize, Serialize};
use crate::path::RelPath;
pub const MAX_CALLS_IN_FILES: usize = 512;
pub const MAX_GREP_BLOOM_PATHS: usize = 16_384;
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum IndexReadQuery {
CallScan {
name: String,
limit: u32,
cursor: Option<Vec<u8>>,
},
CallsInFiles {
paths: Vec<RelPath>,
},
GrepBloom {
pattern: String,
paths: Vec<RelPath>,
},
ImplScan {
trait_name: String,
language: Option<String>,
limit: u32,
cursor: Option<Vec<u8>>,
},
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum IndexReadResult {
CallScan(WireCallScan),
CallsInFiles(Vec<Vec<WireCall>>),
ImplScan(WireImplScan),
GrepSkip(Vec<bool>),
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct WireCallScan {
pub total: u32,
pub total_is_partial: bool,
pub has_more: bool,
pub hits: Vec<WireCallHit>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct WireCallHit {
pub key: Vec<u8>,
pub path: RelPath,
pub line: u32,
pub column: u32,
pub callee: String,
pub start_byte: u32,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct WireCall {
pub callee: String,
pub start_byte: u32,
pub line: u32,
pub column: u32,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct WireImplScan {
pub total: u64,
pub total_is_partial: bool,
pub has_more: bool,
pub hits: Vec<WireImplHit>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct WireImplHit {
pub key: Vec<u8>,
pub path: RelPath,
pub trait_name: String,
pub impl_type: String,
pub start_row: u32,
pub start_col: u32,
}