aioble — Asenkron BLE#

aioble, bluetooth modülünün etrafına yazılmış üst düzey, asyncio uyumlu bir sarmalayıcıdır. Tarama, bağlanma, reklam yayını, GATT hizmetleri ve L2CAP kanalları için temiz coroutine’ler sağlar.

Tüm uzak işlemler (connect, disconnect, istemci read/write, sunucu indicate, l2cap recv/send, pair) beklenebilir (awaitable) niteliktedir ve zaman aşımlarını destekler.

Desteklenen roller:

  • Yayıncı (advertiser) — yaygın alanlar için reklam ve tarama yanıtı yükleri üretir, yükü reklam ve tarama yanıtı arasında otomatik olarak böler, süresiz olarak veya sabit bir süre boyunca reklam yayını yapar.

  • Çevre birimi (Peripheral) — bir merkezden (central) bağlantı bekler, MTU değişimini bekler.

  • Gözlemci (scanner) — pasif ve aktif tarama, aynı cihaz için reklam ve tarama yanıtı yüklerini birleştirir, reklam yüklerinden yaygın alanları ayrıştırır.

  • Merkez (Central) — bir çevre birimine bağlanır, MTU değişimini başlatır.

  • GATT İstemcisi — hizmetleri / özellikleri / tanımlayıcıları keşfeder (isteğe bağlı olarak UUID’ye göre); özellikler ve tanımlayıcılar üzerinde read / write / write-with-response yapar; bildirimlere ve göstergelere abone olur (CCCD aracılığıyla); bildirimleri ve göstergeleri bekler.

  • GATT Sunucusu — hizmetleri / özellikleri / tanımlayıcıları kaydeder; özellikler ve tanımlayıcılar üzerindeki yazmaları bekler; okuma isteklerini yakalar; bildirimleri ve göstergeleri gönderir (ve yanıtı bekler).

  • L2CAP — bağlantı odaklı L2CAP kanallarını kabul eder ve bağlar, kanal akış denetimini yönetir.

  • Güvenlik — JSON tabanlı anahtar/gizli yönetimi, eşleştirme başlatma, şifreleme / kimlik doğrulama durumunu sorgulama.

Örnekler#

Yakındaki BLE cihazlarını tarayın ve görüldükçe her birini yazdırın:

import aioble
import asyncio

async def find_devices():
    async with aioble.scan(duration_ms=5000, active=True) as scanner:
        async for result in scanner:
            print(result.device.addr_hex(), result.rssi, result.name())

asyncio.run(find_devices())

Bir merkez (central) olarak Heart Rate hizmetinin reklamını yapan bir çevre birimine bağlanın ve ölçüm bildirimlerine abone olun:

import aioble
import asyncio
import bluetooth

_HR_SERVICE = bluetooth.UUID(0x180D)
_HR_MEASUREMENT = bluetooth.UUID(0x2A37)

async def connect_and_read():
    device = None
    async with aioble.scan(duration_ms=5000, active=True) as scanner:
        async for result in scanner:
            if _HR_SERVICE in result.services():
                device = result.device
                break
    if device is None:
        return

    async with await device.connect() as conn:
        service = await conn.service(_HR_SERVICE)
        char = await service.characteristic(_HR_MEASUREMENT)
        await char.subscribe(notify=True)
        while True:
            data = await char.notified()
            print("notify:", data)

asyncio.run(connect_and_read())

Bir çevre birimi (peripheral) olarak hareket edin: bir GATT hizmeti kaydedin, reklamını yapın ve bağlanan herkese bildirim gönderin:

import aioble
import asyncio
import bluetooth
import struct

_ENV_SERVICE = bluetooth.UUID(0x181A)
_TEMP_CHAR = bluetooth.UUID(0x2A6E)

def encode_temperature(deg_c):
    # Bluetooth Temperature (0x2A6E) is sint16 little-endian, 0.01 degC units.
    return struct.pack("<h", round(deg_c * 100))

service = aioble.Service(_ENV_SERVICE)
temp_char = aioble.Characteristic(service, _TEMP_CHAR, read=True, notify=True)
aioble.register_services(service)

async def peripheral_task():
    while True:
        connection = await aioble.advertise(
            interval_us=250000,
            name="openmv-sensor",
            services=[_ENV_SERVICE],
            appearance=0x0300,
        )
        print("connected:", connection.device.addr_hex())
        async with connection:
            while connection.is_connected():
                temp_char.write(encode_temperature(23.68), send_update=True)
                await asyncio.sleep(1)

asyncio.run(peripheral_task())

Modül düzeyindeki fonksiyonlar#

aioble.config(*args, **kwargs) Any#

bluetooth.BLE.config() çağrısına yönlendirir ve önce BLE radyosunun etkin olduğundan emin olur.

args

Sorgulanacak isteğe bağlı tek parametre adı.

kwargs

Yapılandırma değerlerini ayarlamak için anahtar sözcük argümanları.

aioble.stop() None#

Temel BLE radyosunu devre dışı bırakır ve kayıtlı tüm alt modül kapatma işleyicilerini çalıştırır. Bu çağrıdan sonra tarayıcılar, reklam yayıncıları, bağlantılar ve L2CAP kanallarının tamamı sonlandırılır.

aioble.scan(duration_ms: int, interval_us: int | None = None, window_us: int | None = None, active: bool = False) scan#

Keşfedilen her benzersiz cihaz için (veya bilinen bir cihazdan gelen her yeni reklam verisi parçası için) ScanResult örnekleri üreten bir scan asenkron bağlam yöneticisi / asenkron yineleyici döndürür.

duration_ms

Milisaniye cinsinden taramanın ne kadar süreceği. Bağlam yöneticisi çıkana kadar süresiz tarama yapmak için 0 geçirin.

interval_us

Mikrosaniye cinsinden tarama aralığı. Varsayılan değer 1.280.000’dir.

window_us

Mikrosaniye cinsinden tarama penceresi (interval_us değerine eşit veya daha küçük olmalıdır). Varsayılan değer 11.250’dir.

active

True ise, aktif bir tarama gerçekleştirir (tarama yanıt verisi ister). Varsayılan değer False şeklindedir.

aioble.advertise(interval_us: int, adv_data: bytes | None = None, resp_data: bytes | None = None, connectable: bool = True, limited_disc: bool = False, br_edr: bool = False, name: str | None = None, services: list | None = None, appearance: int = 0, manufacturer: tuple | None = None, timeout_ms: int | None = None) DeviceConnection#

Reklam yayınını başlatan ve gelen bir merkez bağlantısını bekleyen asenkron coroutine. Bağlı merkezi temsil eden bir DeviceConnection döndürür veya zaman aşımında asyncio.TimeoutError yükseltir.

interval_us

Mikrosaniye cinsinden reklam aralığı.

adv_data

Ham reklam yükü. Ayarlanmamışsa, adv_data kalan anahtar sözcük argümanlarından oluşturulur.

resp_data

Ham tarama yanıtı yükü. Gerekirse adv_data taşmasından otomatik olarak doldurulur.

connectable

True ise, bu bağlanabilir bir reklamdır.

limited_disc

Genel yerine sınırlı keşfedilebilir (limited-discoverable) bayrağını kullanır.

br_edr

BR/EDR-destekli bayrağını ayarlar.

name

Gömülecek isteğe bağlı tam yerel ad.

services

Reklamı yapılacak bluetooth.UUID yinelenebiliri.

appearance

16-bit görünüm değeri (bkz. Bluetooth atanmış numaralar).

manufacturer

Üreticiye özgü veri olarak reklamı yapılacak (company_id, data_bytes) demeti.

timeout_ms

Bağlantı olmadan bu kadar milisaniye sonra reklam yayınını durdurur. None, bağlanana kadar reklam yapılacağı anlamına gelir.

aioble.register_services(*services: Service) None#

GATT sunucusuna bir veya daha fazla Service nesnesini (ve bunların özelliklerini ve tanımlayıcılarını) kaydeder. advertise başlatılmadan önce bir kez çağrılmalıdır. Sonraki çağrılar önceki kaydı değiştirir.

services

Bir veya daha fazla Service örneği.

Modül düzeyindeki sabitler#

aioble.ADDR_PUBLIC#

Genel (Public) BLE cihaz adres tipi (0).

aioble.ADDR_RANDOM#

Rastgele (Random) BLE cihaz adres tipi (1).

İstisnalar#

exception aioble.GattError#

Uzak bir GATT işlemi (read / write / indicate) sıfır olmayan bir durumla tamamlandığında yükseltilir. Durum kodu _status özniteliği üzerinden erişilebilir.

exception aioble.DeviceDisconnectedError#

Bir asenkron işlem (örn. read, write, notified) içinde, beklerken temel bağlantı kesildiğinde yükseltilir.

exception aioble.L2CAPDisconnectedError#

Bağlantısı kesilmiş bir kanal üzerinde (veya bunun tarafından kesintiye uğratılarak) bir L2CAP kanal send/recv/flush işlemi denendiğinde yükseltilir.

exception aioble.L2CAPConnectionError#

Kanal kurulumu başarısız olduğunda DeviceConnection.l2cap_connect tarafından yükseltilir. İlk argüman Bluetooth durum kodudur.

Sınıflar#

class aioble.Device(addr_type: int, addr: bytes | str)#

Uzak bir BLE cihazını adresine göre temsil eder. İki Device örneği, hem addr_type hem de addr eşleşiyorsa eşit kabul edilir. Bağlantıları başlatmak için tanıtıcı (handle) olarak kullanılır.

addr_type

ADDR_PUBLIC veya ADDR_RANDOM.

addr

bytes olarak altı baytlık adres veya iki nokta üst üste ile ayrılmış onaltılık bir dize (örn. "aa:bb:cc:dd:ee:ff").

addr_type#

Cihazın oluşturulduğu adres tipi.

addr#

Ham altı baytlık cihaz adresi.

addr_hex() str#

Adresi iki nokta üst üste ile ayrılmış onaltılık bir dize olarak biçimlendirip döndürür.

connect(timeout_ms: int = 10000, scan_duration_ms: int | None = None, min_conn_interval_us: int | None = None, max_conn_interval_us: int | None = None) Awaitable[DeviceConnection]#

Asenkron. Bu cihaza bir GAP bağlantısı başlatır ve elde edilen DeviceConnection nesnesini döndürür. Devam eden herhangi bir taramayı iptal eder.

timeout_ms

Bağlantının tamamlanmasının ne kadar bekleneceği.

scan_duration_ms

Bağlanmadan önceki ilk tarama süresi (denetleyiciye özgü).

min_conn_interval_us / max_conn_interval_us

Mikrosaniye cinsinden isteğe bağlı bağlantı aralığı sınırları.

class aioble.DeviceConnection#

Bir Device ile etkin bir GAP bağlantısı. Device.connect() veya advertise tarafından döndürülür. Çıkışta otomatik olarak bağlantıyı kesen bir async with bağlam yöneticisi olarak kullanımı destekler.

Doğrudan oluşturmayın.

device#

Temel Device.

encrypted#

Bağlantı şifrelendikten sonra (örn. eşleştirme sonrası) True olur.

authenticated#

Bağlantı kimliği doğrulanmışsa (MITM korumalı eşleştirme) True olur.

bonded#

Eşleştirme bağlanma (bonding) anahtarları ürettiyse True olur.

key_size#

Bayt cinsinden anlaşılan şifreleme anahtarı boyutu veya şifrelenmemişse False.

mtu#

exchange_mtu sonrasında anlaşılan ATT MTU veya ayarlanana kadar None.

is_connected() bool#

Bağlantının hâlâ etkin olup olmadığını döndürür.

disconnect(timeout_ms: int = 2000) Awaitable[None]#

Asenkron. Bağlantıyı keser ve bağlantı kesme IRQ’sunu bekler.

timeout_ms

Bağlantı kesmenin beklenmesi için maksimum süre.

disconnected(timeout_ms: int | None = None, disconnect: bool = False) Awaitable[None]#

Asenkron. Bağlantının iki taraftan biri tarafından sonlandırılmasını bekler. disconnect True ise önce etkin olarak bağlantıyı keser.

timeout_ms

Maksimum bekleme süresi. None, sonsuza kadar bekleme anlamına gelir.

disconnect

True ise, bağlantı kesmeyi başlatır.

timeout(timeout_ms: int | None) DeviceTimeout#

Ya zaman aşımı dolarsa (asyncio.TimeoutError yükselterek) ya da cihazın bağlantısı kesilirse (DeviceDisconnectedError yükselterek) gövdesini iptal eden bir bağlam yöneticisi döndürür.

timeout_ms

Milisaniye cinsinden zaman aşımı veya zaman aşımı olmaması için None.

exchange_mtu(mtu: int | None = None, timeout_ms: int = 1000) Awaitable[int]#

Asenkron. Bir ATT MTU değişimi başlatır ve anlaşılan MTU’yu döndürür.

mtu

Değişimden önce temel BLE arabiriminde ayarlanacak isteğe bağlı tercih edilen MTU.

timeout_ms

Değişim için zaman aşımı.

service(uuid: bluetooth.UUID, timeout_ms: int = 2000) Awaitable[ClientService | None]#

Asenkron. uuid ile eşleşen tek bir uzak hizmeti keşfeder veya bulunamazsa None döndürür.

services(uuid: bluetooth.UUID | None = None, timeout_ms: int = 2000) ClientDiscover#

Uzak ClientService nesnelerinin asenkron bir yineleyicisini döndürür. async for ile kullanın ve döngüyü sonuna kadar çalıştırın.

uuid

İsteğe bağlı UUID filtresi. None her hizmeti döndürür.

timeout_ms

Keşif başına zaman aşımı.

pair(bond: bool = True, le_secure: bool = True, mitm: bool = False, io: int = 3, timeout_ms: int = 20000) Awaitable[None]#

Asenkron. Bu bağlantıda eşleştirmeyi başlatır. Tamamlandığında encrypted / authenticated / bonded / key_size özniteliklerini günceller.

bond

Eşleştirme anahtarlarını kalıcı hale getirir.

le_secure

LE Secure Connections kullanır.

mitm

Ortadaki adam (man-in-the-middle) korumasını gerektirir.

io

IO yetenek sabiti (örn. giriş/çıkış olmaması için 3).

timeout_ms

Eşleştirme zaman aşımı.

l2cap_accept(psm: int, mtu: int, timeout_ms: int | None = None) Awaitable[L2CAPChannel]#

Asenkron. Verilen PSM üzerinde dinler ve uzak taraf açtığında bir L2CAPChannel döndürür.

psm

Üzerinde dinlenecek Protocol/Service Multiplexer.

mtu

Bayt cinsinden maksimum alma boyutu.

timeout_ms

Uzak tarafın bağlanmasının beklenmesi için maksimum süre.

l2cap_connect(psm: int, mtu: int, timeout_ms: int = 1000) Awaitable[L2CAPChannel]#

Asenkron. Verilen PSM üzerinde uzak tarafa bir L2CAP kanalı açar.

psm

Bağlanılacak Protocol/Service Multiplexer.

mtu

Bayt cinsinden maksimum alma boyutu.

timeout_ms

Bağlantı zaman aşımı.

class aioble.ScanResult#

scan sırasında keşfedilen tek bir cihaz. Yeni reklam verileri geldikçe aynı örnek yeniden üretilir.

Doğrudan oluşturmayın.

device#

Temel Device.

rssi#

dBm cinsinden son bildirilen RSSI.

adv_data#

Ham reklam yükü (bytes veya None).

resp_data#

Aktif tarama etkinse, ham tarama yanıtı yükü (bytes veya None).

connectable#

En son reklam bağlanabilir nitelikteyse True olur.

name() str | None#

Yükten tam (veya kısaltılmış) reklamı yapılan yerel adı çözer veya yoksa None döndürür.

services() Iterator[bluetooth.UUID]#

16/32/128-bit hizmet listesi alanlarında reklamı yapılan her bluetooth.UUID değerini üreten bir üreteç (generator).

manufacturer(filter: int | None = None) Iterator[tuple[int, bytes]]#

Üreticiye özgü reklam alanlarından (company_id, data) demetlerini üreten bir üreteç (generator).

filter

Verilirse, yalnızca şirket kimliği eşleşen girdileri üretir.

class aioble.Service(uuid: bluetooth.UUID)#

Yerel bir GATT hizmeti. Bir hizmeti bir veya daha fazla Characteristic örneğiyle oluşturun, ardından register_services fonksiyonuna geçirin.

uuid

Hizmet UUID’si.

uuid#

Hizmet UUID’si.

characteristics#

Bu hizmete bağlı Characteristic nesnelerinin listesi.

class aioble.Characteristic(service: Service, uuid: bluetooth.UUID, read: bool = False, write: bool = False, write_no_response: bool = False, notify: bool = False, indicate: bool = False, initial: bytes | None = None, capture: bool = False)#

Yerel bir GATT özelliği. Bir tane oluşturmak, onu otomatik olarak service öğesine ekler.

service

Sahip olan Service.

uuid

Özellik UUID’si.

read, write, write_no_response, notify, indicate

Desteklenen GATT işlemlerini seçen mantıksal (Boolean) değerler.

initial

İsteğe bağlı başlangıç değeri (bytes).

capture

True ise, yazılan değerler kuyruğa alınır (en fazla 10 derinliğinde), böylece arka arkaya gelen hızlı yazmalar kaybolmaz. Her written çağrısı ardından bir (connection, data) demeti döndürür.

uuid#

Özellik UUID’si.

flags#

Kurucudan oluşturulan GATT özellik bayraklarının bit maskesi.

descriptors#

Bu özelliğe bağlı Descriptor nesnelerinin listesi.

read() bytes#

Geçerli değeri yerel GATT veritabanından okur.

write(data: bytes, send_update: bool = False) None#

Yerel GATT veritabanındaki değeri günceller.

data

Yeni değer baytları.

send_update

True ise, ayrıca abone olan her bağlantıya bildirim/gösterge gönderir.

notify(connection: DeviceConnection, data: bytes | None = None) None#

connection öğesine bir GATT Notify gönderir.

connection

Hedef istemci bağlantısı.

data

Gönderilecek yük. None ise, geçerli yerel değer gönderilir.

indicate(connection: DeviceConnection, data: bytes | None = None, timeout_ms: int = 1000) Awaitable[None]#

Asenkron. connection öğesine bir GATT Indicate gönderir ve istemci onayını bekler. Sıfır olmayan bir durumda GattError yükseltir.

connection

Hedef istemci bağlantısı.

data

Gösterilecek yük veya yerel değeri göndermek için None.

timeout_ms

Onayın beklenmesi için maksimum süre.

written(timeout_ms: int | None = None) Awaitable[DeviceConnection | tuple[DeviceConnection, bytes]]#

Asenkron. Uzak bir yazmayı bekler. Yazan DeviceConnection nesnesini veya özellik capture=True ile oluşturulduysa (connection, data) döndürür.

timeout_ms

Maksimum bekleme süresi. None sonsuza kadar bekler.

on_read(connection: DeviceConnection) int#

Uzak bir okuma alındığında senkron olarak çağrılan geçersiz kılma (override) kancası. Okumaya izin vermek için 0 veya reddetmek için sıfır olmayan bir ATT hata kodu döndürür. Varsayılan uygulama 0 döndürür.

class aioble.BufferedCharacteristic(service: Service, uuid: bluetooth.UUID, max_len: int = 20, append: bool = False, **kwargs)#

Arkaplandaki GATT arabelleği yapılandırılabilen bir Characteristic. Varsayılan öznitelik boyutundan daha büyük değerleri almak veya arka arkaya yazmaları kuyruğa almak için kullanışlıdır.

max_len

Bayt cinsinden arabellek boyutu.

append

True ise, ardışık yazmalar üzerine yazmak yerine arabelleğe eklenir.

Diğer argümanlar Characteristic öğesine iletilir.

class aioble.Descriptor(characteristic: Characteristic, uuid: bluetooth.UUID, read: bool = False, write: bool = False, initial: bytes | None = None)#

Yerel bir GATT tanımlayıcısı. Bir tane oluşturmak, onu otomatik olarak characteristic öğesine ekler. Characteristic öğesinden read, write ve written yöntemlerini devralır.

characteristic

Sahip olan Characteristic.

uuid

Tanımlayıcı UUID’si.

read, write

Desteklenen GATT işlemlerini seçen mantıksal (Boolean) değerler.

initial

İsteğe bağlı başlangıç değeri (bytes).

class aioble.ClientService#

Bir eşte (peer) keşfedilen uzak bir GATT hizmeti. DeviceConnection.service() tarafından döndürülür veya DeviceConnection.services() üzerinden yinelenir.

Doğrudan oluşturmayın.

connection#

Sahip olan DeviceConnection.

uuid#

Uzak hizmet UUID’si.

characteristic(uuid: bluetooth.UUID, timeout_ms: int = 2000) Awaitable[ClientCharacteristic | None]#

Asenkron. UUID’ye göre tek bir özelliği keşfeder veya bulunamazsa None döndürür.

characteristics(uuid: bluetooth.UUID | None = None, timeout_ms: int = 2000) ClientDiscover#

ClientCharacteristic nesnelerinin asenkron bir yineleyicisini döndürür. async for ile kullanın ve döngüyü sonuna kadar çalıştırın.

uuid

İsteğe bağlı UUID filtresi.

timeout_ms

Keşif başına zaman aşımı.

class aioble.ClientCharacteristic#

Bir eşte (peer) keşfedilen uzak bir GATT özelliği. ClientService.characteristic() tarafından döndürülür veya ClientService.characteristics() üzerinden yinelenir.

Doğrudan oluşturmayın.

service#

Sahip olan ClientService.

uuid#

Özellik UUID’si.

properties#

Eş tarafından bildirilen, desteklenen GATT işlemlerinin bit maskesi.

read(timeout_ms: int = 1000) Awaitable[bytes]#

Asenkron. Bir GATT Read gönderir ve değeri döndürür. Sıfır olmayan bir durumda GattError yükseltir.

timeout_ms

Okuma zaman aşımı.

write(data: bytes, response: bool | None = None, timeout_ms: int = 1000) Awaitable[None]#

Asenkron. Bir GATT Write gönderir.

data

Yazılacak değer.

response

Bir yazma yanıtı gerektirmek (ve başarısızlıkta GattError yükseltmek) için True. Yanıtsız yazma için False. None (varsayılan), eşin reklamını yaptığına göre otomatik seçer.

timeout_ms

Yazma zaman aşımı (yalnızca response True ise geçerlidir).

notified(timeout_ms: int | None = None) Awaitable[bytes]#

Asenkron. Bu özellikteki bir sonraki bildirimi bekler ve yükünü döndürür. Halihazırda kuyruğa alınmış bir bildirim varsa hemen döner.

timeout_ms

Maksimum bekleme süresi. None sonsuza kadar bekler.

indicated(timeout_ms: int | None = None) Awaitable[bytes]#

Asenkron. Bu özellikteki bir sonraki göstergeyi bekler ve yükünü döndürür.

timeout_ms

Maksimum bekleme süresi.

subscribe(notify: bool = True, indicate: bool = False) Awaitable[None]#

Asenkron. Bildirimler ve/veya göstergeler için abone olmak (veya aboneliği kaldırmak) üzere Client Characteristic Configuration Descriptor (CCCD) öğesini yazar.

notify

Bildirimleri etkinleştirir.

indicate

Göstergeleri etkinleştirir.

descriptor(uuid: bluetooth.UUID, timeout_ms: int = 2000) Awaitable[ClientDescriptor | None]#

Asenkron. UUID’ye göre tek bir tanımlayıcıyı keşfeder veya bulunamazsa None döndürür.

descriptors(timeout_ms: int = 2000) ClientDiscover#

ClientDescriptor nesnelerinin asenkron bir yineleyicisini döndürür. async for ile kullanın ve döngüyü sonuna kadar çalıştırın.

class aioble.ClientDescriptor#

Bir eşte (peer) keşfedilen uzak bir GATT tanımlayıcısı. ClientCharacteristic öğesinden read ve write yöntemlerini devralır.

Doğrudan oluşturmayın.

characteristic#

Sahip olan ClientCharacteristic.

uuid#

Tanımlayıcı UUID’si.

class aioble.L2CAPChannel#

Etkin bir L2CAP bağlantı odaklı kanal. DeviceConnection.l2cap_accept() veya DeviceConnection.l2cap_connect() tarafından döndürülür. Çıkışta otomatik olarak bağlantıyı kesen bir async with bağlam yöneticisi olarak kullanımı destekler.

Doğrudan oluşturmayın.

our_mtu#

Eşin tek bir SDU içinde bize gönderebileceği bayt cinsinden maksimum boyut.

peer_mtu#

Tek bir SDU içinde eşe gönderebileceğimiz bayt cinsinden maksimum boyut.

available() bool#

Arabelleğe alınmış alma verisi hazırsa (yani recvinto bloklamayacaksa) senkron olarak True döndürür.

recvinto(buf: bytearray, timeout_ms: int | None = None) Awaitable[int]#

Asenkron. buf içine alır ve okunan bayt sayısını döndürür. Kanal boşsa yeni veriyi bekler.

buf

Doldurulacak önceden ayrılmış arabellek.

timeout_ms

Maksimum bekleme süresi. None sonsuza kadar bekler.

send(buf: bytes, timeout_ms: int | None = None, chunk_size: int | None = None) Awaitable[None]#

Asenkron. buf öğesini kanalda gönderir, daha büyük yükleri MTU boyutundaki parçalara böler. Gerektiğinde akış denetimi kredilerini bekler.

buf

Gönderilecek bayt benzeri nesne.

timeout_ms

Parça başına maksimum bekleme süresi.

chunk_size

Çağrı başına parça boyutu için isteğe bağlı geçersiz kılma. min(our_mtu * 2, peer_mtu) ile sınırlandırılır.

flush(timeout_ms: int | None = None) Awaitable[None]#

Asenkron. Duraklamış herhangi bir send işlemi denetleyici tarafından boşaltılana kadar bekler.

timeout_ms

Maksimum bekleme süresi.

disconnect(timeout_ms: int = 1000) Awaitable[None]#

Asenkron. Kanalın bağlantısını keser ve bağlantı kesme IRQ’sunu bekler.

timeout_ms

Maksimum bekleme süresi.

disconnected(timeout_ms: int = 1000) Awaitable[None]#

Asenkron. Kanalın iki taraftan biri tarafından bağlantısının kesilmesine kadar bekler.

timeout_ms

Maksimum bekleme süresi.