1ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall/*
2ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* Copyright (C) 2011 The Android Open Source Project
3ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall*
4ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* Licensed under the Apache License, Version 2.0 (the "License");
5ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* you may not use this file except in compliance with the License.
6ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* You may obtain a copy of the License at
7ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall*
8ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* http://www.apache.org/licenses/LICENSE-2.0
9ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall*
10ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* Unless required by applicable law or agreed to in writing, software
11ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* distributed under the License is distributed on an "AS IS" BASIS,
12ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* See the License for the specific language governing permissions and
14ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall* limitations under the License.
15ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall*/
16ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#include <stdio.h>
17ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#include <stdlib.h>
18ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#include <unistd.h>
19ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#include <string.h>
20ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#include "codec_defs.h"
21ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#include "RenderingThread.h"
22ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#include "TcpStream.h"
23ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#ifndef _WIN32
24ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#include "UnixStream.h"
25ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#endif
26ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall
27ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall
28ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hallint main(int argc, char **argv)
29ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall{
30ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#ifdef _WIN32
31ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall    TcpStream *socket = new TcpStream();
32ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall
33ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall    if (socket->listen(CODEC_SERVER_PORT) < 0) {
34ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall        perror("listen");
35ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall        exit(1);
36ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall    }
37ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#else
38ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall    UnixStream *socket = new UnixStream();
39ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall
40ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall    if (socket->listen(CODEC_SERVER_PORT) < 0) {
41ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall        perror("listen");
42ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall        exit(1);
43ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall    }
44ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall#endif
45ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall
46ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall    printf("waiting for client connection on port: %d\n", CODEC_SERVER_PORT);
47ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall    while (1) {
48ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall        // wait for client connection
49ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall        SocketStream  *glStream = socket->accept();
50ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall        if (glStream == NULL) {
51ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall            printf("failed to get client.. aborting\n");
52ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall            exit(3);
53ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall        }
54ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall        printf("Got client connection, creating a rendering thread;\n");
55ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall        // create a thread to handle this connection
56ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall        RenderingThread *rt = new RenderingThread(glStream);
57ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall        rt->start();
58ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall    }
59ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall
60ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall    return 0;
61ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall}
62ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall
63ce6c3389061fb9fcdefc94fab2044a8e11600b52Jesse Hall
64