MCPcopy Create free account
hub / github.com/HumbleNet/HumbleNet / ILibProcessAsyncSocket

Function ILibProcessAsyncSocket

3rdparty/webrtc/Microstack/ILibAsyncSocket.c:878–1255  ·  view source on GitHub ↗

Internal method called when data is ready to be processed on an ILibAsyncSocket The ILibAsyncSocket with pending data

Source from the content-addressed store, hash-verified

876//
877// <param name="Reader">The ILibAsyncSocket with pending data</param>
878void ILibProcessAsyncSocket(struct ILibAsyncSocketModule *Reader, int pendingRead)
879{
880 #ifndef MICROSTACK_NOTLS
881 int ssllen;
882 int sslstate;
883 int sslerror;
884 SSL *wasssl;
885 #endif
886 int iBeginPointer = 0;
887 int iEndPointer = 0;
888 int iPointer = 0;
889 int bytesReceived = 0;
890 int len;
891 char *temp;
892
893 //
894 // If the thing isn't paused, and the user set the pointers such that we still have data
895 // in our buffers, we need to call the user back with that data, before we attempt to read
896 // more data off the network
897 //
898 if (!pendingRead)
899 {
900 if (Reader->internalSocket != ~0 && Reader->PAUSE <= 0 && Reader->BeginPointer != Reader->EndPointer)
901 {
902 iBeginPointer = Reader->BeginPointer;
903 iEndPointer = Reader->EndPointer;
904 iPointer = 0;
905
906 while (Reader->internalSocket != ~0 && Reader->PAUSE <= 0 && Reader->BeginPointer != Reader->EndPointer && Reader->EndPointer != 0)
907 {
908 Reader->EndPointer = Reader->EndPointer-Reader->BeginPointer;
909 Reader->BeginPointer = 0;
910 if (Reader->OnData != NULL)
911 {
912 Reader->OnData(Reader, Reader->buffer + iBeginPointer, &(iPointer), Reader->EndPointer, &(Reader->OnInterrupt), &(Reader->user), &(Reader->PAUSE));
913 }
914 iBeginPointer += iPointer;
915 Reader->EndPointer -= iPointer;
916 if (iPointer == 0) break;
917 iPointer = 0;
918 }
919 Reader->BeginPointer = iBeginPointer;
920 Reader->EndPointer = iEndPointer;
921 }
922 }
923
924 // Reading Body Only
925 if (Reader->BeginPointer == Reader->EndPointer)
926 {
927 Reader->BeginPointer = 0;
928 Reader->EndPointer = 0;
929 }
930 if (Reader->PAUSE > 0)
931 {
932 ILibRemoteLogging_printf(ILibChainGetLogger(Reader->Chain), ILibRemoteLogging_Modules_Microstack_AsyncSocket, ILibRemoteLogging_Flags_VerbosityLevel_2, "AsyncSocket[%p] is PAUSED", (void*)Reader);
933 }
934 if (!pendingRead || Reader->PAUSE > 0) return;
935

Callers 2

ILibAsyncSocket_CallbackFunction · 0.85
ILibAsyncSocket.cFile · 0.85

Calls 13

ILibRemoteLogging_printfFunction · 0.85
reallocFunction · 0.85
SSL_freeFunction · 0.85
SSL_readFunction · 0.85
SSL_get_errorFunction · 0.85
SSL_stateFunction · 0.85
ILib6to4Function · 0.85
AsyncSocket_TrackLockFunction · 0.85
AsyncSocket_TrackUnLockFunction · 0.85

Tested by

no test coverage detected