Example #1
0
        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);
        }