xref: /aosp_15_r20/external/openscreen/osp/go/receiver.go (revision 3f982cf4871df8771c9d4abe6e9a6f8d829b2736)
1*3f982cf4SFabien Sanglard// Copyright 2018 The Chromium Authors. All rights reserved.
2*3f982cf4SFabien Sanglard// Use of this source code is governed by a BSD-style license that can be
3*3f982cf4SFabien Sanglard// found in the LICENSE file.
4*3f982cf4SFabien Sanglard
5*3f982cf4SFabien Sanglardpackage osp
6*3f982cf4SFabien Sanglard
7*3f982cf4SFabien Sanglard// TODO(jophba):
8*3f982cf4SFabien Sanglard// - Send a response message
9*3f982cf4SFabien Sanglard// - Make a nice object API with methods
10*3f982cf4SFabien Sanglard// - Make it possible to have a presentation receiver that is a client
11*3f982cf4SFabien Sanglard// - Close connection on unknown message types
12*3f982cf4SFabien Sanglard
13*3f982cf4SFabien Sanglardimport (
14*3f982cf4SFabien Sanglard	"context"
15*3f982cf4SFabien Sanglard	"crypto/tls"
16*3f982cf4SFabien Sanglard)
17*3f982cf4SFabien Sanglard
18*3f982cf4SFabien Sanglardfunc RunPresentationReceiver(ctx context.Context, mdnsInstanceName string, port int, cert tls.Certificate, presentUrl func(string)) {
19*3f982cf4SFabien Sanglard	messages := make(chan interface{})
20*3f982cf4SFabien Sanglard	go ReadMessagesAsServer(ctx, mdnsInstanceName, port, cert, messages)
21*3f982cf4SFabien Sanglard	for msg := range messages {
22*3f982cf4SFabien Sanglard		switch m := msg.(type) {
23*3f982cf4SFabien Sanglard		case PresentationStartRequest:
24*3f982cf4SFabien Sanglard			presentUrl(m.URL)
25*3f982cf4SFabien Sanglard		}
26*3f982cf4SFabien Sanglard	}
27*3f982cf4SFabien Sanglard}
28