[Gambas-user] gb3 RC1: using structures to replace the loss of Mk$ functions

Kevin Fishburne kevinfishburne at ...1887...
Fri Apr 1 04:47:50 CEST 2011


I'm finding that the task of replacing the Mk$ functions with structures 
for UDP packet client/server transactions is a massive undertaking. So 
far it's affecting every part of my project that constructs, parses, 
sends and receives data. As a consequence the network code is going from 
dozens of lines to hundreds, and I'm beginning to see that the actual 
logic of network operations will need to be changed as well.

I can deal with all of that, but right now I'm just trying to make it 
work without the program becoming ridiculously complex and/or inefficient.

I have up to 256 different transaction types shared by the client and 
server. Each one is represented by a different structure containing 
multiple datatypes. The structures range from a few bytes to many KB of 
data. Values are assigned to a structure when a transaction must be 
sent, then the structure is sent by the client or server. The recipient 
then parses the structure and assigns its values to different variables.

Each transaction has an "ID" which represents the order in which it was 
sent and where it should be assigned in the recipient's transaction 
queue array. This ensures that transactions received out of order are 
processed in order. Both the client and the server have their own 
transaction queues that store the transactions they receive.

The transaction IDs range from 0-255, so originally I had a transaction 
queue array that was something like this:

Public ts[256, 3] As String ' Server transactions (256: Queue Position, 
3: Status, Type, Data). Status = "new" or "old".

Each element of the transaction queue array was generic, meaning it 
could store any transaction type regardless of what data it contained. 
Now that I'm using structures, the transaction data is uniquely 
represented. Instead of a generic "data" string element that I could 
create/parse with MkSingle()/Single@(), I have a unique structure. How 
can I store a unique structure in a generic array of structures? Is this 
possible? Right now I'm thinking I need to have transaction queue arrays 
of [256,256] structures (65536 structures) to accommodate this. Not so 
good when any particular structure could be up to 198 KB + header.

Any ideas are appreciated, as this is starting to make me postal! :)

-- 
Kevin Fishburne
Eight Virtues
www: http://sales.eightvirtues.com
e-mail: sales at ...1887...
phone: (770) 853-6271





More information about the User mailing list