summaryrefslogtreecommitdiff
path: root/TAO/IIOP/tests/Cubit/TAO/cubit_i.cpp
blob: ae22b7cd12c51c90155c6260fd87d4bc74fa1c6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// @(#)cubit_i.cpp 05/14/97
// Copyright 1994-1995 by Sun Microsystems Inc.
// All Rights Reserved
//
// TEST:	hand-written Cubit Implementation
//
// Modified version of Cubit Example written by Sun Microsystems Inc.
// Modified by: Brian Mendel

#include	"cubit_i.h"

#include	<corba/boa.h>    // ... and skeletons
#include	<corba/debug.h>  // ... and debugging

#include "connect.h"
#include "params.h"

Cubit_i::Cubit_i(const char* obj_name)
: _skel_Cubit(obj_name)
{
}

Cubit_i::~Cubit_i()
{
}

CORBA_Octet
Cubit_i::Cubit_cube_octet (CORBA_Octet       o,
                           CORBA_Environment &env)
{

   return (CORBA_Octet) (o * o * o);
}

CORBA_Short
Cubit_i::Cubit_cube_short (CORBA_Short       s, 
                           CORBA_Environment &env)
{
   return (CORBA_Short) (s * s * s);
}


CORBA_Long
Cubit_i::Cubit_cube_long (CORBA_Long        l,
                          CORBA_Environment &env)
{
   return (CORBA_Long) (l * l * l);
}

Cubit_Many*
Cubit_i::Cubit_cube_struct (Cubit_Many        &values,
                            CORBA_Environment &env)
{
   values.o = values.o * values.o * values.o;
   values.s = values.s * values.s * values.s;
   values.l = values.l * values.l * values.l;
   
   return &values;
}

Cubit_oneof*
Cubit_i::Cubit_cube_union (Cubit_oneof       &values,
                           CORBA_Environment &env)
{
   switch (values._disc) {
   case e_0th:
      values.o = (CORBA_Octet) (values.o * values.o * values.o);
      break;
   case e_1st:
      values.s = (CORBA_Short) (values.s * values.s * values.s);
      break;
   case e_2nd:
      values.l = values.l * values.l * values.l;
      break;
   case e_3rd:
   default:
      values.cm.o = (CORBA_Octet) (values.cm.o * values.cm.o * values.cm.o);
      values.cm.s = (CORBA_Short) (values.cm.s * values.cm.s * values.cm.s);
      values.cm.l = values.cm.l * values.cm.l * values.cm.l;
   }
   return &values;
}

void Cubit_i::Cubit_please_exit (CORBA_Environment &env)
{
   TAO_OA_Parameters* params = TAO_OA_PARAMS::instance();
   
   dmsg ("I've been asked to shut down...");
   params->oa()->please_shutdown(env);
   dexc (env, "please_exit, please_shutdown");
}