summaryrefslogtreecommitdiffstats
path: root/WhisperNet/Callbacks.cs
diff options
context:
space:
mode:
authorKonstantin <const@const.me>2023-01-16 14:52:43 +0100
committerKonstantin <const@const.me>2023-01-16 14:52:43 +0100
commit8c4603c73675958efc960fbd4bb599a2909d106a (patch)
tree714dc6fc9a1672d5fd7f89676b97e10959662abc /WhisperNet/Callbacks.cs
parent990a8d0dbaefc996244097397259e92758b15cce (diff)
Source codes
Diffstat (limited to 'WhisperNet/Callbacks.cs')
-rw-r--r--WhisperNet/Callbacks.cs44
1 files changed, 44 insertions, 0 deletions
diff --git a/WhisperNet/Callbacks.cs b/WhisperNet/Callbacks.cs
new file mode 100644
index 0000000..db38718
--- /dev/null
+++ b/WhisperNet/Callbacks.cs
@@ -0,0 +1,44 @@
+using Whisper.Internal;
+
+namespace Whisper
+{
+ /// <summary>Implement this abstract class to receive callbacks from the native code</summary>
+ public abstract class Callbacks
+ {
+ /// <summary>The callback is called before every encoder run.</summary>
+ /// <remarks>If it returns false, the processing is aborted.</remarks>
+ protected virtual bool onEncoderBegin( Context sender ) { return true; }
+
+ /// <summary>This callback is called on each new segment</summary>
+ protected virtual void onNewSegment( Context sender, int countNew ) { }
+
+ const int S_OK = 0;
+ const int S_FALSE = 1;
+ internal int encoderBegin( Context sender )
+ {
+ try
+ {
+ return onEncoderBegin( sender ) ? S_OK : S_FALSE;
+ }
+ catch( Exception ex )
+ {
+ NativeLogger.captureException( ex );
+ return ex.HResult;
+ }
+ }
+
+ internal int newSegment( Context sender, int countNew )
+ {
+ try
+ {
+ onNewSegment( sender, countNew );
+ return S_OK;
+ }
+ catch( Exception ex )
+ {
+ NativeLogger.captureException( ex );
+ return ex.HResult;
+ }
+ }
+ }
+} \ No newline at end of file