ISocket.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using Ryujinx.HLE.HOS.Services.Sockets.Bsd.Types;
  2. using System;
  3. using System.Net;
  4. using System.Net.Sockets;
  5. namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd
  6. {
  7. interface ISocket : IDisposable, IFileDescriptor
  8. {
  9. IPEndPoint RemoteEndPoint { get; }
  10. IPEndPoint LocalEndPoint { get; }
  11. AddressFamily AddressFamily { get; }
  12. SocketType SocketType { get; }
  13. ProtocolType ProtocolType { get; }
  14. IntPtr Handle { get; }
  15. LinuxError Receive(out int receiveSize, Span<byte> buffer, BsdSocketFlags flags);
  16. LinuxError ReceiveFrom(out int receiveSize, Span<byte> buffer, int size, BsdSocketFlags flags, out IPEndPoint remoteEndPoint);
  17. LinuxError Send(out int sendSize, ReadOnlySpan<byte> buffer, BsdSocketFlags flags);
  18. LinuxError SendTo(out int sendSize, ReadOnlySpan<byte> buffer, int size, BsdSocketFlags flags, IPEndPoint remoteEndPoint);
  19. LinuxError RecvMMsg(out int vlen, BsdMMsgHdr message, BsdSocketFlags flags, TimeVal timeout);
  20. LinuxError SendMMsg(out int vlen, BsdMMsgHdr message, BsdSocketFlags flags);
  21. LinuxError GetSocketOption(BsdSocketOption option, SocketOptionLevel level, Span<byte> optionValue);
  22. LinuxError SetSocketOption(BsdSocketOption option, SocketOptionLevel level, ReadOnlySpan<byte> optionValue);
  23. bool Poll(int microSeconds, SelectMode mode);
  24. LinuxError Bind(IPEndPoint localEndPoint);
  25. LinuxError Connect(IPEndPoint remoteEndPoint);
  26. LinuxError Listen(int backlog);
  27. LinuxError Accept(out ISocket newSocket);
  28. void Disconnect();
  29. LinuxError Shutdown(BsdSocketShutdownFlags how);
  30. void Close();
  31. }
  32. }