MaskKeyReader.cs 974 B

123456789101112131415161718192021222324252627282930313233343536
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace SuperWebSocket.Protocol.FramePartReader
  6. {
  7. class MaskKeyReader : DataFramePartReader
  8. {
  9. public override int Process(int lastLength, WebSocketDataFrame frame, out IDataFramePartReader nextPartReader)
  10. {
  11. int required = lastLength + 4;
  12. if (frame.Length < required)
  13. {
  14. nextPartReader = this;
  15. return -1;
  16. }
  17. frame.MaskKey = frame.InnerData.ToArrayData(lastLength, 4);
  18. if (frame.ActualPayloadLength == 0)
  19. {
  20. nextPartReader = null;
  21. return (int)((long)frame.Length - required);
  22. }
  23. nextPartReader = new PayloadDataReader();
  24. if (frame.Length > required)
  25. return nextPartReader.Process(required, frame, out nextPartReader);
  26. return 0;
  27. }
  28. }
  29. }