예제 #1
0
def onmessage_cb(channel, datatype, data, length, userdata):
    if datatype == RTCDC_DATATYPE_STRING:
        message = ffi.cast("char *", data)
        message = ffi.string(message)
        message = message[:length].decode("UTF-8")
    if datatype == RTCDC_DATATYPE_BINARY:
        message = ffi.cast("char *", data)
        message = ffi.buffer(message, length)[:]
    if userdata:
            ffi.from_handle(userdata)._onMessage(message)
예제 #2
0
def onconnect_cb(peer, userdata):
    ffi.from_handle(userdata)._onConnect(peer, userdata)
예제 #3
0
def oncandidate_cb(peer, candidate, userdata):
    candidate = ffi.string(candidate)
    ffi.from_handle(userdata)._onCandidate(peer, candidate)
예제 #4
0
def onchannel_cb(peer, dc, userdata):
    dc.on_message = lib.onmessage_cb
    dc.user_data = userdata
    ffi.from_handle(userdata)._onChannel(peer, dc)
예제 #5
0
def onclose_cb(channel, userdata):
    ffi.from_handle(userdata)._onClose(channel)
예제 #6
0
def onopen_cb(channel, userdata):
    ffi.from_handle(userdata)._onOpen(channel)