cat << 'EOF' > srv.rim
begin-handler /srv public
silent-header
do-once
new-tree ind process-scope
end-do-once
get-param op
get-param key default-value ""
get-param data default-value ""
if-true op equal "add"
write-tree ind key (key) value data status st
if-true st equal RIM_ERR_EXIST
@Key exists [<<print-out key>>]
else-if
@Added [<<print-out key>>]
end-if
else-if op equal "delete"
delete-tree ind key (key) value val status st
if-true st equal RIM_ERR_EXIST
@Not found [<<print-out key>>]
else-if
@Deleted, old value was [<<print-out val>>]
end-if
else-if op equal "query"
read-tree ind equal (key) value val status st
if-true st equal RIM_ERR_EXIST
@Not found, queried [<<print-out key>>]
else-if
@Value [<<print-out val>>]
end-if
end-if
end-handler
EOF
Copied!
cat << 'EOF' > cli.c
#include "rcli.h"
int rim_client (rim_cli *req, char *connection, char *method, char *app_path, char *request, char *url_params);
int rim_client (rim_cli *req, char *connection, char *method, char *app_path, char *request, char *url_params)
{
memset ((char*)req, 0, sizeof(rim_cli));
req->server = connection;
req->req_method = method;
req->app_path = app_path;
req->req = request;
req->url_params = url_params;
return rim_cli_request (req);
}
void main ()
{
int res;
char *urlreq, *data;
rim_cli req;
char dir[RIM_MAX_OS_UDIR_LEN];
rim_dir (RIM_DIR_SOCKFILE, dir, sizeof(dir), "index", NULL);
urlreq = "/op=add/key=some_key/data=some_data";
res = rim_client (&req, dir, "GET", "/index", "/srv", urlreq);
if (res != RIM_OKAY) printf("Request failed [%d] [%s]\n", res, req.errm); else printf("%s", rim_cli_data(&req));
rim_cli_delete(&req);
urlreq = "/op=query/key=some_key";
res = rim_client (&req, dir, "GET", "/index", "/srv", urlreq);
if (res != RIM_OKAY) printf("Request failed [%d] [%s]\n", res, req.errm); else printf("%s", data = rim_cli_data(&req));
rim_cli_delete(&req);
urlreq = "/op=delete/key=some_key";
res = rim_client (&req, dir, "GET", "/index", "/srv", urlreq);
if (res != RIM_OKAY) printf("Request failed [%d] [%s]\n", res, req.errm); else printf("%s", data=rim_cli_data(&req));
rim_cli_delete(&req);
}
EOF
Copied!