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: 282
        
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