Differences between revisions 4 and 5
Revision 4 as of 2013-06-22 01:24:19
Size: 3297
Editor: adsl-ull-210-241
Comment: added some cute monospaced fonts
Revision 5 as of 2013-08-07 11:20:18
Size: 1159
Editor: 188-26-48-157
Comment:
Deletions are marked like this. Additions are marked like this.
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 57: Line 27:
├── examples
│ └── level0.h
Line 59: Line 31:
│ ├── Makefile.am │ ├── Makefile
│ ├── client.c
│ ├── client.h
Line 62: Line 36:
├── Makefile.am
Line 64: Line 37:
├── tests
└── Makefile.am
└── Makefile
Line 67: Line 39:

== 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.

1. Getting the source

You can clone the packeage from its primary repository c-hglib.

2. First plan

3. Reporting bugs

Bugs can be reported on bitbucket-issue list.

4. My starts points will be

5. Directory tree

.
├── examples
│   └── level0.h
├── hglib
│   ├── main.c
│   ├── Makefile
│   ├── client.c
│   ├── client.h
│   ├── utils.c
│   └── utils.h
├── README.md
└── Makefile

== See also ==

C-Hglib (last edited 2014-11-11 22:05:57 by rcl)