1
0
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:
Bryan Roe
2019-02-01 23:33:02 -08:00
parent 88c63b2976
commit aeaa229e31
17 changed files with 148 additions and 32 deletions

View File

@@ -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);