How to hide helper functions from public API in c
Posted
by emge
on Stack Overflow
See other posts from Stack Overflow
or by emge
Published on 2010-06-10T16:48:29Z
Indexed on
2010/06/10
16:52 UTC
Read the original article
Hit count: 215
I'm working on a project and I need to create an API. I am using sockets to communicate between the server (my application) and the clients (the other applications using my API).
This project is in c not C++
I come from a linux background and this is my first project using Windows, Visual Studio 2008, and dll libraries.
I have communication working between the client and server, but I have some that is duplicated on both projects. I would like to create a library (probably a dll file), that both projects can link to so I don't have to maintain extra code.
I also have to create the library that has the API that I need to make available for my clients. Within the API functions that I want public are the calls to these helper functions that are "duplicated code", I don't want to expose these functions to my client, but I do want my server to be able to use those functions. How can I do this?
I will try to clarify with an example. This is what I started with.
Server Project:
int Server_GetPacket(SOCKET sd);
int ReceiveAll(SOCKET sd, char *buf, int len);
int VerifyLen(char *buf);
Client Project:
int Client_SendCommand(int command);
int Client_GetData(int command, char *buf, int len);
int ReceiveAll(SOCKET sd, char *buf, int len);
int VerifyLen(char *buf);
This is kind of what I would like to end up with:
//Server Project:
int Server_GetPacket(SOCKET sd);
// library with public and private types
// private API (not exposed to my client)
int ReceiveAll(SOCKET sd, char *buf, int len);
int VerifyLen(char *buf);
// public API (header file available for client)
int Client_SendCommand(int command);
int Client_GetData(int command, char *buf, int len);
Thanks any help would be appreciated.
© Stack Overflow or respective owner