//originally: only run when needed to start server (the first time) // - didn't work well; now every server has it's own ChanStore (WCF reasons, mainly) //Unit so it can be used in Lazy static Unit InitServer(Settings settings, ChanStore store, Connector conn) { //simple default config for now var dfltCfg = NetChanConfig.MakeDefault<Message>(); var bcFailT = store.CreateNetChan(settings.ChanBroadcastName, dfltCfg, ChanDistributionType.Broadcast); var bcUri = new Uri("chan:" + settings.ChanBroadcastName); var bcr = store.GetReceiver<Message>(bcUri); var bcs = store.GetSender<Message>(bcUri); var bcPipeT = bcr.Pipe(bcs); //connect server side of pipe: return back to everyone bcFailT.PipeEx(conn, "server: bc chan"); bcPipeT.PipeEx(conn, "server: bc pipe"); bcr.AfterClosed().PipeEx(conn, "server: bc receiver"); //I don't think these can ever fail... bcs.AfterClosed().PipeEx(conn, "server: bc sender"); return null; }