1 // 2 // Copyright (c) ZeroC, Inc. All rights reserved. 3 // 4 5 using System; 6 using System.Collections.Generic; 7 using System.Threading.Tasks; 8 using Test; 9 10 public sealed class TestI : TestIntfDisp_ 11 { test(bool b)12 private static void test(bool b) 13 { 14 if(!b) 15 { 16 throw new Exception(); 17 } 18 } 19 shutdownAsync(Ice.Current current)20 public override Task shutdownAsync(Ice.Current current) 21 { 22 current.adapter.getCommunicator().shutdown(); 23 return null; 24 } 25 26 public override Task<Ice.Value> SBaseAsObjectAsync(Ice.Current current)27 SBaseAsObjectAsync(Ice.Current current) 28 { 29 return Task.FromResult<Ice.Value>(new SBase("SBase.sb")); 30 } 31 SBaseAsSBaseAsync(Ice.Current current)32 public override Task<SBase> SBaseAsSBaseAsync(Ice.Current current) 33 { 34 return Task.FromResult<SBase>(new SBase("SBase.sb")); 35 } 36 37 public override Task<SBase> SBSKnownDerivedAsSBaseAsync(Ice.Current current)38 SBSKnownDerivedAsSBaseAsync(Ice.Current current) 39 { 40 return Task.FromResult<SBase>(new SBSKnownDerived("SBSKnownDerived.sb", "SBSKnownDerived.sbskd")); 41 } 42 43 public override Task<SBSKnownDerived> SBSKnownDerivedAsSBSKnownDerivedAsync(Ice.Current current)44 SBSKnownDerivedAsSBSKnownDerivedAsync(Ice.Current current) 45 { 46 return Task.FromResult<SBSKnownDerived>(new SBSKnownDerived("SBSKnownDerived.sb", "SBSKnownDerived.sbskd")); 47 } 48 49 public override Task<SBase> SBSUnknownDerivedAsSBaseAsync(Ice.Current current)50 SBSUnknownDerivedAsSBaseAsync(Ice.Current current) 51 { 52 return Task.FromResult<SBase>(new SBSUnknownDerived("SBSUnknownDerived.sb", "SBSUnknownDerived.sbsud")); 53 } 54 55 public override Task<SBase> SBSUnknownDerivedAsSBaseCompactAsync(Ice.Current current)56 SBSUnknownDerivedAsSBaseCompactAsync(Ice.Current current) 57 { 58 return Task.FromResult<SBase>(new SBSUnknownDerived("SBSUnknownDerived.sb", "SBSUnknownDerived.sbsud")); 59 } 60 SUnknownAsObjectAsync(Ice.Current current)61 public override Task<Ice.Value> SUnknownAsObjectAsync(Ice.Current current) 62 { 63 var su = new SUnknown("SUnknown.su", null); 64 su.cycle = su; 65 return Task.FromResult<Ice.Value>(su); 66 } 67 checkSUnknownAsync(Ice.Value obj, Ice.Current current)68 public override Task checkSUnknownAsync(Ice.Value obj, Ice.Current current) 69 { 70 if(current.encoding.Equals(Ice.Util.Encoding_1_0)) 71 { 72 test(!(obj is SUnknown)); 73 } 74 else 75 { 76 SUnknown su = obj as SUnknown; 77 test(su.su.Equals("SUnknown.su")); 78 } 79 return null; 80 } 81 oneElementCycleAsync(Ice.Current current)82 public override Task<B> oneElementCycleAsync(Ice.Current current) 83 { 84 B b = new B(); 85 b.sb = "B1.sb"; 86 b.pb = b; 87 return Task.FromResult<B>(b); 88 } 89 twoElementCycleAsync(Ice.Current current)90 public override Task<B> twoElementCycleAsync(Ice.Current current) 91 { 92 B b1 = new B(); 93 b1.sb = "B1.sb"; 94 B b2 = new B(); 95 b2.sb = "B2.sb"; 96 b2.pb = b1; 97 b1.pb = b2; 98 return Task.FromResult<B>(b1); 99 } 100 D1AsBAsync(Ice.Current current)101 public override Task<B> D1AsBAsync(Ice.Current current) 102 { 103 D1 d1 = new D1(); 104 d1.sb = "D1.sb"; 105 d1.sd1 = "D1.sd1"; 106 D2 d2 = new D2(); 107 d2.pb = d1; 108 d2.sb = "D2.sb"; 109 d2.sd2 = "D2.sd2"; 110 d2.pd2 = d1; 111 d1.pb = d2; 112 d1.pd1 = d2; 113 return Task.FromResult<B>(d1); 114 } 115 D1AsD1Async(Ice.Current current)116 public override Task<D1> D1AsD1Async(Ice.Current current) 117 { 118 D1 d1 = new D1(); 119 d1.sb = "D1.sb"; 120 d1.sd1 = "D1.sd1"; 121 D2 d2 = new D2(); 122 d2.pb = d1; 123 d2.sb = "D2.sb"; 124 d2.sd2 = "D2.sd2"; 125 d2.pd2 = d1; 126 d1.pb = d2; 127 d1.pd1 = d2; 128 return Task.FromResult<D1>(d1); 129 } 130 D2AsBAsync(Ice.Current current)131 public override Task<B> D2AsBAsync(Ice.Current current) 132 { 133 D2 d2 = new D2(); 134 d2.sb = "D2.sb"; 135 d2.sd2 = "D2.sd2"; 136 D1 d1 = new D1(); 137 d1.pb = d2; 138 d1.sb = "D1.sb"; 139 d1.sd1 = "D1.sd1"; 140 d1.pd1 = d2; 141 d2.pb = d1; 142 d2.pd2 = d1; 143 return Task.FromResult<B>(d2); 144 } 145 146 public override Task<TestIntf_ParamTest1Result> paramTest1Async(Ice.Current current)147 paramTest1Async(Ice.Current current) 148 { 149 D1 d1 = new D1(); 150 d1.sb = "D1.sb"; 151 d1.sd1 = "D1.sd1"; 152 D2 d2 = new D2(); 153 d2.pb = d1; 154 d2.sb = "D2.sb"; 155 d2.sd2 = "D2.sd2"; 156 d2.pd2 = d1; 157 d1.pb = d2; 158 d1.pd1 = d2; 159 return Task.FromResult<TestIntf_ParamTest1Result>(new TestIntf_ParamTest1Result(d1, d2)); 160 } 161 162 public override Task<TestIntf_ParamTest2Result> paramTest2Async(Ice.Current current)163 paramTest2Async(Ice.Current current) 164 { 165 D1 d1 = new D1(); 166 d1.sb = "D1.sb"; 167 d1.sd1 = "D1.sd1"; 168 D2 d2 = new D2(); 169 d2.pb = d1; 170 d2.sb = "D2.sb"; 171 d2.sd2 = "D2.sd2"; 172 d2.pd2 = d1; 173 d1.pb = d2; 174 d1.pd1 = d2; 175 return Task.FromResult<TestIntf_ParamTest2Result>(new TestIntf_ParamTest2Result(d2, d1)); 176 } 177 178 public override Task<TestIntf_ParamTest3Result> paramTest3Async(Ice.Current current)179 paramTest3Async(Ice.Current current) 180 { 181 D2 d2 = new D2(); 182 d2.sb = "D2.sb (p1 1)"; 183 d2.pb = null; 184 d2.sd2 = "D2.sd2 (p1 1)"; 185 186 D1 d1 = new D1(); 187 d1.sb = "D1.sb (p1 2)"; 188 d1.pb = null; 189 d1.sd1 = "D1.sd2 (p1 2)"; 190 d1.pd1 = null; 191 d2.pd2 = d1; 192 193 D2 d4 = new D2(); 194 d4.sb = "D2.sb (p2 1)"; 195 d4.pb = null; 196 d4.sd2 = "D2.sd2 (p2 1)"; 197 198 D1 d3 = new D1(); 199 d3.sb = "D1.sb (p2 2)"; 200 d3.pb = null; 201 d3.sd1 = "D1.sd2 (p2 2)"; 202 d3.pd1 = null; 203 d4.pd2 = d3; 204 205 return Task.FromResult<TestIntf_ParamTest3Result>(new TestIntf_ParamTest3Result(d3, d2, d4)); 206 } 207 208 public override Task<TestIntf_ParamTest4Result> paramTest4Async(Ice.Current current)209 paramTest4Async(Ice.Current current) 210 { 211 D4 d4 = new D4(); 212 d4.sb = "D4.sb (1)"; 213 d4.pb = null; 214 d4.p1 = new B(); 215 d4.p1.sb = "B.sb (1)"; 216 d4.p2 = new B(); 217 d4.p2.sb = "B.sb (2)"; 218 return Task.FromResult<TestIntf_ParamTest4Result>(new TestIntf_ParamTest4Result(d4.p2, d4)); 219 } 220 221 public override Task<TestIntf_ReturnTest1Result> returnTest1Async(Ice.Current current)222 returnTest1Async(Ice.Current current) 223 { 224 D1 d1 = new D1(); 225 d1.sb = "D1.sb"; 226 d1.sd1 = "D1.sd1"; 227 D2 d2 = new D2(); 228 d2.pb = d1; 229 d2.sb = "D2.sb"; 230 d2.sd2 = "D2.sd2"; 231 d2.pd2 = d1; 232 d1.pb = d2; 233 d1.pd1 = d2; 234 return Task.FromResult<TestIntf_ReturnTest1Result>(new TestIntf_ReturnTest1Result(d2, d2, d1)); 235 } 236 237 public override Task<TestIntf_ReturnTest2Result> returnTest2Async(Ice.Current current)238 returnTest2Async(Ice.Current current) 239 { 240 D1 d1 = new D1(); 241 d1.sb = "D1.sb"; 242 d1.sd1 = "D1.sd1"; 243 D2 d2 = new D2(); 244 d2.pb = d1; 245 d2.sb = "D2.sb"; 246 d2.sd2 = "D2.sd2"; 247 d2.pd2 = d1; 248 d1.pb = d2; 249 d1.pd1 = d2; 250 return Task.FromResult<TestIntf_ReturnTest2Result>(new TestIntf_ReturnTest2Result(d1, d1, d2)); 251 } 252 253 public override Task<B> returnTest3Async(B p1, B p2, Ice.Current current)254 returnTest3Async(B p1, B p2, Ice.Current current) 255 { 256 return Task.FromResult<B>(p1); 257 } 258 259 public override Task<SS3> sequenceTestAsync(SS1 p1, SS2 p2, Ice.Current current)260 sequenceTestAsync(SS1 p1, SS2 p2, Ice.Current current) 261 { 262 return Task.FromResult<SS3>(new SS3(p1, p2)); 263 } 264 265 public override Task<TestIntf_DictionaryTestResult> dictionaryTestAsync(Dictionary<int, B> bin, Ice.Current current)266 dictionaryTestAsync(Dictionary<int, B> bin, Ice.Current current) 267 { 268 var bout = new Dictionary<int, B>(); 269 int i; 270 for(i = 0; i < 10; ++i) 271 { 272 B b = bin[i]; 273 var d2 = new D2(); 274 d2.sb = b.sb; 275 d2.pb = b.pb; 276 d2.sd2 = "D2"; 277 d2.pd2 = d2; 278 bout[i * 10] = d2; 279 } 280 var r = new Dictionary<int, B>(); 281 for(i = 0; i < 10; ++i) 282 { 283 string s = "D1." + (i * 20).ToString(); 284 var d1 = new D1(); 285 d1.sb = s; 286 d1.pb = (i == 0 ? null : r[(i - 1) * 20]); 287 d1.sd1 = s; 288 d1.pd1 = d1; 289 r[i * 20] = d1; 290 } 291 return Task.FromResult<TestIntf_DictionaryTestResult>(new TestIntf_DictionaryTestResult(r, bout)); 292 } 293 294 public override Task<PBase> exchangePBaseAsync(PBase pb, Ice.Current current)295 exchangePBaseAsync(PBase pb, Ice.Current current) 296 { 297 return Task.FromResult<PBase>(pb); 298 } 299 300 public override Task<Preserved> PBSUnknownAsPreservedAsync(Ice.Current current)301 PBSUnknownAsPreservedAsync(Ice.Current current) 302 { 303 PSUnknown r = new PSUnknown(); 304 r.pi = 5; 305 r.ps = "preserved"; 306 r.psu = "unknown"; 307 r.graph = null; 308 if(!current.encoding.Equals(Ice.Util.Encoding_1_0)) 309 { 310 // 311 // 1.0 encoding doesn't support unmarshaling unknown classes even if referenced 312 // from unread slice. 313 // 314 r.cl = new MyClass(15); 315 } 316 return Task.FromResult<Preserved>(r); 317 } 318 319 public override Task checkPBSUnknownAsync(Preserved p, Ice.Current current)320 checkPBSUnknownAsync(Preserved p, Ice.Current current) 321 { 322 if(current.encoding.Equals(Ice.Util.Encoding_1_0)) 323 { 324 test(!(p is PSUnknown)); 325 test(p.pi == 5); 326 test(p.ps.Equals("preserved")); 327 } 328 else 329 { 330 var pu = p as PSUnknown; 331 test(pu.pi == 5); 332 test(pu.ps.Equals("preserved")); 333 test(pu.psu.Equals("unknown")); 334 test(pu.graph == null); 335 test(pu.cl != null && pu.cl.i == 15); 336 } 337 return null; 338 } 339 340 public override Task<Preserved> PBSUnknownAsPreservedWithGraphAsync(Ice.Current current)341 PBSUnknownAsPreservedWithGraphAsync(Ice.Current current) 342 { 343 var r = new PSUnknown(); 344 r.pi = 5; 345 r.ps = "preserved"; 346 r.psu = "unknown"; 347 r.graph = new PNode(); 348 r.graph.next = new PNode(); 349 r.graph.next.next = new PNode(); 350 r.graph.next.next.next = r.graph; 351 return Task.FromResult<Preserved>(r); 352 } 353 354 public override Task checkPBSUnknownWithGraphAsync(Preserved p, Ice.Current current)355 checkPBSUnknownWithGraphAsync(Preserved p, Ice.Current current) 356 { 357 if(current.encoding.Equals(Ice.Util.Encoding_1_0)) 358 { 359 test(!(p is PSUnknown)); 360 test(p.pi == 5); 361 test(p.ps.Equals("preserved")); 362 } 363 else 364 { 365 var pu = p as PSUnknown; 366 test(pu.pi == 5); 367 test(pu.ps.Equals("preserved")); 368 test(pu.psu.Equals("unknown")); 369 test(pu.graph != pu.graph.next); 370 test(pu.graph.next != pu.graph.next.next); 371 test(pu.graph.next.next.next == pu.graph); 372 } 373 return null; 374 } 375 376 public override Task<Preserved> PBSUnknown2AsPreservedWithGraphAsync(Ice.Current current)377 PBSUnknown2AsPreservedWithGraphAsync(Ice.Current current) 378 { 379 var r = new PSUnknown2(); 380 r.pi = 5; 381 r.ps = "preserved"; 382 r.pb = r; 383 return Task.FromResult<Preserved>(r); 384 } 385 386 public override Task checkPBSUnknown2WithGraphAsync(Preserved p, Ice.Current current)387 checkPBSUnknown2WithGraphAsync(Preserved p, Ice.Current current) 388 { 389 if(current.encoding.Equals(Ice.Util.Encoding_1_0)) 390 { 391 test(!(p is PSUnknown2)); 392 test(p.pi == 5); 393 test(p.ps.Equals("preserved")); 394 } 395 else 396 { 397 var pu = p as PSUnknown2; 398 test(pu.pi == 5); 399 test(pu.ps.Equals("preserved")); 400 test(pu.pb == pu); 401 } 402 return null; 403 } 404 405 public override Task<PNode> exchangePNodeAsync(PNode pn, Ice.Current current)406 exchangePNodeAsync(PNode pn, Ice.Current current) 407 { 408 return Task.FromResult<PNode>(pn); 409 } 410 throwBaseAsBaseAsync(Ice.Current current)411 public override Task throwBaseAsBaseAsync(Ice.Current current) 412 { 413 var be = new BaseException(); 414 be.sbe = "sbe"; 415 be.pb = new B(); 416 be.pb.sb = "sb"; 417 be.pb.pb = be.pb; 418 throw be; 419 } 420 throwDerivedAsBaseAsync(Ice.Current current)421 public override Task throwDerivedAsBaseAsync(Ice.Current current) 422 { 423 DerivedException de = new DerivedException(); 424 de.sbe = "sbe"; 425 de.pb = new B(); 426 de.pb.sb = "sb1"; 427 de.pb.pb = de.pb; 428 de.sde = "sde1"; 429 de.pd1 = new D1(); 430 de.pd1.sb = "sb2"; 431 de.pd1.pb = de.pd1; 432 de.pd1.sd1 = "sd2"; 433 de.pd1.pd1 = de.pd1; 434 throw de; 435 } 436 437 public override Task throwDerivedAsDerivedAsync(Ice.Current current)438 throwDerivedAsDerivedAsync(Ice.Current current) 439 { 440 var de = new DerivedException(); 441 de.sbe = "sbe"; 442 de.pb = new B(); 443 de.pb.sb = "sb1"; 444 de.pb.pb = de.pb; 445 de.sde = "sde1"; 446 de.pd1 = new D1(); 447 de.pd1.sb = "sb2"; 448 de.pd1.pb = de.pd1; 449 de.pd1.sd1 = "sd2"; 450 de.pd1.pd1 = de.pd1; 451 throw de; 452 } 453 throwUnknownDerivedAsBaseAsync(Ice.Current current)454 public override Task throwUnknownDerivedAsBaseAsync(Ice.Current current) 455 { 456 var d2 = new D2(); 457 d2.sb = "sb d2"; 458 d2.pb = d2; 459 d2.sd2 = "sd2 d2"; 460 d2.pd2 = d2; 461 462 var ude = new UnknownDerivedException(); 463 ude.sbe = "sbe"; 464 ude.pb = d2; 465 ude.sude = "sude"; 466 ude.pd2 = d2; 467 468 throw ude; 469 } 470 throwPreservedExceptionAsync(Ice.Current current)471 public override Task throwPreservedExceptionAsync(Ice.Current current) 472 { 473 var ue = new PSUnknownException(); 474 ue.p = new PSUnknown2(); 475 ue.p.pi = 5; 476 ue.p.ps = "preserved"; 477 ue.p.pb = ue.p; 478 479 throw ue; 480 } 481 482 public override Task<Forward> useForwardAsync(Ice.Current current)483 useForwardAsync(Ice.Current current) 484 { 485 var f = new Forward(); 486 f = new Forward(); 487 f.h = new Hidden(); 488 f.h.f = f; 489 return Task.FromResult<Forward>(f); 490 } 491 } 492