fn get_objects()

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)),
        }
    }