/*
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 */


// This file automatically generated by:
//   Apache Etch 1.1.0-incubating (LOCAL-0) / c 1.1.0-incubating (LOCAL-0)
//   Fri Aug 28 15:58:20 CEST 2009
// This file is automatically created and should not be edited!

#ifndef HELLOWORLD_SERVER_IMPL_H
#define HELLOWORLD_SERVER_IMPL_H

#include "helloworld_server.h"
#include "etch_transport.h"

#ifdef __cplusplus
extern "C" {
#endif

extern unsigned short CLASSID_HELLOWORLD_SERVER_IMPL;

//typedef struct helloworld_remote_client helloworld_remote_client;

/**
 * helloworld_server_impl
 * your custom implementation of helloworld_server. add methods here 
 * to provide implementations of messages from the client, if any.
 */
typedef struct helloworld_server_impl
{
    etch_object object;  

    i_helloworld_server* helloworld_server_base; /* owned */
    i_helloworld* ihelloworld; /* not owned */
    struct helloworld_remote_client* client; /* not owned */

    int (*destroyex) (void*);  /* user memory destructor */

    /* - - - - - - - - - - - -
     * objsession
     * - - - - - - - - - - - -
     */
    i_objsession* iobjsession;  /* owned by base */
    /* note that iobjsession->thisx is set to this helloworld_server_impl* */
    etch_session_control _session_control;
    etch_session_notify  _session_notify;
    etch_session_query   _session_query;

} helloworld_server_impl;

/* constructor */
helloworld_server_impl* new_helloworld_server_impl (struct helloworld_remote_client*);

#ifdef __cplusplus
} //extern "C"
#endif

#endif /* HELLOWORLD_SERVER_IMPL_H */
