This commands are used in communication protocols of SocketFrontEnd, SocketIMEngine, SocketConfig, Helper and Panel.
There are mainly four major protocols used in the communications among each part of SCIM:
As soon as the socket to the server is established, the client must call function scim_socket_open_connection() to create the connection and get the magic key for later communication.
At the same time, the server must call function scim_socket_accept_connection() to accept the connection and get the same magic key for later client verification.
The valid types of servers are:
The valid types of clients are:
Then the client and the server can communicate with each other via the socket by sending transactions.
Multiple commands and their data may be put into one transaction with a restricted order. The data of a command must be put into the transaction just follow the command itself.
A transaction sent from a socket client to a socket server (eg. SocketIMEngine to SocketFrontEnd) must be started with a SCIM_TRANS_CMD_REQUEST command followed by an uint32 magic key of the client (returned by scim_socket_open_connection() function.
A transaction sent back to a socket client from a socket server must be started with a SCIM_TRANS_CMD_REPLY command.
So for example, the layout of a transaction sent from SocketIMEngine to SocketFrontEnd may look like:
Some commands may be used in more than one protocols for similar purpose, but they may have different data in different protocol.
Brief introduction of communication protocols used in SCIM:
Please refer to the descriptions of each Transaction commands for details.
|
Unknown command. No use.
|
|
It's the first command which should be put into the Transaction sending from a socket client to a socket server. The corresponding data for this command is an uint32 magic key which is returned by scim_socket_open_connection() function. |
|
It's the first command which should be put into the Transaction sending from a socket server to a socket client. The corresponding data for this command is different in each protocol. Please refer to the previous protocol notes for details. |
|
This command is usually used in the Transaction sending from a socket server to a socket client to indicate that the request previously sent from the client was executed successfully. There is no data for this command. |
|
This command is usually used in the Transaction sending from a socket server to a socket client to indicate that the request previously sent from the client was failed to be executed. There is no data for this command. |
|
This command is used internally by scim_socket_open_connection() and scim_socket_accept_connection(). It's sent from a socket client to a socket server to request the server to create the connection. The corresponding data are:
If the socket server accept the connection request, it must send back a Transaction with following content:
Then if the client accept the result too, it must send the following content back to the socket server: Otherwise, the client must return: If the socket server do not accept the connection in the first stage, it should discard the request and send nothing back. |
|
It's used to request the socket server to close the connection forcedly. It's currently not used at all. |
|
Request the socket server to load and send a file to the client. The corresponding data is:
If the file is loaded successfully, then the server should send back:
Otherwise it should send back: This command is only supported by SocketFrontEnd. |
|
Request the socket server to save a buffer into a file. The corresponding data is:
If the file is saved successfully, then the server should return: Otherwise it should return: This command is currently not supported by any servers. |
|
This command should be sent from a socket server to its clients to let them exit. No data is associated to this command. This command is currently only used by Panel server. |
|
This command is used in SocketIMEngine to SocketFrontEnd and Panel to FrontEnd protocols to send a KeyEvent to an IMEngineInstance. When used in SocketIMEngine to SocketFrontEnd protocol, the corresponding data is:
The Transaction returned from SocketFrontEnd should contain:
When used in Panel to FrontEnds protocol, the corresponding data is: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|