Mono.Zeroconf – Diff between revs 1 and 2
?pathlinks?
Rev 1 | Rev 2 | |||
---|---|---|---|---|
Line 165... | Line 165... | |||
165 | System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator () |
165 | System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator () |
|
166 | { |
166 | { |
|
167 | return GetEnumerator (); |
167 | return GetEnumerator (); |
|
168 | } |
168 | } |
|
Line 169... | Line 169... | |||
169 | |
169 | |
|
170 | private void OnBrowseReply(ServiceRef sdRef, ServiceFlags flags, uint interfaceIndex, ServiceError errorCode, |
170 | private void OnBrowseReply(ServiceRef sdRef, ServiceFlags flags, uint interfaceIndex, ServiceError errorCode, |
|
171 | string serviceName, string regtype, string replyDomain, IntPtr context) |
171 | IntPtr serviceName, string regtype, string replyDomain, IntPtr context) |
|
- | 172 | { |
||
172 | { |
173 | string name = Native.Utf8toString(serviceName); |
|
173 | BrowseService service = new BrowseService(); |
174 | BrowseService service = new BrowseService(); |
|
174 | service.Flags = flags; |
175 | service.Flags = flags; |
|
175 | service.Name = serviceName; |
176 | service.Name = name; |
|
176 | service.RegType = regtype; |
177 | service.RegType = regtype; |
|
177 | service.ReplyDomain = replyDomain; |
178 | service.ReplyDomain = replyDomain; |
|
178 | service.InterfaceIndex = interfaceIndex; |
179 | service.InterfaceIndex = interfaceIndex; |
|
Line 179... | Line 180... | |||
179 | service.AddressProtocol = address_protocol; |
180 | service.AddressProtocol = address_protocol; |
|
180 | |
181 | |
|
Line 181... | Line 182... | |||
181 | ServiceBrowseEventArgs args = new ServiceBrowseEventArgs( |
182 | ServiceBrowseEventArgs args = new ServiceBrowseEventArgs( |
|
182 | service, (flags & ServiceFlags.MoreComing) != 0); |
183 | service, (flags & ServiceFlags.MoreComing) != 0); |
|
183 | |
184 | |
|
184 | if((flags & ServiceFlags.Add) != 0) { |
185 | if((flags & ServiceFlags.Add) != 0) { |
|
185 | lock (service_table) { |
186 | lock (service_table) { |
|
186 | if (service_table.ContainsKey (serviceName)) { |
187 | if (service_table.ContainsKey (name)) { |
|
187 | service_table[serviceName] = service; |
188 | service_table[name] = service; |
|
188 | } else { |
189 | } else { |
|
Line 189... | Line 190... | |||
189 | service_table.Add (serviceName, service); |
190 | service_table.Add(name, service); |
|
190 | } |
191 | } |
|
191 | } |
192 | } |
|
192 | |
193 | |
|
193 | ServiceBrowseEventHandler handler = ServiceAdded; |
194 | ServiceBrowseEventHandler handler = ServiceAdded; |
|
194 | if(handler != null) { |
195 | if(handler != null) { |
|
195 | handler(this, args); |
196 | handler(this, args); |
|
196 | } |
197 | } |
|
197 | } else { |
198 | } else { |
|
198 | lock (service_table) { |
199 | lock (service_table) { |
|
Line 199... | Line 200... | |||
199 | if (service_table.ContainsKey (serviceName)) { |
200 | if (service_table.ContainsKey (name)) { |
|
200 | service_table.Remove (serviceName); |
201 | service_table.Remove (name); |