New profile API, consolidated RPCs, simplified cache.
[shibboleth/cpp-sp.git] / shar / test-client.cpp
1 #include <shib-target/shib-target.h>
2 #include <iostream>
3
4 using namespace std;
5 using namespace shibtarget;
6
7 int main (int argc, char *argv[])
8 {
9   int res,start;
10   enum clnt_stat clnt_stat;
11
12   const char* config=getenv("SHIBCONFIG");
13   if (!config)
14     config=SHIB_CONFIG;
15   const char* schemadir=getenv("SHIBSCHEMAS");
16   if (!schemadir)
17     schemadir=SHIB_SCHEMAS;
18
19   ShibTargetConfig& conf=ShibTargetConfig::getConfig();
20   conf.setFeatures(ShibTargetConfig::Listener);
21   if (!conf.init(schemadir,config))
22       return -10;
23
24   IListener::ShibSocket sock;
25   const IListener* listener=conf.getINI()->getListener();
26   if (!listener->create(sock))
27   {
28     cerr << "create failed\n";
29     return -1;
30   }
31
32   if (!listener->connect(sock))
33   {
34     cerr << "connect failed\n";
35     return -2;
36   }
37
38   CLIENT* clnt = listener->getClientHandle(sock,SHIBRPC_PROG, SHIBRPC_VERS_2);
39   if (!clnt) {
40     clnt_pcreateerror("shibrpc_client_create");
41     cerr << "shibrpc_client_create failed\n";
42     return -3;
43   }
44
45   res = start = 0;
46   clnt_stat = shibrpc_ping_2 (&start, &res, clnt);
47
48   if (clnt_stat != RPC_SUCCESS) {
49     clnt_perror (clnt, "rpc");
50     cerr << "RPC error:" << clnt_stat << ", " << res << "\n";
51     return -4;
52   }
53
54   cout << sock << " -> " << res << "\n";
55   clnt_destroy (clnt);
56
57   conf.shutdown();
58   return 0;
59 }