Beispiel #1
0
 public void SendSerializedData(int dataIndex, byte[] data, bool useSendInterval = false)
 {
     if (CanSend(useSendInterval))
     {
         PreSerialization newPreSerial = new PreSerialization(dataIndex, data.Length + 1);
         SendBytesWithDefinedStart(DataType.PreSerialization, newPreSerial.ToSerialization());
         SendBytesWithDefinedStart(DataType.Serialization, data);
     }
 }
Beispiel #2
0
        private void ProcessReceiving(byte[] receivedBytes)
        {
            if (newLength == -1)
            {
                ReceiveEventArgs receiveMessage = new ReceiveEventArgs(receivedBytes);
                if (OnReceived != null)
                {
                    OnReceived.Invoke(this, receiveMessage);
                }

                if (receiveMessage.MessageType == DataType.PreSerialization)
                {
                    object serializedObject = receiveMessage.SerializedObject;
                    if (serializedObject == null)
                    {
                        return;
                    }
                    PreSerialization nextSerialization = (PreSerialization)serializedObject;
                    newDataIndex = nextSerialization.DataIndex;
                    newLength    = nextSerialization.DataLength;
                    fullDataTemp = new byte[newLength];

                    recievedLength = 0;
                }
                else if (receiveMessage.MessageType == DataType.Close && closeForCommand)
                {
                    Close();
                }
            }
            else if (recievedLength > 0 || receivedBytes[0] == (byte)DataType.Serialization)
            {
                int restLength = newLength - recievedLength;
                int addCount   = Math.Min(restLength, receivedBytes.Length);

                Buffer.BlockCopy(receivedBytes, 0, fullDataTemp, recievedLength, addCount);

                if (restLength > addCount)
                {
                    recievedLength += addCount;
                }
                else
                {
                    // Done this data.
                    ReceivedFullData(newDataIndex, fullDataTemp);
                    newLength = -1;
                }
            }
        }