blob: 4c4c9d4cc95751b57886d13ebded5d21c7759de4 [file] [log] [blame]
/* $Id$
* 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.
*/
#ifndef ETCHSTACK_H
#define ETCHSTACK_H
#include "support/EtchStubBase.h"
#include "transport/EtchTransportData.h"
#include "transport/EtchTransportPacket.h"
#include "transport/EtchTransportMessage.h"
#include "transport/EtchPlainMailboxManager.h"
#include "transport/EtchDefaultDeliveryService.h"
#include "serialization/EtchValueFactory.h"
#include "util/EtchResources.h"
/* *
* This class serves as a container for all layers created during the setup of a new stack (connection, packetizer, messagizer, ...).
*/
class EtchStack : public EtchObject {
public:
/**
* EtchObjectType for EtchStack.
*/
static const EtchObjectType* TYPE();
/**
* Resource identifier
*/
const static EtchString& STACK();
/**
* Default Constructor
*/
EtchStack();
/**
* Default Constructor
*/
EtchStack(const EtchStack& other);
/**
* Destructor which cleans the whole stack
*/
virtual ~EtchStack();
/**
* sets the transport interface
*/
void setTransportData(EtchTransportData* transportData);
/**
* sets the packet interface
*/
void setTransportPacket(EtchTransportPacket* transportPacket);
/**
* sets the message interface
*/
void setTransportMessage(EtchTransportMessage* transportMessage);
/**
* sets the resources
*/
void setResources(EtchResources* resources);
/**
* sets the value factory
*/
void setValueFactory(EtchValueFactory* valuefactory);
/**
* sets the mailbox manager
*/
void setMailboxManager(EtchMailboxManager* mailboxmanager);
/**
* sets the delivery service
*/
void setDeliveryService(EtchDeliveryService* deliveryservice);
/**
* sets the stub implemenation
*/
void setStub(EtchSessionMessage* stub);
/**
* returns the transport interface
*/
EtchTransportData* getTransportData();
/**
* returns the packet interface
*/
EtchTransportPacket* getTransportPacket();
/**
* returns the message interface
*/
EtchTransportMessage* getTransportMessage();
/**
* returns the resources
*/
EtchResources* getResources();
/**
* returns the value factory
*/
EtchValueFactory* getValueFactory();
/**
* returns the mailbox manager
*/
EtchMailboxManager* getMailboxManager();
/**
* returns the delivery service
*/
EtchDeliveryService* getDeliveryService();
/**
* returns the stub implemenatation
*/
EtchSessionMessage* getStub();
private:
EtchTransportData* mTransportData;
EtchTransportPacket* mTransportPacket;
EtchTransportMessage* mTransportMessage;
EtchResources* mResources;
EtchValueFactory* mValueFactory;
EtchMailboxManager* mMailboxManager;
EtchDeliveryService* mDeliveryService;
EtchSessionMessage* mStub;
};
#endif /* ETCHSTACK_H */