private void OnRegisterReply(ServiceRef sdRef, ServiceFlags flags, ServiceError errorCode,
                                     string name, string regtype, string domain, IntPtr context)
        {
            RegisterServiceEventArgs args = new RegisterServiceEventArgs();

            args.Service      = this;
            args.IsRegistered = false;
            args.NameConflict = false;
            args.Error        = errorCode;

            if (errorCode == ServiceError.NoError)
            {
                Name              = name;
                RegType           = regtype;
                ReplyDomain       = domain;
                args.IsRegistered = true;
            }
            else if (errorCode == ServiceError.NameConflict)
            {
                args.NameConflict = true;
            }

            RegisterServiceEventHandler handler = Response;

            if (handler != null)
            {
                handler(this, args);
            }
        }
Exemplo n.º 2
0
        public void Stop()
        {
            if (sd_ref != ServiceRef.Zero)
            {
                sd_ref.Deallocate();
                sd_ref = ServiceRef.Zero;
            }

            if (thread != null)
            {
                thread.Abort();
                thread = null;
            }
        }
Exemplo n.º 3
0
        private void OnBrowseReply(ServiceRef sdRef, ServiceFlags flags, uint interfaceIndex, ServiceError errorCode,
                                   string serviceName, string regtype, string replyDomain, IntPtr context)
        {
            BrowseService service = new BrowseService();

            service.Flags          = flags;
            service.Name           = serviceName;
            service.RegType        = regtype;
            service.ReplyDomain    = replyDomain;
            service.InterfaceIndex = interfaceIndex;

            ServiceBrowseEventArgs args = new ServiceBrowseEventArgs();

            args.Service    = service;
            args.MoreComing = (flags & ServiceFlags.MoreComing) != 0;

            if ((flags & ServiceFlags.Add) != 0)
            {
                lock (service_table.SyncRoot) {
                    service_table[serviceName] = service;
                }
                ServiceBrowseEventHandler handler = ServiceAdded;
                if (handler != null)
                {
                    handler(this, args);
                }
            }
            else
            {
                lock (service_table.SyncRoot) {
                    service_table.Remove(serviceName);
                }
                ServiceBrowseEventHandler handler = ServiceRemoved;
                if (handler != null)
                {
                    handler(this, args);
                }
            }
        }
        private void OnResolveReply(ServiceRef sdRef, ServiceFlags flags, uint interfaceIndex,
                                    ServiceError errorCode, string fullname, string hosttarget, ushort port, ushort txtLen,
                                    IntPtr txtRecord, IntPtr contex)
        {
            is_resolved     = true;
            resolve_pending = false;

            InterfaceIndex = interfaceIndex;
            FullName       = fullname;
            HostTarget     = hosttarget;
            this.port      = (short)port;
            TxtRecord      = new TxtRecord(txtLen, txtRecord);

            EventHandler handler = Resolved;

            if (handler != null)
            {
                handler(this, new EventArgs());
            }

            sdRef.Deallocate();
        }
Exemplo n.º 5
0
 public static extern ServiceError DNSServiceRegister(out ServiceRef sdRef, ServiceFlags flags,
                                                      uint interfaceIndex, string name, string regtype, string domain, string host, ushort port,
                                                      ushort txtLen, byte [] txtRecord, DNSServiceRegisterReply callBack, IntPtr context);
Exemplo n.º 6
0
 public static extern ServiceError DNSServiceResolve(out ServiceRef sdRef, ServiceFlags flags,
                                                     uint interfaceIndex, string name, string regtype, string domain, DNSServiceResolveReply callBack,
                                                     IntPtr context);
        private void OnBrowseReply(ServiceRef sdRef, ServiceFlags flags, uint interfaceIndex, ServiceError errorCode, 
            string serviceName, string regtype, string replyDomain, IntPtr context)
        {
            BrowseService service = new BrowseService();
            service.Flags = flags;
            service.Name = serviceName;
            service.RegType = regtype;
            service.ReplyDomain = replyDomain;
            service.InterfaceIndex = interfaceIndex;

            ServiceBrowseEventArgs args = new ServiceBrowseEventArgs();
            args.Service = service;
            args.MoreComing = (flags & ServiceFlags.MoreComing) != 0;

            if((flags & ServiceFlags.Add) != 0) {
                lock(service_table.SyncRoot) {
                    service_table[serviceName] = service;
                }
                ServiceBrowseEventHandler handler = ServiceAdded;
                if(handler != null) {
                    handler(this, args);
                }
            } else {
                lock(service_table.SyncRoot) {
                    service_table.Remove(serviceName);
                }
                ServiceBrowseEventHandler handler = ServiceRemoved;
                if(handler != null) {
                    handler(this, args);
                }
            }
        }
        public void Stop()
        {
            if(sd_ref != ServiceRef.Zero) {
                sd_ref.Deallocate();
                sd_ref = ServiceRef.Zero;
            }

            if(thread != null) {
                thread.Abort();
                thread = null;
            }
        }
        private void OnResolveReply(ServiceRef sdRef, ServiceFlags flags, uint interfaceIndex,
            ServiceError errorCode, string fullname, string hosttarget, ushort port, ushort txtLen, 
            IntPtr txtRecord, IntPtr contex)
        {
            is_resolved = true;
            resolve_pending = false;

            InterfaceIndex = interfaceIndex;
            FullName = fullname;
            HostTarget = hosttarget;
            this.port = (short)port;
            TxtRecord = new TxtRecord(txtLen, txtRecord);

            EventHandler handler = Resolved;
            if(handler != null) {
                handler(this, new EventArgs());
            }

            sdRef.Deallocate();
        }
        private void OnRegisterReply(ServiceRef sdRef, ServiceFlags flags, ServiceError errorCode,
            string name, string regtype, string domain, IntPtr context)
        {
            RegisterServiceEventArgs args = new RegisterServiceEventArgs();

            args.Service = this;
            args.IsRegistered = false;
            args.NameConflict = false;
            args.Error = errorCode;

            if(errorCode == ServiceError.NoError) {
                Name = name;
                RegType = regtype;
                ReplyDomain = domain;
                args.IsRegistered = true;
            } else if(errorCode == ServiceError.NameConflict) {
                args.NameConflict = true;
            }

            RegisterServiceEventHandler handler = Response;
            if(handler != null) {
                handler(this, args);
            }
        }
Exemplo n.º 11
0
 public static extern ServiceError DNSServiceResolve(out ServiceRef sdRef, ServiceFlags flags,
     uint interfaceIndex, string name, string regtype, string domain, DNSServiceResolveReply callBack,
     IntPtr context);
Exemplo n.º 12
0
 public static extern ServiceError DNSServiceRegister(out ServiceRef sdRef, ServiceFlags flags,
     uint interfaceIndex, string name, string regtype, string domain, string host, ushort port,
     ushort txtLen, byte [] txtRecord, DNSServiceRegisterReply callBack, IntPtr context);