dsacre / pyliblo

Python bindings for the liblo OSC library
http://das.nasophon.de/pyliblo/
GNU Lesser General Public License v2.1
41 stars 21 forks source link

Glob pattern matching not working on handler #21

Open daylanKifky opened 5 years ago

daylanKifky commented 5 years ago

I'm trying to add a method to a simple glob handler like:

"/message/raw/*"

I know C liblo supports this kind of pattern matching. But I'm getting wrong results with pyliblo. When running this:

from __future__ import print_function
import sys
import liblo
import threading

osc_receive_address = '' , 50419

try:
    server = liblo.Server(osc_receive_address[1])
except liblo.ServerError as err:
    print(err)
    sys.exit()

def wildcard(path, args, types, src):
    print("**** Got Wildcard message '%s' '%s' ***" % (path, args))

def fallback(path, args, types, src):
    print("got unknown message '%s' '%s'" % (path, args))

server.add_method("/message/raw/*", None, wildcard)
server.add_method(None, None, fallback)

def serve():
    while True:
        server.recv(100)

    server.free()

st = threading.Thread( target = serve )
st.start()

I would expect the first message to be handled by the wildcard method. But it is the fallback one to be used on both cases.

(messages)

oscsend localhost 50419 /message/raw/foo T
oscsend localhost 50419 /message/raw T

(server printed)

got unknown message '/message/raw/foo' [True]
got unknown message '/message/raw' [True]
radarsat1 commented 4 years ago

Hello, this was not supported in liblo in fact. I have just added it: https://github.com/radarsat1/liblo/commit/efea904078f1fde89c93d1d880c2d2180098c221