1#ifndef __SIPCOBJ_I__H__
2#define __SIPCOBJ_I__H__
4#include <interface/obj-ref-i.h>
17 UM_CALL_FUN = (WM_USER + 1000),
28 virtual int Write(
const void *data, UINT nLen) = 0;
29 virtual int Read(
void *buf, UINT nLen) = 0;
30 virtual UINT Tell()
const = 0;
31 virtual UINT Seek(SEEK mode,
int nOffset) = 0;
32 virtual void SetTail(UINT uPos) = 0;
33 virtual BOOL Lock(DWORD timeout) = 0;
34 virtual void Unlock() = 0;
39 SParamStream(IShareBuffer *pBuf)
44 IShareBuffer *GetBuffer()
50 SParamStream &operator<<(
const T &data)
52 Write((
const void *)&data,
sizeof(data));
57 SParamStream &operator>>(T &data)
59 Read((
void *)&data,
sizeof(data));
64 int Write(
const void *data,
int nLen)
66 return m_pBuffer->Write(data, nLen);
68 int Read(
void *buf,
int nLen)
70 return m_pBuffer->Read(buf, nLen);
74 IShareBuffer *m_pBuffer;
79 virtual UINT GetID() = 0;
80 virtual void ToStream4Input(SParamStream &ps) = 0;
81 virtual void ToStream4Output(SParamStream &ps) = 0;
82 virtual void FromStream4Input(SParamStream &ps) = 0;
83 virtual void FromStream4Output(SParamStream &ps) = 0;
89 virtual BOOL IsConnected()
const = 0;
91 virtual void SetIpcConnection(IIpcConnection *pConn) = 0;
93 virtual IIpcConnection *GetIpcConnection()
const = 0;
95 virtual LRESULT OnMessage(ULONG_PTR idLocal, UINT uMsg, WPARAM wp, LPARAM lp, BOOL &bHandled) = 0;
97 virtual HRESULT ConnectTo(ULONG_PTR idLocal, ULONG_PTR idSvr) = 0;
99 virtual HRESULT Disconnect() = 0;
101 virtual bool CallFun(IFunParams *pParam)
const = 0;
103 virtual ULONG_PTR GetLocalId()
const = 0;
105 virtual ULONG_PTR GetRemoteId()
const = 0;
107 virtual IShareBuffer *GetSendBuffer() = 0;
109 virtual IShareBuffer *GetRecvBuffer() = 0;
111 virtual BOOL InitShareBuf(ULONG_PTR idLocal, ULONG_PTR idRemote, UINT nBufSize,
void *pSa) = 0;
113 virtual BOOL ToStream4Input(IFunParams *pParams, IShareBuffer *pBuf)
const = 0;
115 virtual BOOL FromStream4Input(IFunParams *pParams, IShareBuffer *pBuf)
const = 0;
117 virtual BOOL ToStream4Output(IFunParams *pParams, IShareBuffer *pBuf)
const = 0;
119 virtual BOOL FromStream4Output(IFunParams *pParams, IShareBuffer *pBuf)
const = 0;
124 virtual int GetBufSize()
const = 0;
125 virtual int GetStackSize()
const = 0;
126 virtual IIpcHandle *GetIpcHandle() = 0;
127 virtual bool HandleFun(UINT uFunID, SParamStream &ps) = 0;
128 virtual void BuildShareBufferName(ULONG_PTR idLocal, ULONG_PTR idRemote, TCHAR szBuf[MAX_PATH])
const = 0;
131struct IIpcSvrCallback
134 virtual ULONG_PTR OnNewConnection(IIpcHandle *pIpcHandle, IIpcConnection **ppConn) = 0;
135 virtual void OnConnected(IIpcConnection *pConn) = 0;
136 virtual void OnDisconnected(IIpcConnection *pConn) = 0;
137 virtual void *GetSecurityAttr()
const = 0;
138 virtual void ReleaseSecurityAttr(
void *psa)
const = 0;
141typedef BOOL (*FunEnumConnection)(IIpcConnection *pConn, ULONG_PTR data);
145 virtual HRESULT Init(ULONG_PTR idSvr, IIpcSvrCallback *pCallback) = 0;
146 virtual void CheckConnectivity() = 0;
147 virtual LRESULT OnMessage(ULONG_PTR idLocal, UINT uMsg, WPARAM wp, LPARAM lp, BOOL &bHandled) = 0;
148 virtual void EnumClient(FunEnumConnection funEnum, ULONG_PTR data) = 0;
149 virtual BOOL FindConnection(ULONG_PTR idConn) = 0;
150 virtual BOOL Disconnect(ULONG_PTR idConn) = 0;
155 virtual HRESULT CreateIpcServer(IIpcServer **ppServer) = 0;
156 virtual HRESULT CreateIpcHandle(IIpcHandle **ppHandle) = 0;
Interface for reference counting.