Boost asio server class

In Progress Posted Jun 8, 2009 Paid on delivery
In Progress Paid on delivery

I'd need two base classes for server side and clients, I'd preffer using ASIO or another open source multiplatform library.

**Server Side**

- Accept and manage 100 to 5000 simultaneos connetionected clients

- Authenticate client with uid and pwd (authenticantion function not need to implement)

- Receive and send text messages only (#define MAXMSGSIZE) trucate messages bigger that MAXMSGSIZE

- Send one message to one client or several clients (max 20 clients at the time) with retry transparent machanism.

- Should consider this class an High availability Mission critical, so a correct memory management and resources utilization is mandatory.

**Client Side**

- Should be able to manage transparently the server connection and reconnect automatically if connection lost.

- Receive and send text messages only (#define MAXMSGSIZE) trucate messages bigger that MAXMSGSIZE

**Deliverables:**

- Classes Source code (.h and .cpp) fully documented functions and params

- Working examples using classes that derive from the required above.

**Considerations:**

I'm focussed on the data and application logic layers. Right now I don't have the time to work on the examples found in the net and create this class, so I'll need a simple but solid solution using C++ Boost-Asio libs (or another open source lib that the developer may consider better for this purpose).

## Deliverables

I'd need two base classes for server side and clients, I'd preffer using ASIO or another open source multiplatform library.

Server Side

- Accept and manage 100 to 5000 simultaneos connetionected clients

- Authenticate client with uid and pwd (authenticantion function not need to implement)

- Receive and send text messages only (#define MAXMSGSIZE) trucate messages bigger that MAXMSGSIZE

- Send one message to one client or several clients (max 20 clients at the time) with retry transparent machanism.

- Should consider this class an High availability Mission critical, so a correct memory management and resources utilization is mandatory.

- Server interfaces:

- Constructor (unsigned short port)

- void OnClientAuthentication(char* lpszUid) // virtual override

- void OnClientMessage(char* lpszUid, char* lpszMsg) // virtual override

- void OnClientDisconnect(char* lpszUid) // virtual override

- int AsyncSendMessage(char *lpszUid, char *lpszMsg) // 0 = success, others = ERROR_*

- int AsyncSendMessage(char **lpszUids, unsigned int nClients, char *lpszMsg) 0 = Success, others = ERROR_*

- char **GetActiveConnections() // alloc lpsz array with users Uids

- int DisconnectClient(char *lpszUid) // 0 = success, others = ERROR_*

- int StopAcceptingConnections() // do not accept new connections

- int StartAcceptingConnections() // accept new connections again

Client Side

- Should be able to manage transparently the server connection and reconnect automatically if connection lost.

- Receive and send text messages only (#define MAXMSGSIZE) trucate messages bigger that MAXMSGSIZE

- Client interfaces:

- Constructor (char *lpszServer, unsigned short lPort, char *lpszUid, char *lpszPwd)

- void OnServerMessage(char* lpszUid, char* lpszMsg) // virtual override

- int AsyncSendMessage(char *lpszUid, char *lpszMsg) // 0 = success, others = ERROR_*

- int Connect() // 0 = SUCCESS (or already connected), other = ERROR_*

- int Disconnect() // 0 = SUCCESS (or already disconnected), other = ERROR_*

Deliverables:

- Classes Source code (.h and .cpp) fully documented functions and params

- Working examples using classes that derive from the required above.

Considerations:

I'm focussed on the data and application logic layers. Right now I don't have the time to work on the examples found in the net and create this class, so I'll need a simple but solid solution using C++ Boost-Asio libs (or another open source lib that the developer may consider better for this purpose).

C Programming Engineering Linux Microsoft MySQL PHP Software Architecture Software Testing Windows Desktop

Project ID: #2685270

About the project

4 proposals Remote project Active Jun 11, 2009

Awarded to:

ArmanHunanyan

See private message.

$30 USD in 14 days
(8 Reviews)
3.3

4 freelancers are bidding on average $184 for this job

RobotMarvin

See private message.

$425 USD in 14 days
(22 Reviews)
6.5
anurag7vw

See private message.

$42.5 USD in 14 days
(72 Reviews)
5.0
thoriumsl

See private message.

$238 USD in 14 days
(12 Reviews)
4.2