public bool Start(MessageReceiverDelegate receiver) { try { msgReceiver = receiver; udpUnicastClient = new UdpClient(unicastPort); udpMulticastClient = new UdpClient(multicastPort); IPAddress ipSSDP = IPAddress.Parse(multicastIP); udpMulticastClient.JoinMulticastGroup(ipSSDP); running = true; UnicastSetBeginReceive(); MulticastSetBeginReceive(); } catch (Exception ex) { throw ex; } return true; }
public void UnsubscribeMessageReceived(MessageReceiverDelegate handler) { messageReceivedEvent -= handler; }
public void AddMethodHandler(InterfaceDescription.InterfaceDescriptionMember member, MessageReceiverDelegate handler) { alljoyn_messagereceiver_methodhandler_ptr h = (bus, member2, message) => { handler( IsDisposed ? new BusObject(bus) : this, new InterfaceDescription.InterfaceDescriptionMember((alljoyn_interfacedescription_member)Marshal.PtrToStructure(member2, typeof(alljoyn_interfacedescription_member))), new Message(message)); }; pinnedMethodHandlers.Add(h); GCHandle membGch = GCHandle.Alloc(member.Handle, GCHandleType.Pinned); MethodEntry entry; entry.member = membGch.AddrOfPinnedObject(); entry.method_handler = Marshal.GetFunctionPointerForDelegate(h); GCHandle gch = GCHandle.Alloc(entry, GCHandleType.Pinned); AllJoynException.CheckStatus(alljoyn_busobject_addmethodhandlers(Handle, gch.AddrOfPinnedObject(), (UIntPtr)1)); gch.Free(); membGch.Free(); }