in plasma-stream/src/server/sender.rs [191:217]
fn get_objects(
&self,
object_ids: &[plasma_store::ObjectId],
) -> Result<Vec<ObjectBuffer>, ObjectSendError> {
match self.plasma_client.get_many(&object_ids, self.timeout_ms) {
Ok(objects) => {
// check if any of the objects were returned as None, and record corresponding
// IDs in a separate vector
let mut missing = Vec::new();
let mut result = Vec::with_capacity(objects.len());
for (i, ob) in objects.into_iter().enumerate() {
match ob {
Some(ob) => result.push(ob),
None => missing.push(self.object_ids[i]),
}
}
// if any of the objects were not found, return an error
if !missing.is_empty() {
return Err(ObjectSendError::ObjectsNotFound(self.peer_addr, missing));
}
Ok(result)
}
Err(err) => Err(ObjectSendError::StoreError(self.peer_addr, err)),
}
}