Size: 3297
Comment:
|
Size: 1159
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
'''C-Hglib''' | = C-Hglib = |
Line 13: | Line 13: |
Some steps that I want to do first: * create an open mechanism between Client (C library) and Server ( Mercurial Command Server) * close the connection * readchannel function that will get the channel and the length of message. * create the _hello function, that will receive the first message, after the connection. * cmdbuilder, will compute the command that will be sent to CommandServer. * runcommand, will send the build command to the server and will return the compute message. * mercurial commands. |
|
Line 22: | Line 14: |
== Reporting bugs == | |
Line 23: | Line 16: |
How to make it happen: *Create an open mechanism between Client (C library) and Server ( Mercurial Command Server) *First I will try to compute a command that will be execute in the child process. *It will be of the form “HGPATH serve --cmdserver pipe --config ui.interactive=True” + “-R path ” *I will create two pipes for the bidirectional connection. Then I will fork a new process, where I’ll execute the command that will open the Command Server. In the child process I will redirect the input, the output and the error in to the pipes (for the communication Client-Server). In my case the child process will open the Command Server and the parent process will be the client. *The communication will be through the pipes descriptors. *The open function will return a Client structure that will contain the pipes descriptors and other useful information. *Close the connection *Will kill the command server and will close the pipe descriptors for a specific Client. *readchannel function that will get the channel and the length of message. *Will read a char (the channel) and a uint (the length). There are chances for a problem to occur over here with the unsigned integer (the Command Server will send to me an integer in big endian form). *Most probably I will have to create a conversion mechanism. *create the _hello function that will receive the first message, after the connection. *This function will read the channel and the default data. Then I will check the correctness of data. *cmdbuilder, will compute the command that will be sent to CommandServer. *This function will return a list with a compute command that will be send to CommandServer. This function will be called by all mercurial commands. *runcommand, will send the build command to the server and will return the compute message. *From this function I will sent through pipes the commands and I will receive the specific answers. This will be the function that will make the communication. |
Bugs can be reported on [[https://bitbucket.org/istana/c-hglib/issues?status=new&status=open|bitbucket-issue list]]. |
Line 54: | Line 24: |
{{{ |
|
Line 55: | Line 27: |
├── examples │ └── level0.h ├── hglib │ ├── main.c │ ├── Makefile │ ├── client.c │ ├── client.h │ ├── utils.c │ └── utils.h ├── README.md └── Makefile }}} |
|
Line 56: | Line 40: |
├── hglib │ ├── main.c │ ├── Makefile.am │ ├── utils.c │ └── utils.h ├── Makefile.am ├── README.md └── tests └── Makefile.am |
== See also == *[[http://mercurial.selenic.com/wiki/CommandServer|CommandServer]] *[[http://www.selenic.com/repo/python-hglib/file/ca5f8f43e585/|python-hglib]] *[[http://mercurial.selenic.com/wiki/MercurialApi|MercurialApi]] |
C-Hglib
A C library for interfacing with Mercurial's CommandServer.
Contents
Getting the source
You can clone the packeage from its primary repository c-hglib.
First plan
Reporting bugs
Bugs can be reported on bitbucket-issue list.
My starts points will be
Directory tree
. ├── examples │ └── level0.h ├── hglib │ ├── main.c │ ├── Makefile │ ├── client.c │ ├── client.h │ ├── utils.c │ └── utils.h ├── README.md └── Makefile
== See also ==