OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [src_c/] [synfull/] [pronoc-interface/] [netstream/] [socketstream.unix_h] - Rev 54

Compare with Previous | Blame | View Log

/*
 * socketstream.h
 *
 *  Created on: Dec 14, 2009
 *      Author: sam
 */

#ifndef SOCKETSTREAM_H_
#define SOCKETSTREAM_H_

#include <iostream>

#include <unistd.h>
#include <sys/types.h>
#include <sys/un.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/tcp.h>

#include <cstring>

#define NS_DEBUG
// #define NS_DEBUG_EXTRA
#define NS_MAX_PENDING 1
#define NS_HOST "local"
#define NS_PORT 0

using namespace std;

class SocketStream
{
public:
        int so; // the socket
        struct sockaddr_un addr;
        bool bIsAlive;

public:

        SocketStream() : so(-1), bIsAlive(false)
        {
        }

        // create from an existing socket
        SocketStream(int sock) : so(sock), bIsAlive(true)
        {
        }

        ~SocketStream()
        {
                if (so != -1)
                {
                        close(so);
                }
        }

        SocketStream(int sock, struct sockaddr *in_addr, socklen_t in_addrlen)
        {
                so = sock;
                bIsAlive = true;
                memcpy(&addr, in_addr, in_addrlen);
        }

        int listen(const char *host, int port);

        SocketStream* accept();

        int connect(const char *host, int port);

    // read from the socket
    int get(void *data, int number);

    // write to socket
    int put(const void *data, int number);

        bool isAlive()
        {
                return bIsAlive;
        }

};

#endif /* SOCKETSTREAM_H_ */

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.