示例#1
0
        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;
        }
示例#2
0
 public void UnsubscribeMessageReceived(MessageReceiverDelegate handler)
 {
     messageReceivedEvent -= handler;
 }
示例#3
0
        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();
        }