public static bool AddEndPoint(Request request) { Uri url = request.URI; string scheme = url.Scheme; string server; if (scheme == "coap" || scheme == "coaps") { scheme = scheme + "+" + Transport.ToLower(); } int port = url.Port; if (port == 0) { port = defaultPort[scheme]; } server = $"{scheme}://{url.Host}:{port}"; if (!endpoints.ContainsKey(scheme)) { CoAPEndPoint ep; switch (scheme) { #if DO_TCP case "coap+tcp": ep = new TCPClientEndPoint(); break; case "coaps+tcp": if (currentTlsKey == null) { Console.WriteLine("No current TLS key specified"); return(false); } TLSClientEndPoint tep = new TLSClientEndPoint(_TlsKeys[currentTlsKey]); // tep.TlsEventHandler += OnTlsEvent; ep = tep; break; #endif case "coap+udp": ep = new CoAPEndPoint(); break; case "coaps+udp": if (currentTlsKey == null) { Console.WriteLine("No current TLS key specified"); return(false); } DTLSClientEndPoint dep = new DTLSClientEndPoint(_TlsKeys[currentTlsKey]); dep.TlsEventHandler += OnTlsEvent; ep = dep; break; default: Console.WriteLine("Unknown schema"); return(false); } endpoints[server] = ep; ep.Start(); ep.ReceivingSignalMessage += (sender, args) => { Console.WriteLine("Signal message from {0}", "???"); Console.WriteLine(args.Message.ToString()); }; } request.EndPoint = endpoints[server]; return(true); }