use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct MXMetricManager;
unsafe impl ClassType for MXMetricManager {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
unsafe impl NSObjectProtocol for MXMetricManager {}
extern_methods!(
unsafe impl MXMetricManager {
#[cfg(feature = "MXMetricPayload")]
#[method_id(@__retain_semantics Other pastPayloads)]
pub unsafe fn pastPayloads(&self) -> Id<NSArray<MXMetricPayload>>;
#[cfg(feature = "MXDiagnosticPayload")]
#[method_id(@__retain_semantics Other pastDiagnosticPayloads)]
pub unsafe fn pastDiagnosticPayloads(&self) -> Id<NSArray<MXDiagnosticPayload>>;
#[method_id(@__retain_semantics Other sharedManager)]
pub unsafe fn sharedManager() -> Id<MXMetricManager>;
#[method(addSubscriber:)]
pub unsafe fn addSubscriber(
&self,
subscriber: &ProtocolObject<dyn MXMetricManagerSubscriber>,
);
#[method(removeSubscriber:)]
pub unsafe fn removeSubscriber(
&self,
subscriber: &ProtocolObject<dyn MXMetricManagerSubscriber>,
);
}
);
extern_methods!(
unsafe impl MXMetricManager {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Id<Self>;
}
);
extern_protocol!(
pub unsafe trait MXMetricManagerSubscriber: NSObjectProtocol {
#[cfg(feature = "MXMetricPayload")]
#[optional]
#[method(didReceiveMetricPayloads:)]
unsafe fn didReceiveMetricPayloads(&self, payloads: &NSArray<MXMetricPayload>);
#[cfg(feature = "MXDiagnosticPayload")]
#[optional]
#[method(didReceiveDiagnosticPayloads:)]
unsafe fn didReceiveDiagnosticPayloads(&self, payloads: &NSArray<MXDiagnosticPayload>);
}
unsafe impl ProtocolType for dyn MXMetricManagerSubscriber {}
);