@@ -398,7 +398,6 @@ def OnReadyForReading(self) :
398
398
except Exception as ex :
399
399
asyncTCPCli ._close ()
400
400
raise XAsyncTCPServerException ('Error when handling the "OnClientAccepted" event : %s' % ex )
401
- self ._asyncSocketsPool .NotifyNextReadyForWriting (asyncTCPCli , True )
402
401
403
402
# ------------------------------------------------------------------------
404
403
@@ -469,9 +468,10 @@ def __init__(self, asyncSocketsPool, cliSocket, srvAddr, cliAddr, bufSlot) :
469
468
self ._cliAddr = cliAddr if cliAddr else ('0.0.0.0' , 0 )
470
469
self ._onFailsToConnect = None
471
470
self ._onConnected = None
472
- self ._onLineRecv = None
473
471
self ._onDataRecv = None
474
- self ._onCanSend = None
472
+ self ._onDataRecvArg = None
473
+ self ._onDataSent = None
474
+ self ._onDataSentArg = None
475
475
self ._sizeToRead = None
476
476
self ._rdLinePos = None
477
477
self ._rdBufView = None
@@ -510,15 +510,16 @@ def OnReadyForReading(self) :
510
510
self ._rdLinePos = None
511
511
self ._asyncSocketsPool .NotifyNextReadyForReading (self , False )
512
512
self ._removeExpireTimeout ()
513
- if self ._onLineRecv :
513
+ if self ._onDataRecv :
514
+ line = self ._bufSlot .Buffer [:lineLen ]
514
515
try :
515
- line = self . _bufSlot . Buffer [: lineLen ] .decode ()
516
+ line = line .decode ()
516
517
except :
517
- break
518
+ pass
518
519
try :
519
- self ._onLineRecv (self , line )
520
+ self ._onDataRecv (self , line , self . _onDataRecvArg )
520
521
except Exception as ex :
521
- raise XAsyncTCPClientException ('Error when handling the "OnLineRecv " event : %s' % ex )
522
+ raise XAsyncTCPClientException ('Error when handling the "OnDataRecv " event : %s' % ex )
522
523
break
523
524
elif b != b'\r ' :
524
525
if self ._rdLinePos < self ._bufSlot .Size :
@@ -549,8 +550,9 @@ def OnReadyForReading(self) :
549
550
self ._removeExpireTimeout ()
550
551
if self ._onDataRecv :
551
552
size = self ._sizeToRead if self ._sizeToRead else n
553
+ data = memoryview (self ._bufSlot .Buffer )[:size ]
552
554
try :
553
- self ._onDataRecv (self , memoryview ( self ._bufSlot . Buffer )[: size ] )
555
+ self ._onDataRecv (self , data , self ._onDataRecvArg )
554
556
except Exception as ex :
555
557
raise XAsyncTCPClientException ('Error when handling the "OnDataRecv" event : %s' % ex )
556
558
else :
@@ -586,28 +588,30 @@ def OnReadyForWriting(self) :
586
588
self ._wrBufView = self ._wrBufView [n :]
587
589
if self ._wrBufView :
588
590
return
589
- self ._asyncSocketsPool .NotifyNextReadyForWriting (self , False )
590
- if self ._onCanSend :
591
- try :
592
- self ._onCanSend (self )
593
- except Exception as ex :
594
- raise XAsyncTCPClientException ('Error when handling the "OnCanSend " event : %s' % ex )
591
+ self ._asyncSocketsPool .NotifyNextReadyForWriting (self , False )
592
+ if self ._onDataSent :
593
+ try :
594
+ self ._onDataSent (self , self . _onDataSentArg )
595
+ except Exception as ex :
596
+ raise XAsyncTCPClientException ('Error when handling the "OnDataSent " event : %s' % ex )
595
597
596
598
# ------------------------------------------------------------------------
597
599
598
- def AsyncRecvLine (self , timeoutSec = None ) :
600
+ def AsyncRecvLine (self , onDataRecv = None , onDataRecvArg = None , timeoutSec = None ) :
599
601
if self ._rdLinePos is not None or self ._rdBufView :
600
602
raise XAsyncTCPClientException ('AsyncRecvLine : Already waiting asynchronous receive.' )
601
603
if self ._socket :
602
604
self ._setExpireTimeout (timeoutSec )
603
- self ._rdLinePos = 0
605
+ self ._rdLinePos = 0
606
+ self ._onDataRecv = onDataRecv
607
+ self ._onDataRecvArg = onDataRecvArg
604
608
self ._asyncSocketsPool .NotifyNextReadyForReading (self , True )
605
609
return True
606
610
return False
607
611
608
612
# ------------------------------------------------------------------------
609
613
610
- def AsyncRecvData (self , size = None , timeoutSec = None ) :
614
+ def AsyncRecvData (self , size = None , onDataRecv = None , onDataRecvArg = None , timeoutSec = None ) :
611
615
if self ._rdLinePos is not None or self ._rdBufView :
612
616
raise XAsyncTCPClientException ('AsyncRecvData : Already waiting asynchronous receive.' )
613
617
if self ._socket :
@@ -624,21 +628,25 @@ def AsyncRecvData(self, size=None, timeoutSec=None) :
624
628
else :
625
629
self ._sizeToRead = size
626
630
self ._setExpireTimeout (timeoutSec )
627
- self ._rdBufView = memoryview (self ._bufSlot .Buffer )[:size ]
631
+ self ._rdBufView = memoryview (self ._bufSlot .Buffer )[:size ]
632
+ self ._onDataRecv = onDataRecv
633
+ self ._onDataRecvArg = onDataRecvArg
628
634
self ._asyncSocketsPool .NotifyNextReadyForReading (self , True )
629
635
return True
630
636
return False
631
637
632
638
# ------------------------------------------------------------------------
633
639
634
- def AsyncSendData (self , data ) :
640
+ def AsyncSendData (self , data , onDataSent = None , onDataSentArg = None ) :
635
641
if self ._socket :
636
642
try :
637
643
if bytes ([data [0 ]]) :
638
644
if self ._wrBufView :
639
645
self ._wrBufView = memoryview (self ._wrBufView .tobytes () + data )
640
646
else :
641
647
self ._wrBufView = memoryview (data )
648
+ self ._onDataSent = onDataSent
649
+ self ._onDataSentArg = onDataSentArg
642
650
self ._asyncSocketsPool .NotifyNextReadyForWriting (self , True )
643
651
return True
644
652
except :
@@ -708,27 +716,6 @@ def OnConnected(self) :
708
716
def OnConnected (self , value ) :
709
717
self ._onConnected = value
710
718
711
- @property
712
- def OnLineRecv (self ) :
713
- return self ._onLineRecv
714
- @OnLineRecv .setter
715
- def OnLineRecv (self , value ) :
716
- self ._onLineRecv = value
717
-
718
- @property
719
- def OnDataRecv (self ) :
720
- return self ._onDataRecv
721
- @OnDataRecv .setter
722
- def OnDataRecv (self , value ) :
723
- self ._onDataRecv = value
724
-
725
- @property
726
- def OnCanSend (self ) :
727
- return self ._onCanSend
728
- @OnCanSend .setter
729
- def OnCanSend (self , value ) :
730
- self ._onCanSend = value
731
-
732
719
# ============================================================================
733
720
# ===( XAsyncUDPDatagram )====================================================
734
721
# ============================================================================
@@ -763,7 +750,6 @@ def Create(asyncSocketsPool, localAddr=None, recvbufLen=4096, broadcast=False) :
763
750
xAsyncUDPDatagram = XAsyncUDPDatagram (asyncSocketsPool , udpSocket , bufSlot )
764
751
if openRecv :
765
752
asyncSocketsPool .NotifyNextReadyForReading (xAsyncUDPDatagram , True )
766
- asyncSocketsPool .NotifyNextReadyForWriting (xAsyncUDPDatagram , True )
767
753
return xAsyncUDPDatagram
768
754
769
755
# ------------------------------------------------------------------------
@@ -773,8 +759,9 @@ def __init__(self, asyncSocketsPool, udpSocket, bufSlot) :
773
759
super ().__init__ (asyncSocketsPool , udpSocket , bufSlot )
774
760
self ._wrDgramFiFo = XFiFo ()
775
761
self ._onFailsToSend = None
776
- self ._onCanSend = None
777
- self ._onRecv = None
762
+ self ._onDataSent = None
763
+ self ._onDataSentArg = None
764
+ self ._onDataRecv = None
778
765
except :
779
766
raise XAsyncUDPDatagramException ('Error to creating XAsyncUDPDatagram, arguments are incorrects.' )
780
767
@@ -793,11 +780,11 @@ def OnReadyForReading(self) :
793
780
datagram = memoryview (buf )
794
781
except :
795
782
return
796
- if self ._onRecv :
783
+ if self ._onDataRecv :
797
784
try :
798
- self ._onRecv (self , remoteAddr , datagram )
785
+ self ._onDataRecv (self , remoteAddr , datagram )
799
786
except Exception as ex :
800
- raise XAsyncUDPDatagramException ('Error when handling the "OnRecv " event : %s' % ex )
787
+ raise XAsyncUDPDatagramException ('Error when handling the "OnDataRecv " event : %s' % ex )
801
788
802
789
803
790
# ------------------------------------------------------------------------
@@ -818,19 +805,21 @@ def OnReadyForWriting(self) :
818
805
if not self ._wrDgramFiFo .Empty :
819
806
return
820
807
self ._asyncSocketsPool .NotifyNextReadyForWriting (self , False )
821
- if self ._onCanSend :
808
+ if self ._onDataSent :
822
809
try :
823
- self ._onCanSend (self )
810
+ self ._onDataSent (self , self . _onDataSentArg )
824
811
except Exception as ex :
825
- raise XAsyncUDPDatagramException ('Error when handling the "OnCanSend " event : %s' % ex )
812
+ raise XAsyncUDPDatagramException ('Error when handling the "OnDataSent " event : %s' % ex )
826
813
827
814
# ------------------------------------------------------------------------
828
815
829
- def AsyncSendDatagram (self , datagram , remoteAddr ) :
816
+ def AsyncSendDatagram (self , datagram , remoteAddr , onDataSent = None , onDataSentArg = None ) :
830
817
if self ._socket :
831
818
try :
832
819
if bytes ([datagram [0 ]]) and len (remoteAddr ) == 2 :
833
820
self ._wrDgramFiFo .Put ( (datagram , remoteAddr ) )
821
+ self ._onDataSent = onDataSent
822
+ self ._onDataSentArg = onDataSentArg
834
823
self ._asyncSocketsPool .NotifyNextReadyForWriting (self , True )
835
824
return True
836
825
except :
@@ -848,11 +837,11 @@ def LocalAddr(self) :
848
837
return ('0.0.0.0' , 0 )
849
838
850
839
@property
851
- def OnRecv (self ) :
852
- return self ._onRecv
853
- @OnRecv .setter
854
- def OnRecv (self , value ) :
855
- self ._onRecv = value
840
+ def OnDataRecv (self ) :
841
+ return self ._onDataRecv
842
+ @OnDataRecv .setter
843
+ def OnDataRecv (self , value ) :
844
+ self ._onDataRecv = value
856
845
857
846
@property
858
847
def OnFailsToSend (self ) :
@@ -861,13 +850,6 @@ def OnFailsToSend(self) :
861
850
def OnFailsToSend (self , value ) :
862
851
self ._onFailsToSend = value
863
852
864
- @property
865
- def OnCanSend (self ) :
866
- return self ._onCanSend
867
- @OnCanSend .setter
868
- def OnCanSend (self , value ) :
869
- self ._onCanSend = value
870
-
871
853
# ============================================================================
872
854
# ===( XBufferSlot )==========================================================
873
855
# ============================================================================
0 commit comments