aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/system
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-12-18 23:51:47 +0900
committerOphestra <cat@gensokyo.uk>2025-12-19 00:00:33 +0900
commitce06b7b66386f592df26ca089b470cc5b40ecd39 (patch)
treea01446a02bb544fc4adb2265e338c935fe7510b0 /internal/system
parent08bdc68f3a00fadad3eb196d08f328722bc7504c (diff)
internal/pipewire: inform conn of blocking intent
The interface does not expose underlying kernel notification mechanisms. This change removes the need to poll in situations were the next call might block. This is made cumbersome by the SyscallConn interface left over from a previous implementation, it will be replaced in a later commit as the current implementation does not make use of any net.Conn methods other than Close. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/system')
-rw-r--r--internal/system/pipewire_test.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/internal/system/pipewire_test.go b/internal/system/pipewire_test.go
index 9c4950c6..a39237f8 100644
--- a/internal/system/pipewire_test.go
+++ b/internal/system/pipewire_test.go
@@ -6,6 +6,7 @@ import (
"path"
"syscall"
"testing"
+ "time"
"hakurei.app/container/stub"
"hakurei.app/internal/acl"
@@ -497,6 +498,12 @@ type stubPipeWireConn struct {
curSendmsg int
}
+func (conn *stubPipeWireConn) MightBlock(timeout time.Duration) {
+ if timeout != 5*time.Second {
+ panic("unexpected timeout " + timeout.String())
+ }
+}
+
// Recvmsg marshals and copies a stubMessage prepared ahead of time.
func (conn *stubPipeWireConn) Recvmsg(p, _ []byte, _ int) (n, _, recvflags int, err error) {
defer func() { conn.curRecvmsg++ }()