git-svn-id: svn://svn.code.sf.net/p/bitchx/code/tags/ircii-pana-1.1-final@1 13b04d17-f746-0410-82c6-800466cd88b0
82 lines
1.9 KiB
C
82 lines
1.9 KiB
C
#include <stdio.h>
|
|
#include <orb/orbit.h>
|
|
|
|
#include "europa.h"
|
|
|
|
EuropaAI_Europa ai_client;
|
|
|
|
int main(int argc, char *argv[]) {
|
|
CORBA_Environment ev;
|
|
CORBA_ORB orb;
|
|
FILE *ifp;
|
|
char *ior;
|
|
char filebuffer[1024];
|
|
|
|
/*
|
|
* Standard initalisation of the orb. Notice that
|
|
* ORB_init 'eats' stuff off the command line
|
|
*/
|
|
|
|
CORBA_exception_init(&ev);
|
|
orb = CORBA_ORB_init(&argc, argv, "orbit-local-orb", &ev);
|
|
|
|
/*
|
|
* Get the IOR (object reference). It should be written out
|
|
* by the echo-server into the file echo.ior. So - if you
|
|
* are running the server in the same place as the client,
|
|
* this should be fine!
|
|
*/
|
|
|
|
ifp = fopen("ai.ior","r");
|
|
if( ifp == NULL ) {
|
|
g_error("No ai.ior file!");
|
|
exit(-1);
|
|
}
|
|
|
|
fgets(filebuffer,1024,ifp);
|
|
ior = g_strdup(filebuffer);
|
|
|
|
fclose(ifp);
|
|
|
|
/*
|
|
* Actually get the object. So easy!
|
|
*/
|
|
ai_client = CORBA_ORB_string_to_object(orb, ior, &ev);
|
|
if(!ai_client) {
|
|
printf("Cannot bind to %s\n", ior);
|
|
return 1;
|
|
}
|
|
|
|
/*
|
|
* Ok. Now we use the echo object...
|
|
*/
|
|
printf("Type messages to the server\n. as the only thing on the line stops\n
|
|
");
|
|
while( fgets(filebuffer,1024,stdin) ) {
|
|
if( filebuffer[0] == '.' && filebuffer[1] == '\n' )
|
|
break;
|
|
|
|
/* chop the newline off */
|
|
filebuffer[strlen(filebuffer)-1] = '\0';
|
|
|
|
/* using the echoString method in the Echo object */
|
|
/* this is defined in the echo.h header, compiled from echo.idl */
|
|
|
|
EuropaAI_Europa_inputChat(ai_client, filebuffer, &ev);
|
|
|
|
/* catch any exceptions (eg, network is down) */
|
|
|
|
if(ev._major != CORBA_NO_EXCEPTION) {
|
|
printf("we got exception %d from inputChat!\n", ev._major);
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
|
|
/* Clean up */
|
|
CORBA_Object_release(ai_client, &ev);
|
|
CORBA_Object_release((CORBA_Object)orb, &ev);
|
|
|
|
return 0;
|
|
}
|