OSDN Git Service

FIRST REPOSITORY
[eos/hostdependOTHERS.git] / I386LINUX / util / I386LINUX / doc / mico / examples / redlich / Calc-2 / server.cc
1 #define MICO_CONF_IMR
2 #include <CORBA-SMALL.h>
3 #ifdef HAVE_ANSI_CPLUSPLUS_HEADERS
4 #include <fstream>
5 #else
6 #include <fstream.h>
7 #endif
8 #include "calc.h"
9
10
11 using namespace std;
12
13 class calc_impl : virtual public Calc2::calc_skel   {
14    complex      value;
15
16    void copy(complex& dst, const complex& src)  {
17         dst.r= src.r; dst.i= src.i; }
18                         
19 public:
20    void setValue(const complex& z)  {
21         copy(value,z);  }
22
23    complex add(const complex& z)  {
24         value.r += z.r;
25         value.i += z.i;
26         return value;   }
27
28    void mult(const complex& z, complex& result)  {
29         complex tmp;
30
31         tmp.r= value.r*z.r - value.i*z.i;
32         tmp.i= value.r*z.i + value.i*z.r;
33         copy(value, tmp);
34         copy(result, tmp); }
35
36    void div(complex& z)  {
37         complex tmp;
38         double  d=  z.r*z.r + z.i*z.i;
39
40         tmp.r= (value.r*z.r + value.i*z.i) / d;
41         tmp.i= (value.i*z.r - value.r*z.i) / d;
42         copy(value, tmp);
43         copy(z, tmp); }
44 };
45
46
47
48 int main(int argc, char* argv[])   {
49   CORBA::ORB_var  orb;
50   CORBA::BOA_var  boa;
51   calc_impl       *obj_impl;
52
53         // Initialisierung:
54   orb= CORBA::ORB_init(argc, argv, "mico-local-orb");
55   boa= orb->BOA_init(argc, argv, "mico-local-boa");
56
57   obj_impl= new calc_impl;
58
59   cout << "Objekt-Referenz dieser 'calc'-Implementation:\n";
60   cout << "\t" << orb->object_to_string(obj_impl) << "\n";
61   cout.flush();
62
63         // Warten auf Klienten
64   boa->impl_is_ready (CORBA::ImplementationDef::_nil());
65   orb->run ();
66
67   return 0;
68 }