@@ -513,7 +513,13 @@ internal void Send(int clientId, string messageType, string channelName, byte[]
513513 //Client trying to send data to host
514514 clientId = serverClientId ;
515515 }
516- using ( MemoryStream stream = new MemoryStream ( ) )
516+ //2 bytes for messageType, 2 bytes for buffer length and one byte for target bool
517+ int sizeOfStream = 5 ;
518+ if ( networkId != null )
519+ sizeOfStream += 4 ;
520+ sizeOfStream += data . Length ;
521+
522+ using ( MemoryStream stream = new MemoryStream ( sizeOfStream ) )
517523 {
518524 using ( BinaryWriter writer = new BinaryWriter ( stream ) )
519525 {
@@ -524,14 +530,19 @@ internal void Send(int clientId, string messageType, string channelName, byte[]
524530 writer . Write ( ( ushort ) data . Length ) ;
525531 writer . Write ( data ) ;
526532 }
527- byte [ ] dataToSend = stream . ToArray ( ) ;
528- NetworkTransport . Send ( hostId , clientId , MessageManager . channels [ channelName ] , dataToSend , dataToSend . Length , out error ) ;
533+ NetworkTransport . Send ( hostId , clientId , MessageManager . channels [ channelName ] , stream . GetBuffer ( ) , sizeOfStream , out error ) ;
529534 }
530535 }
531536
532537 internal void Send ( int [ ] clientIds , string messageType , string channelName , byte [ ] data , uint ? networkId = null )
533538 {
534- using ( MemoryStream stream = new MemoryStream ( ) )
539+ //2 bytes for messageType, 2 bytes for buffer length and one byte for target bool
540+ int sizeOfStream = 5 ;
541+ if ( networkId != null )
542+ sizeOfStream += 4 ;
543+ sizeOfStream += data . Length ;
544+
545+ using ( MemoryStream stream = new MemoryStream ( sizeOfStream ) )
535546 {
536547 using ( BinaryWriter writer = new BinaryWriter ( stream ) )
537548 {
@@ -542,7 +553,6 @@ internal void Send(int[] clientIds, string messageType, string channelName, byte
542553 writer . Write ( ( ushort ) data . Length ) ;
543554 writer . Write ( data ) ;
544555 }
545- byte [ ] dataToSend = stream . ToArray ( ) ;
546556 int channel = MessageManager . channels [ channelName ] ;
547557 for ( int i = 0 ; i < clientIds . Length ; i ++ )
548558 {
@@ -560,14 +570,20 @@ internal void Send(int[] clientIds, string messageType, string channelName, byte
560570 //Client trying to send data to host
561571 clientId = serverClientId ;
562572 }
563- NetworkTransport . Send ( hostId , clientId , channel , dataToSend , dataToSend . Length , out error ) ;
573+ NetworkTransport . Send ( hostId , clientId , channel , stream . GetBuffer ( ) , sizeOfStream , out error ) ;
564574 }
565575 }
566576 }
567577
568578 internal void Send ( List < int > clientIds , string messageType , string channelName , byte [ ] data , uint ? networkId = null )
569579 {
570- using ( MemoryStream stream = new MemoryStream ( ) )
580+ //2 bytes for messageType, 2 bytes for buffer length and one byte for target bool
581+ int sizeOfStream = 5 ;
582+ if ( networkId != null )
583+ sizeOfStream += 4 ;
584+ sizeOfStream += data . Length ;
585+
586+ using ( MemoryStream stream = new MemoryStream ( sizeOfStream ) )
571587 {
572588 using ( BinaryWriter writer = new BinaryWriter ( stream ) )
573589 {
@@ -578,7 +594,6 @@ internal void Send(List<int> clientIds, string messageType, string channelName,
578594 writer . Write ( ( ushort ) data . Length ) ;
579595 writer . Write ( data ) ;
580596 }
581- byte [ ] dataToSend = stream . ToArray ( ) ;
582597 int channel = MessageManager . channels [ channelName ] ;
583598 for ( int i = 0 ; i < clientIds . Count ; i ++ )
584599 {
@@ -596,14 +611,20 @@ internal void Send(List<int> clientIds, string messageType, string channelName,
596611 //Client trying to send data to host
597612 clientId = serverClientId ;
598613 }
599- NetworkTransport . Send ( hostId , clientId , channel , dataToSend , dataToSend . Length , out error ) ;
614+ NetworkTransport . Send ( hostId , clientId , channel , stream . GetBuffer ( ) , sizeOfStream , out error ) ;
600615 }
601616 }
602617 }
603618
604619 internal void Send ( string messageType , string channelName , byte [ ] data , uint ? networkId = null )
605620 {
606- using ( MemoryStream stream = new MemoryStream ( ) )
621+ //2 bytes for messageType, 2 bytes for buffer length and one byte for target bool
622+ int sizeOfStream = 5 ;
623+ if ( networkId != null )
624+ sizeOfStream += 4 ;
625+ sizeOfStream += data . Length ;
626+
627+ using ( MemoryStream stream = new MemoryStream ( sizeOfStream ) )
607628 {
608629 using ( BinaryWriter writer = new BinaryWriter ( stream ) )
609630 {
@@ -614,7 +635,6 @@ internal void Send(string messageType, string channelName, byte[] data, uint? ne
614635 writer . Write ( ( ushort ) data . Length ) ;
615636 writer . Write ( data ) ;
616637 }
617- byte [ ] dataToSend = stream . ToArray ( ) ;
618638 int channel = MessageManager . channels [ channelName ] ;
619639 foreach ( KeyValuePair < int , NetworkedClient > pair in connectedClients )
620640 {
@@ -632,15 +652,21 @@ internal void Send(string messageType, string channelName, byte[] data, uint? ne
632652 //Client trying to send data to host
633653 clientId = serverClientId ;
634654 }
635- NetworkTransport . Send ( hostId , clientId , channel , dataToSend , dataToSend . Length , out error ) ;
655+ NetworkTransport . Send ( hostId , clientId , channel , stream . GetBuffer ( ) , sizeOfStream , out error ) ;
636656
637657 }
638658 }
639659 }
640660
641661 internal void Send ( string messageType , string channelName , byte [ ] data , int clientIdToIgnore , uint ? networkId = null )
642662 {
643- using ( MemoryStream stream = new MemoryStream ( ) )
663+ //2 bytes for messageType, 2 bytes for buffer length and one byte for target bool
664+ int sizeOfStream = 5 ;
665+ if ( networkId != null )
666+ sizeOfStream += 4 ;
667+ sizeOfStream += data . Length ;
668+
669+ using ( MemoryStream stream = new MemoryStream ( sizeOfStream ) )
644670 {
645671 using ( BinaryWriter writer = new BinaryWriter ( stream ) )
646672 {
@@ -651,7 +677,6 @@ internal void Send(string messageType, string channelName, byte[] data, int clie
651677 writer . Write ( ( ushort ) data . Length ) ;
652678 writer . Write ( data ) ;
653679 }
654- byte [ ] dataToSend = stream . ToArray ( ) ;
655680 int channel = MessageManager . channels [ channelName ] ;
656681 foreach ( KeyValuePair < int , NetworkedClient > pair in connectedClients )
657682 {
@@ -671,7 +696,7 @@ internal void Send(string messageType, string channelName, byte[] data, int clie
671696 //Client trying to send data to host
672697 clientId = serverClientId ;
673698 }
674- NetworkTransport . Send ( hostId , clientId , channel , dataToSend , dataToSend . Length , out error ) ;
699+ NetworkTransport . Send ( hostId , clientId , channel , stream . GetBuffer ( ) , sizeOfStream , out error ) ;
675700 }
676701 }
677702 }
0 commit comments