A broker is a "listener". It listens for connection requests ("logins") of a certain type (4gl, SQL or both if the type is not specified) on the port specified by -S.
When a request is received the broker looks for an available server of the needed type. If it cannot find one it spawns a new one. It then tells the remote client and the server what ports they are going to communicate on and gets out of the way.
The various parameters control the total number of servers (-Mn) how many servers a broker will spawn (-Mpb), how many clients can connect to each server (-Ma), how clients are assigned to servers (-Mi 1 = round robin), what sort of servers get spawned (-ServerType) and what sort of broker it is (-m3).
A typical basic database startup with remote connections enabled would be more like:
Code:
proserve dbname -S myService -Ma 5 -Mi 1 -n 60 -Mn 10 -B 100000 -spin 3000
This would allow up to 50 remote connections out of a total of 60 (-n). (You need a few extras for the broker, APWs, AIW, BIW, WDOG and so forth.) This broker is a "both" broker.
Alternatively you might want to start distinct 4GL and SQL brokers. To do that:
Code:
proserve dbname -S 4glService -ServerType 4GL -Mpb 5 -Ma 5 -Mi 1 -n 60 -Mn 10 -B 100000 -spin 3000
proserve dbname -S SQLService -ServerType SQL -Mpb 5 -Ma 5 -Mi 1 -m3
This will start the database and allow 25 remote 4gl connections. The second "proserve" then starts a secondary broker that supports 25 SQL connections.