1//
2// Copyright (c) ZeroC, Inc. All rights reserved.
3//
4
5#import <objc/Ice.h>
6#import <optional/TestI.h>
7#import <TestCommon.h>
8
9static int
10run(id<ICECommunicator> communicator)
11{
12    [[communicator getProperties] setProperty:@"TestAdapter.Endpoints" value:@"default -p 12010"];
13    id<ICEObjectAdapter> adapter = [communicator createObjectAdapter:@"TestAdapter"];
14    ICEObject* object = [InitialI initial];
15    [adapter add:object identity:[ICEUtil stringToIdentity:@"initial"]];
16    [adapter activate];
17
18    serverReady(communicator);
19
20    [communicator waitForShutdown];
21    return EXIT_SUCCESS;
22}
23
24#if TARGET_OS_IPHONE
25#  define main optionalServer
26#endif
27
28int
29main(int argc, char* argv[])
30{
31#ifdef ICE_STATIC_LIBS
32    ICEregisterIceSSL(YES);
33    ICEregisterIceWS(YES);
34#if TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
35    ICEregisterIceIAP(YES);
36#endif
37#endif
38
39    int status;
40    @autoreleasepool
41    {
42        id<ICECommunicator> communicator = nil;
43        @try
44        {
45            ICEInitializationData* initData = [ICEInitializationData initializationData];
46            initData.properties = defaultServerProperties(&argc, argv);
47#if TARGET_OS_IPHONE
48            initData.prefixTable_ = [NSDictionary dictionaryWithObjectsAndKeys:
49                                      @"TestOptional", @"::Test",
50                                      nil];
51#endif
52            communicator = [ICEUtil createCommunicator:&argc argv:argv initData:initData];
53            status = run(communicator);
54        }
55        @catch(ICEException* ex)
56        {
57            tprintf("%@\n", ex);
58            status = EXIT_FAILURE;
59        }
60
61        if(communicator)
62        {
63            [communicator destroy];
64        }
65    }
66    return status;
67}
68