0.1 -> 0.2
Application
Хост и порт для запуска теперь передаются в методе Application.run
import cubes
app = cubes.Application('127.0.0.1', 25565)
app.run()
import cubes
app = cubes.Application()
app.run('127.0.0.1', 25565)
В хендлеры пакетов теперь первым аргументов передаётся packet_id
import cubes
async def handler(packet: cubes.ReadBuffer):
pass
import cubes
async def handler(packet_id: int, packet: cubes.ReadBuffer):
pass
Возвращаемое хендлером значение теперь игнорируется. Вы должны отправлять все пакеты самостоятельно
import cubes
async def handler(packet: cubes.ReadBuffer) -> Optional[cubes.WriteBuffer]:
"""Process Status Ping."""
return cubes.WriteBuffer().pack_varint(0x01).write(packet.read(8))
import cubes
async def handler(packet_id: int, packet: cubes.ReadBuffer) -> None:
"""Process Status Ping."""
await packet.connection.send(
cubes.WriteBuffer().pack_varint(0x01).write(packet_read(8)
)
ReadBuffer
Теперь для инициализации необходим аргумент connection
import cubes
...
buff = cubes.ReadBuffer()
import cubes
import cubes.abc
...
conn: cubes.abc.AbstractConnection
buff = cubes.ReadBuffer(conn)
Такой же аргумент появился и у метода from_reader
import asyncio
import cubes
...
reader: asyncio.StreamReader
buff = await cubes.ReadBuffer.from_reader(reader)
import asyncio
import cubes
import cubes.abc
...
conn: cubes.abc.AbstractConnection
reader: asyncio.StreamReader
buff = await cubes.ReadBuffer.from_reader(conn, reader)
Connection
Класс Сonnection
заменён на PlayerConnection
.
При его инициализации необходимо передавать инстанс Application
import asyncio
import cubes
...
reader: asyncio.StreamReader
writer: asyncio.StreamWriter
conn = cubes.Connection(reader, writer)
import asyncio
import cubes
import cubes.abc
...
reader: asyncio.StreamReader
writer: asyncio.StreamWriter
app: cubes.abc.Application
conn = cubes.Connection(reader, writer, app)
В метод close
и исключение СloseConnection
добавлен опциональный аргумент reason
import cubes
...
conn: cubes.PlayerConnection
reason: str
await conn.close(reason)
import cubes
...
reason: str
raise cubes.CloseConnection(reason)
Удалены методы set_current
и get_current
. Вместо get_current
используйте инстанс из property connection
у ReadBuffer
import cubes
...
async def handler(packet: cubes.ReadBuffer):
conn = cubes.Connection.get_current()
import cubes
...
async def handler(packet_id: int, packet: cubes.ReadBuffer):
conn = packet.connection