Architecture & structure
We've been talking about clients and servers. I've also used three key phrases:
- The client sends to the server.
- The server receives from the client.
- The server replies to the client.
I specifically used those phrases because they closely reflect the actual function names used in Neutrino message-passing operations.
Here's the complete list of functions dealing with message passing available under Neutrino (in alphabetical order):
- ChannelCreate() , ChannelDestroy()
- ConnectAttach() , ConnectDetach()
- MsgRead() , MsgReadv()
- MsgReceive() , MsgReceivePulse() , MsgReceivev()
- MsgReply() , MsgReplyv()
- MsgSend() , MsgSendnc() , MsgSendsv() , MsgSendsvnc() , MsgSendv() , MsgSendvnc() , MsgSendvs() , MsgSendvsnc()
- MsgWrite() , MsgWritev()
Don't let this list overwhelm you! You can write perfectly useful client/server applications using just a small subset of the calls from the list — as you get used to the ideas, you'll see that some of the other functions can be very useful in certain cases.
We'll break our discussion up into the functions that apply on the client side, and those that apply on the server side.