33from collections .abc import AsyncGenerator , Generator , Iterator
44from contextlib import contextmanager , suppress
55from dataclasses import dataclass
6- from typing import Protocol , Self , cast
6+ from ssl import SSLContext
7+ from typing import Literal , Protocol , Self , cast
78
89from stompman .errors import ConnectionLostError
910from stompman .frames import AnyClientFrame , AnyServerFrame
1415class AbstractConnection (Protocol ):
1516 @classmethod
1617 async def connect (
17- cls , * , host : str , port : int , timeout : int , read_max_chunk_size : int , read_timeout : int
18+ cls ,
19+ * ,
20+ host : str ,
21+ port : int ,
22+ timeout : int ,
23+ read_max_chunk_size : int ,
24+ read_timeout : int ,
25+ ssl : Literal [True ] | SSLContext | None ,
1826 ) -> Self | None : ...
1927 async def close (self ) -> None : ...
2028 def write_heartbeat (self ) -> None : ...
@@ -36,17 +44,31 @@ class Connection(AbstractConnection):
3644 writer : asyncio .StreamWriter
3745 read_max_chunk_size : int
3846 read_timeout : int
47+ ssl : Literal [True ] | SSLContext | None
3948
4049 @classmethod
4150 async def connect (
42- cls , * , host : str , port : int , timeout : int , read_max_chunk_size : int , read_timeout : int
51+ cls ,
52+ * ,
53+ host : str ,
54+ port : int ,
55+ timeout : int ,
56+ read_max_chunk_size : int ,
57+ read_timeout : int ,
58+ ssl : Literal [True ] | SSLContext | None ,
4359 ) -> Self | None :
4460 try :
4561 reader , writer = await asyncio .wait_for (asyncio .open_connection (host , port ), timeout = timeout )
4662 except (TimeoutError , ConnectionError , socket .gaierror ):
4763 return None
4864 else :
49- return cls (reader = reader , writer = writer , read_max_chunk_size = read_max_chunk_size , read_timeout = read_timeout )
65+ return cls (
66+ reader = reader ,
67+ writer = writer ,
68+ read_max_chunk_size = read_max_chunk_size ,
69+ read_timeout = read_timeout ,
70+ ssl = ssl ,
71+ )
5072
5173 async def close (self ) -> None :
5274 self .writer .close ()
0 commit comments