Search for project

More than 2000 projects issued through our platform and this
amount increases very fast.

C++ Boost Asio Server Class (ID:5806)

Project Creator: nCoderz
FC Member For 5741 Days
Credits 20
Completed Proj. Num. 0 / 1
Total payment USD 0.00
Avg Daily Online
0.00 h (From 21/5/2007)
Available on MSN/Skype No
Last Login 6/15/2009
Peers Rating 0.00%
      
Budget: Less than 250
Created: 6/8/2009 11:41:52 AM EST
Bidding Ends: 6/15/2009 11:41:52 AM EST
( Expired )
Development Cycle: 3 Days
Bid Count: 8
Average Bid: 212.50  
Project Description:

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).


Job Type C/C++ 
Attached Files: N/A

Bids placed

(There are 8 bids on this project, these are listed below)
 
Contact*:
Email*:
Telephone:
(Include country code)
Enquiry*