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

Filed under:
|
|
|
|

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

Related posts about c

    Related posts about api