@@ -876,127 +876,127 @@ private void HandleRawTransportPoll(NetEventType eventType, ulong clientId, stri
876
876
}
877
877
}
878
878
879
+ private readonly BitStream inputStreamWrapper = new BitStream ( new byte [ 0 ] ) ;
880
+
879
881
private void HandleIncomingData ( ulong clientId , string channelName , ArraySegment < byte > data , float receiveTime )
880
882
{
881
883
if ( LogHelper . CurrentLogLevel <= LogLevel . Developer ) LogHelper . LogInfo ( "Unwrapping Data Header" ) ;
882
884
883
- using ( BitStream inputStream = new BitStream ( data . Array ) )
884
- {
885
- inputStream . SetLength ( data . Count + data . Offset ) ;
886
- inputStream . Position = data . Offset ;
885
+ inputStreamWrapper . SetTarget ( data . Array ) ;
886
+ inputStreamWrapper . SetLength ( data . Count + data . Offset ) ;
887
+ inputStreamWrapper . Position = data . Offset ;
887
888
888
- using ( BitStream messageStream = MessagePacker . UnwrapMessage ( inputStream , clientId , out byte messageType , out SecuritySendFlags security ) )
889
+ using ( BitStream messageStream = MessagePacker . UnwrapMessage ( inputStreamWrapper , clientId , out byte messageType , out SecuritySendFlags security ) )
890
+ {
891
+ if ( messageStream == null )
889
892
{
890
- if ( messageStream == null )
891
- {
892
- if ( LogHelper . CurrentLogLevel <= LogLevel . Error ) LogHelper . LogError ( "Message unwrap could not be completed. Was the header corrupt? Crypto error?" ) ;
893
- return ;
894
- }
895
- else if ( messageType == MLAPIConstants . INVALID )
896
- {
897
- if ( LogHelper . CurrentLogLevel <= LogLevel . Error ) LogHelper . LogError ( "Message unwrap read an invalid messageType" ) ;
898
- return ;
899
- }
893
+ if ( LogHelper . CurrentLogLevel <= LogLevel . Error ) LogHelper . LogError ( "Message unwrap could not be completed. Was the header corrupt? Crypto error?" ) ;
894
+ return ;
895
+ }
896
+ else if ( messageType == MLAPIConstants . INVALID )
897
+ {
898
+ if ( LogHelper . CurrentLogLevel <= LogLevel . Error ) LogHelper . LogError ( "Message unwrap read an invalid messageType" ) ;
899
+ return ;
900
+ }
900
901
901
- uint headerByteSize = ( uint ) Arithmetic . VarIntSize ( messageType ) ;
902
- NetworkProfiler . StartEvent ( TickType . Receive , ( uint ) ( data . Count - headerByteSize ) , channelName , messageType ) ;
902
+ uint headerByteSize = ( uint ) Arithmetic . VarIntSize ( messageType ) ;
903
+ NetworkProfiler . StartEvent ( TickType . Receive , ( uint ) ( data . Count - headerByteSize ) , channelName , messageType ) ;
903
904
904
- if ( LogHelper . CurrentLogLevel <= LogLevel . Developer ) LogHelper . LogInfo ( "Data Header: messageType=" + messageType ) ;
905
+ if ( LogHelper . CurrentLogLevel <= LogLevel . Developer ) LogHelper . LogInfo ( "Data Header: messageType=" + messageType ) ;
905
906
906
- // Client tried to send a network message that was not the connection request before he was accepted.
907
- if ( IsServer && ( NetworkConfig . EnableEncryption && PendingClients . ContainsKey ( clientId ) && PendingClients [ clientId ] . ConnectionState == PendingClient . State . PendingHail && messageType != MLAPIConstants . MLAPI_CERTIFICATE_HAIL_RESPONSE ) ||
908
- ( PendingClients . ContainsKey ( clientId ) && PendingClients [ clientId ] . ConnectionState == PendingClient . State . PendingConnection && messageType != MLAPIConstants . MLAPI_CONNECTION_REQUEST ) )
909
- {
910
- if ( LogHelper . CurrentLogLevel <= LogLevel . Normal ) LogHelper . LogWarning ( "Message recieved from clientId " + clientId + " before it has been accepted" ) ;
911
- return ;
912
- }
907
+ // Client tried to send a network message that was not the connection request before he was accepted.
908
+ if ( IsServer && ( NetworkConfig . EnableEncryption && PendingClients . ContainsKey ( clientId ) && PendingClients [ clientId ] . ConnectionState == PendingClient . State . PendingHail && messageType != MLAPIConstants . MLAPI_CERTIFICATE_HAIL_RESPONSE ) ||
909
+ ( PendingClients . ContainsKey ( clientId ) && PendingClients [ clientId ] . ConnectionState == PendingClient . State . PendingConnection && messageType != MLAPIConstants . MLAPI_CONNECTION_REQUEST ) )
910
+ {
911
+ if ( LogHelper . CurrentLogLevel <= LogLevel . Normal ) LogHelper . LogWarning ( "Message recieved from clientId " + clientId + " before it has been accepted" ) ;
912
+ return ;
913
+ }
913
914
914
- #region INTERNAL MESSAGE
915
+ #region INTERNAL MESSAGE
915
916
916
- switch ( messageType )
917
- {
918
- case MLAPIConstants . MLAPI_CONNECTION_REQUEST :
919
- if ( IsServer )
920
- InternalMessageHandler . HandleConnectionRequest ( clientId , messageStream ) ;
921
- break ;
922
- case MLAPIConstants . MLAPI_CONNECTION_APPROVED :
923
- if ( IsClient )
924
- InternalMessageHandler . HandleConnectionApproved ( clientId , messageStream , receiveTime ) ;
925
- break ;
926
- case MLAPIConstants . MLAPI_ADD_OBJECT :
927
- if ( IsClient ) InternalMessageHandler . HandleAddObject ( clientId , messageStream ) ;
928
- break ;
929
- case MLAPIConstants . MLAPI_DESTROY_OBJECT :
930
- if ( IsClient ) InternalMessageHandler . HandleDestroyObject ( clientId , messageStream ) ;
931
- break ;
932
- case MLAPIConstants . MLAPI_SWITCH_SCENE :
933
- if ( IsClient ) InternalMessageHandler . HandleSwitchScene ( clientId , messageStream ) ;
934
- break ;
935
- case MLAPIConstants . MLAPI_CHANGE_OWNER :
936
- if ( IsClient ) InternalMessageHandler . HandleChangeOwner ( clientId , messageStream ) ;
937
- break ;
938
- case MLAPIConstants . MLAPI_ADD_OBJECTS :
939
- if ( IsClient ) InternalMessageHandler . HandleAddObjects ( clientId , messageStream ) ;
940
- break ;
941
- case MLAPIConstants . MLAPI_DESTROY_OBJECTS :
942
- if ( IsClient ) InternalMessageHandler . HandleDestroyObjects ( clientId , messageStream ) ;
943
- break ;
944
- case MLAPIConstants . MLAPI_TIME_SYNC :
945
- if ( IsClient ) InternalMessageHandler . HandleTimeSync ( clientId , messageStream , receiveTime ) ;
946
- break ;
947
- case MLAPIConstants . MLAPI_NETWORKED_VAR_DELTA :
948
- InternalMessageHandler . HandleNetworkedVarDelta ( clientId , messageStream ) ;
949
- break ;
950
- case MLAPIConstants . MLAPI_NETWORKED_VAR_UPDATE :
951
- InternalMessageHandler . HandleNetworkedVarUpdate ( clientId , messageStream ) ;
952
- break ;
953
- case MLAPIConstants . MLAPI_SERVER_RPC :
954
- if ( IsServer ) InternalMessageHandler . HandleServerRPC ( clientId , messageStream ) ;
955
- break ;
956
- case MLAPIConstants . MLAPI_SERVER_RPC_REQUEST :
957
- if ( IsServer ) InternalMessageHandler . HandleServerRPCRequest ( clientId , messageStream , channelName , security ) ;
958
- break ;
959
- case MLAPIConstants . MLAPI_SERVER_RPC_RESPONSE :
960
- if ( IsClient ) InternalMessageHandler . HandleServerRPCResponse ( clientId , messageStream ) ;
961
- break ;
962
- case MLAPIConstants . MLAPI_CLIENT_RPC :
963
- if ( IsClient ) InternalMessageHandler . HandleClientRPC ( clientId , messageStream ) ;
964
- break ;
965
- case MLAPIConstants . MLAPI_CLIENT_RPC_REQUEST :
966
- if ( IsClient ) InternalMessageHandler . HandleClientRPCRequest ( clientId , messageStream , channelName , security ) ;
967
- break ;
968
- case MLAPIConstants . MLAPI_CLIENT_RPC_RESPONSE :
969
- if ( IsServer ) InternalMessageHandler . HandleClientRPCResponse ( clientId , messageStream ) ;
970
- break ;
971
- case MLAPIConstants . MLAPI_UNNAMED_MESSAGE :
972
- InternalMessageHandler . HandleUnnamedMessage ( clientId , messageStream ) ;
973
- break ;
974
- case MLAPIConstants . MLAPI_NAMED_MESSAGE :
975
- InternalMessageHandler . HandleNamedMessage ( clientId , messageStream ) ;
976
- break ;
917
+ switch ( messageType )
918
+ {
919
+ case MLAPIConstants . MLAPI_CONNECTION_REQUEST :
920
+ if ( IsServer )
921
+ InternalMessageHandler . HandleConnectionRequest ( clientId , messageStream ) ;
922
+ break ;
923
+ case MLAPIConstants . MLAPI_CONNECTION_APPROVED :
924
+ if ( IsClient )
925
+ InternalMessageHandler . HandleConnectionApproved ( clientId , messageStream , receiveTime ) ;
926
+ break ;
927
+ case MLAPIConstants . MLAPI_ADD_OBJECT :
928
+ if ( IsClient ) InternalMessageHandler . HandleAddObject ( clientId , messageStream ) ;
929
+ break ;
930
+ case MLAPIConstants . MLAPI_DESTROY_OBJECT :
931
+ if ( IsClient ) InternalMessageHandler . HandleDestroyObject ( clientId , messageStream ) ;
932
+ break ;
933
+ case MLAPIConstants . MLAPI_SWITCH_SCENE :
934
+ if ( IsClient ) InternalMessageHandler . HandleSwitchScene ( clientId , messageStream ) ;
935
+ break ;
936
+ case MLAPIConstants . MLAPI_CHANGE_OWNER :
937
+ if ( IsClient ) InternalMessageHandler . HandleChangeOwner ( clientId , messageStream ) ;
938
+ break ;
939
+ case MLAPIConstants . MLAPI_ADD_OBJECTS :
940
+ if ( IsClient ) InternalMessageHandler . HandleAddObjects ( clientId , messageStream ) ;
941
+ break ;
942
+ case MLAPIConstants . MLAPI_DESTROY_OBJECTS :
943
+ if ( IsClient ) InternalMessageHandler . HandleDestroyObjects ( clientId , messageStream ) ;
944
+ break ;
945
+ case MLAPIConstants . MLAPI_TIME_SYNC :
946
+ if ( IsClient ) InternalMessageHandler . HandleTimeSync ( clientId , messageStream , receiveTime ) ;
947
+ break ;
948
+ case MLAPIConstants . MLAPI_NETWORKED_VAR_DELTA :
949
+ InternalMessageHandler . HandleNetworkedVarDelta ( clientId , messageStream ) ;
950
+ break ;
951
+ case MLAPIConstants . MLAPI_NETWORKED_VAR_UPDATE :
952
+ InternalMessageHandler . HandleNetworkedVarUpdate ( clientId , messageStream ) ;
953
+ break ;
954
+ case MLAPIConstants . MLAPI_SERVER_RPC :
955
+ if ( IsServer ) InternalMessageHandler . HandleServerRPC ( clientId , messageStream ) ;
956
+ break ;
957
+ case MLAPIConstants . MLAPI_SERVER_RPC_REQUEST :
958
+ if ( IsServer ) InternalMessageHandler . HandleServerRPCRequest ( clientId , messageStream , channelName , security ) ;
959
+ break ;
960
+ case MLAPIConstants . MLAPI_SERVER_RPC_RESPONSE :
961
+ if ( IsClient ) InternalMessageHandler . HandleServerRPCResponse ( clientId , messageStream ) ;
962
+ break ;
963
+ case MLAPIConstants . MLAPI_CLIENT_RPC :
964
+ if ( IsClient ) InternalMessageHandler . HandleClientRPC ( clientId , messageStream ) ;
965
+ break ;
966
+ case MLAPIConstants . MLAPI_CLIENT_RPC_REQUEST :
967
+ if ( IsClient ) InternalMessageHandler . HandleClientRPCRequest ( clientId , messageStream , channelName , security ) ;
968
+ break ;
969
+ case MLAPIConstants . MLAPI_CLIENT_RPC_RESPONSE :
970
+ if ( IsServer ) InternalMessageHandler . HandleClientRPCResponse ( clientId , messageStream ) ;
971
+ break ;
972
+ case MLAPIConstants . MLAPI_UNNAMED_MESSAGE :
973
+ InternalMessageHandler . HandleUnnamedMessage ( clientId , messageStream ) ;
974
+ break ;
975
+ case MLAPIConstants . MLAPI_NAMED_MESSAGE :
976
+ InternalMessageHandler . HandleNamedMessage ( clientId , messageStream ) ;
977
+ break ;
977
978
#if ! DISABLE_CRYPTOGRAPHY
978
- case MLAPIConstants . MLAPI_CERTIFICATE_HAIL:
979
- if ( IsClient ) InternalMessageHandler . HandleHailRequest ( clientId , messageStream ) ;
980
- break ;
981
- case MLAPIConstants . MLAPI_CERTIFICATE_HAIL_RESPONSE:
982
- if ( IsServer ) InternalMessageHandler . HandleHailResponse ( clientId , messageStream ) ;
983
- break ;
984
- case MLAPIConstants . MLAPI_GREETINGS:
985
- if ( IsClient ) InternalMessageHandler . HandleGreetings ( clientId , messageStream ) ;
986
- break ;
987
- #endif
988
- case MLAPIConstants . MLAPI_CLIENT_SWITCH_SCENE_COMPLETED :
989
- if ( IsServer ) InternalMessageHandler . HandleClientSwitchSceneCompleted ( clientId , messageStream ) ;
990
- break ;
991
- default :
992
- if ( LogHelper . CurrentLogLevel <= LogLevel . Error ) LogHelper . LogError ( "Read unrecognized messageType " + messageType ) ;
993
- break ;
994
- }
979
+ case MLAPIConstants . MLAPI_CERTIFICATE_HAIL:
980
+ if ( IsClient ) InternalMessageHandler . HandleHailRequest ( clientId , messageStream ) ;
981
+ break ;
982
+ case MLAPIConstants . MLAPI_CERTIFICATE_HAIL_RESPONSE:
983
+ if ( IsServer ) InternalMessageHandler . HandleHailResponse ( clientId , messageStream ) ;
984
+ break ;
985
+ case MLAPIConstants . MLAPI_GREETINGS:
986
+ if ( IsClient ) InternalMessageHandler . HandleGreetings ( clientId , messageStream ) ;
987
+ break ;
988
+ #endif
989
+ case MLAPIConstants . MLAPI_CLIENT_SWITCH_SCENE_COMPLETED :
990
+ if ( IsServer ) InternalMessageHandler . HandleClientSwitchSceneCompleted ( clientId , messageStream ) ;
991
+ break ;
992
+ default :
993
+ if ( LogHelper . CurrentLogLevel <= LogLevel . Error ) LogHelper . LogError ( "Read unrecognized messageType " + messageType ) ;
994
+ break ;
995
+ }
995
996
996
- #endregion
997
+ #endregion
997
998
998
- NetworkProfiler . EndEvent ( ) ;
999
- }
999
+ NetworkProfiler . EndEvent ( ) ;
1000
1000
}
1001
1001
}
1002
1002
0 commit comments