mirror of
https://github.com/Ylianst/MeshAgent
synced 2025-12-15 07:43:50 +00:00
1. Modified WebRTC_DataChannel to use union, to simplify struct def
2. Added ChainLink MetaData 3. Added 'ChainViewer' to allow JS to debug Chain events
This commit is contained in:
@@ -126,12 +126,12 @@ unsigned int ILibWrapper_ILibTransport_PendingBytesPtr(void *transport)
|
||||
return(ILibSCTP_GetPendingBytesToSend(((ILibWrapper_WebRTC_ConnectionStruct*)((ILibWrapper_WebRTC_DataChannel*)transport)->parent)->dtlsSession));
|
||||
}
|
||||
void ILibWrapper_InitializeDataChannel_Transport(ILibWrapper_WebRTC_DataChannel *dataChannel)
|
||||
{
|
||||
dataChannel->Chain = ((ILibWrapper_WebRTC_ConnectionStruct*)dataChannel->parent)->mFactory->ChainLink.ParentChain;
|
||||
dataChannel->IdentifierFlags = ILibTransports_WebRTC_DataChannel;
|
||||
dataChannel->ClosePtr = (ILibTransport_ClosePtr)ILibWrapper_WebRTC_DataChannel_Close;
|
||||
dataChannel->SendPtr = (ILibTransport_SendPtr)ILibWrapper_ILibTransport_SendSink;
|
||||
dataChannel->PendingBytesPtr = (ILibTransport_PendingBytesToSendPtr)ILibWrapper_ILibTransport_PendingBytesPtr;
|
||||
{
|
||||
dataChannel->Header.transport.ChainLink.ParentChain = ((ILibWrapper_WebRTC_ConnectionStruct*)dataChannel->parent)->mFactory->ChainLink.ParentChain;
|
||||
dataChannel->Header.transport.IdentifierFlags = ILibTransports_WebRTC_DataChannel;
|
||||
dataChannel->Header.transport.ClosePtr = (ILibTransport_ClosePtr)ILibWrapper_WebRTC_DataChannel_Close;
|
||||
dataChannel->Header.transport.SendPtr = (ILibTransport_SendPtr)ILibWrapper_ILibTransport_SendSink;
|
||||
dataChannel->Header.transport.PendingBytesPtr = (ILibTransport_PendingBytesToSendPtr)ILibWrapper_ILibTransport_PendingBytesPtr;
|
||||
}
|
||||
|
||||
short ILibWrapper_ReadShort(char* buffer, int offset)
|
||||
@@ -708,16 +708,16 @@ void ILibWrapper_WebRTC_OnDataSink(void* StunModule, void* module, unsigned shor
|
||||
|
||||
if(dc!=NULL)
|
||||
{
|
||||
if(dc->OnRawData!=NULL) {dc->OnRawData(dc, buffer, bufferLen, pid);}
|
||||
if(dc->OnStringData!=NULL && pid == 51) {dc->OnStringData(dc, buffer, bufferLen);}
|
||||
if(dc->OnBinaryData!=NULL && pid == 53) {dc->OnBinaryData(dc, buffer, bufferLen);}
|
||||
if(dc->Header.DataChannelCallbacks.OnRawData!=NULL) {dc->Header.DataChannelCallbacks.OnRawData(dc, buffer, bufferLen, pid);}
|
||||
if(dc->Header.DataChannelCallbacks.OnStringData!=NULL && pid == 51) {dc->Header.DataChannelCallbacks.OnStringData(dc, buffer, bufferLen);}
|
||||
if(dc->Header.DataChannelCallbacks.OnBinaryData!=NULL && pid == 53) {dc->Header.DataChannelCallbacks.OnBinaryData(dc, buffer, bufferLen);}
|
||||
}
|
||||
}
|
||||
void ILibWrapper_WebRTC_OnSendOK_EnumerateSink(ILibSparseArray sender, int index, void *value, void *user)
|
||||
{
|
||||
ILibWrapper_WebRTC_DataChannel *dc = (ILibWrapper_WebRTC_DataChannel*)value;
|
||||
|
||||
if (dc != NULL && dc->TransportSendOKPtr != NULL) { dc->TransportSendOKPtr(dc); }
|
||||
if (dc != NULL && dc->Header.transport.SendOkPtr != NULL) { dc->Header.transport.SendOkPtr(dc); }
|
||||
}
|
||||
void ILibWrapper_WebRTC_OnSendOKSink(void* StunModule, void* module, void* user)
|
||||
{
|
||||
@@ -756,7 +756,7 @@ int ILibWrapper_WebRTC_OnDataChannel(void *StunModule, void* WebRTCModule, unsig
|
||||
if((dataChannel = (ILibWrapper_WebRTC_DataChannel*)ILibSparseArray_Get(obj->DataChannels, (int)StreamId))==NULL)
|
||||
{
|
||||
dataChannel = (ILibWrapper_WebRTC_DataChannel*)ILibChain_Link_Allocate(sizeof(ILibWrapper_WebRTC_DataChannel), (int)ILibMemory_ExtraSize(obj));
|
||||
|
||||
dataChannel->Header.transport.ChainLink.MetaData = "ILibWrapper_WebRTC_DataChannel";
|
||||
dataChannel->parent = obj;
|
||||
dataChannel->streamId = StreamId;
|
||||
if((dataChannel->channelName = (char*)malloc(ChannelNameLength+1))==NULL){ILIBCRITICALEXIT(254);}
|
||||
@@ -849,6 +849,7 @@ ILibWrapper_WebRTC_ConnectionFactory ILibWrapper_WebRTC_ConnectionFactory_Create
|
||||
if (retVal == NULL) { ILIBCRITICALEXIT(254); }
|
||||
|
||||
memset(retVal, 0, sizeof(ILibWrapper_WebRTC_ConnectionFactoryStruct));
|
||||
retVal->ChainLink.MetaData = "ILibWrapper_WebRTC_ConnectionFactory";
|
||||
retVal->ChainLink.DestroyHandler = &ILibWrapper_WebRTC_ConnectionFactory_OnDestroy;
|
||||
ILibAddToChain(chain, retVal);
|
||||
|
||||
@@ -1254,7 +1255,7 @@ void ILibWrapper_WebRTC_DataChannel_Close(ILibWrapper_WebRTC_DataChannel* dataCh
|
||||
ILibWrapper_WebRTC_DataChannel* ILibWrapper_WebRTC_DataChannel_CreateEx(ILibWrapper_WebRTC_Connection connection, char* channelName, int channelNameLen, unsigned short streamId, ILibWrapper_WebRTC_DataChannel_OnDataChannelAck OnAckHandler)
|
||||
{
|
||||
ILibWrapper_WebRTC_DataChannel *retVal = (ILibWrapper_WebRTC_DataChannel*)ILibChain_Link_Allocate(sizeof(ILibWrapper_WebRTC_DataChannel), (int)ILibMemory_ExtraSize(connection));
|
||||
|
||||
retVal->Header.transport.ChainLink.MetaData = "ILibWrapper_WebRTC_DataChannel";
|
||||
retVal->parent = connection;
|
||||
if ((retVal->channelName = (char*)malloc(channelNameLen + 1)) == NULL) { ILIBCRITICALEXIT(254); }
|
||||
memcpy_s(retVal->channelName, channelNameLen + 1, channelName, channelNameLen);
|
||||
|
||||
Reference in New Issue
Block a user