blob: d8ea13069a8387cb3058db8347e00831011739db [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 __ETCHSERVERSOCKET_H__
#define __ETCHSERVERSOCKET_H__
#include "capu/os/ServerSocket.h"
#include "capu/os/Socket.h"
#include "common/EtchSocket.h"
class EtchServerSocket : public EtchObject {
public:
/**
* EtchObjectType for EtchServerSocket.
*/
static const EtchObjectType* TYPE();
/**
* Default Constructor
*/
EtchServerSocket();
/**
* Copy Constructor
*/
EtchServerSocket(const EtchServerSocket& other);
/**
* Destructor
*/
virtual ~EtchServerSocket();
/**
* The program flow will be blocked until a connection arrives
* Programmer is responsible for deallocating memory of returning socket.
* @return Socket if a connection is accepted
* NULL otherwise
*/
EtchSocket* accept();
/**
* Close the socket which is used for accepting connection
* @return ETCH_OK if the socket is successfully closed
* ETCH_SOCKET_ESOCKET if the socket is not created
*/
status_t close();
/**
*
* @param port indicates port number
* @param address to bind if it is not given it accepts all connection from any address
* @return ETCH_OK if the server socket is successfully bound
* ETCH_SOCKET_EADDR if the addr is faulty
* ETCH_ERROR if the socket is already bound
* ETCH_EINVAL if the addr is NULL or port is equal to 0
* ETCH_SOCKET_ESOCKET if the socket is not created
*/
status_t bind(capu::uint16_t port, const char * addr = NULL);
/**
*
* @param backlog (maximum length of the queue of pending connections)
* @return ETCH_OK if the listen is successful
* ETCH_SOCKET_ESOCKET if the socket is not created
* ETCH_ERROR otherwise
*/
status_t listen(capu::uint8_t backlog);
private:
capu::ServerSocket mServerSocket;
};
#endif /* ETCHSERVERSOCKET_H */