Differences between revisions 3 and 9 (spanning 6 versions)
Revision 3 as of 2013-06-21 23:01:39
Size: 3295
Editor: 5-12-23-230
Comment:
Revision 9 as of 2013-08-26 09:43:00
Size: 273
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= C-Hglib =

A C library for interfacing with Mercurial's CommandServer.

<<TableOfContents>>

== Getting the source ==

You can clone the packeage from its primary repository [[https://bitbucket.org/istana/c-hglib|c-hglib]].

== First plan ==

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.


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.


== My starts points will be ==
 *[[http://mercurial.selenic.com/wiki/CommandServer|CommandServer]]
 *[[http://www.selenic.com/repo/python-hglib/file/ca5f8f43e585/|python-hglib]]
 *[[http://bitbucket.org/yuja/chg/src|chg]]

== Directory tree ==
.

├── hglib

│ ├── main.c

│ ├── Makefile.am

│ ├── utils.c

│ └── utils.h

├── Makefile.am

├── README.md

└── tests

└── Makefile.am
Santa Rosa-born Dia Foster is hooked on [[https://www.teamgeorgiawrestling.com/index.php?option=com_blog&view=comments&pid=574689&Itemid=0|Spain weather June,]] rc vehicles, rocking aids babies. And lastly she's captivated by spending precious time with her nearest pals.

Santa Rosa-born Dia Foster is hooked on Spain weather June, rc vehicles, rocking aids babies. And lastly she's captivated by spending precious time with her nearest pals.

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