Subversion Repository Public Repository

litesoft

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt
package org.litesoft.peertopeer.nonpublic.server;

import java.io.*;
import java.net.*;

import org.litesoft.commonfoundation.typeutils.*;
import org.litesoft.logger.*;
import org.litesoft.peertopeer.nonpublic.peermanagement.*;

public class PeerServer implements P2PConstants
{
    public static final Logger LOGGER = LoggerFactory.getLogger( PeerServer.class );

    private ServerSocket mServerSocket = null;

    public InetAddress getOurServerAddress()
            throws IOException
    {
        return InetAddress.getLocalHost();
    }

    public int getOurServerPort()
            throws IOException
    {
        return getSocket().getLocalPort();
    }

    private synchronized ServerSocket getSocket()
            throws IOException
    {
        for ( int i = BASE_SERVER_PORT; mServerSocket == null; i++ )
        {
            try
            {
                mServerSocket = new ServerSocket( i );
            }
            catch ( BindException e )
            {
                // Expected...
            }
        }
        return mServerSocket;
    }

    public void start( PeerConnectionHandlerFactory pConnectionHandlerFactory )
    {
        Objects.assertNotNull( "PeerConnectionHandlerFactory", pConnectionHandlerFactory );

        OurServer zServer = new OurServer( getClass().getName(), pConnectionHandlerFactory );
        zServer.start();
        zServer.waitForRunning();
    }

    private class OurServer extends Thread
    {
        private final PeerConnectionHandlerFactory mConnectionHandlerFactory;

        public OurServer( String pName, PeerConnectionHandlerFactory pConnectionHandlerFactory )
        {
            super( pName );
            mConnectionHandlerFactory = pConnectionHandlerFactory;
            setDaemon( true );
        }

        public synchronized void waitForRunning()
        {
            while ( !mRunning )
            {
                try
                {
                    wait();
                }
                catch ( InterruptedException e )
                {
                    // Whatever...
                }
            }
        }

        private boolean mRunning = false;

        private synchronized void notifyRunning()
        {
            mRunning = true;
            notifyAll();
        }

        @Override
        public void run()
        {
            notifyRunning();
            System.out.println( "Accepting Peer connections on port: " + mServerSocket.getLocalPort() );
            //noinspection InfiniteLoopStatement
            while ( true )
            {
                try
                {
                    Socket zSocket = mServerSocket.accept();
                    mConnectionHandlerFactory.handleNewConnectionWithPossiblePeer( zSocket );
                }
                catch ( IOException e )
                {
                    LOGGER.error.log( e );
                }
            }
        }
    }
}

Commits for litesoft/trunk/Java/core/Server/src/org/litesoft/peertopeer/nonpublic/server/PeerServer.java

Diff revisions: vs.
Revision Author Commited Message
939 Diff Diff GeorgeS picture GeorgeS Mon 02 Jun, 2014 21:30:31 +0000

Extracting commonfoundation

804 Diff Diff GeorgeS picture GeorgeS Wed 15 Aug, 2012 12:48:51 +0000
49 Diff Diff GeorgeS picture GeorgeS Mon 12 Apr, 2010 02:59:10 +0000

License Text

24 Diff Diff GeorgeS picture GeorgeS Wed 24 Feb, 2010 01:51:38 +0000
2 GeorgeS picture GeorgeS Sun 07 Feb, 2010 12:50:58 +0000