Plasma Engine  2.0
Loading...
Searching...
No Matches
PipeChannel_Linux.h
1#pragma once
2
3#include <Foundation/FoundationInternal.h>
4PL_FOUNDATION_INTERNAL_HEADER
5
6#if PL_ENABLED(PL_PLATFORM_LINUX)
7
8# include <Foundation/Basics.h>
9# include <Foundation/Communication/IpcChannel.h>
10
11# include <sys/stat.h>
12# include <sys/types.h>
13
14
15class PL_FOUNDATION_DLL plPipeChannel_linux : public plIpcChannel
16{
17public:
18 plPipeChannel_linux(plStringView sAddress, Mode::Enum mode);
19 ~plPipeChannel_linux();
20
21private:
22 friend class plMessageLoop;
23 friend class plMessageLoop_linux;
24
25 // All functions from here on down are run from worker thread only
26 virtual void InternalConnect() override;
27 virtual void InternalDisconnect() override;
28 virtual void InternalSend() override;
29 virtual bool NeedWakeup() const override;
30
31 // These are called from MessageLoop_linux on OS events
32 void AcceptIncomingConnection();
33 void ProcessIncomingPackages();
34 void ProcessConnectSuccessfull();
35
36private:
37 plString m_serverSocketPath;
38 plString m_clientSocketPath;
39 int m_serverSocketFd = -1;
40 int m_clientSocketFd = -1;
41
42 plUInt8 m_InputBuffer[4096];
43 plUInt64 m_previousSendOffset = 0;
44};
45#endif
Base class for a communication channel between processes.
Definition IpcChannel.h:44
virtual void InternalConnect()=0
Called on worker thread after Connect was called.
virtual void InternalDisconnect()=0
Called on worker thread after Disconnect was called.
virtual bool NeedWakeup() const =0
Called by Send to determine whether the message loop need to be woken up.
virtual void InternalSend()=0
Called on worker thread to sent pending messages.
Internal sub-system used by plIpcChannel.
Definition MessageLoop.h:20
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34