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// - Write messages as well 9*3f982cf4SFabien Sanglard 10*3f982cf4SFabien Sanglardimport ( 11*3f982cf4SFabien Sanglard "context" 12*3f982cf4SFabien Sanglard "crypto/tls" 13*3f982cf4SFabien Sanglard "io" 14*3f982cf4SFabien Sanglard) 15*3f982cf4SFabien Sanglard 16*3f982cf4SFabien Sanglardfunc ReadMessagesAsServer(ctx context.Context, instanceName string, port int, cert tls.Certificate, messages chan<- interface{}) error { 17*3f982cf4SFabien Sanglard // TODO(jophba): log error if it fails 18*3f982cf4SFabien Sanglard go RunMdnsServer(ctx, instanceName, port) 19*3f982cf4SFabien Sanglard streams := make(chan io.ReadWriteCloser) 20*3f982cf4SFabien Sanglard go RunQuicServer(ctx, port, cert, streams) 21*3f982cf4SFabien Sanglard 22*3f982cf4SFabien Sanglard for stream := range streams { 23*3f982cf4SFabien Sanglard msg, err := ReadMessage(stream) 24*3f982cf4SFabien Sanglard if err != nil { 25*3f982cf4SFabien Sanglard return err 26*3f982cf4SFabien Sanglard } 27*3f982cf4SFabien Sanglard messages <- msg 28*3f982cf4SFabien Sanglard } 29*3f982cf4SFabien Sanglard return nil 30*3f982cf4SFabien Sanglard} 31