View Javadoc
1   /*
2    * junixsocket
3    *
4    * Copyright 2009-2024 Christian Kohlschütter
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  package org.newsclub.net.unix.demo.client;
19  
20  import java.io.IOException;
21  import java.net.Socket;
22  import java.net.SocketAddress;
23  
24  import org.newsclub.net.unix.AFSocketAddress;
25  import org.newsclub.net.unix.AFUNIXSocket;
26  
27  /**
28   * An {@link AFUNIXSocket} client that's just good for demo purposes.
29   *
30   * @author Christian Kohlschütter
31   */
32  abstract class DemoClientBase {
33    private Socket socket;
34  
35    public void close() throws IOException {
36      if (socket != null) {
37        socket.close();
38      }
39    }
40  
41    public void connect(SocketAddress endpoint) throws IOException {
42      System.out.println("Connect " + this + " to " + endpoint);
43      if (endpoint instanceof AFSocketAddress) {
44        socket = ((AFSocketAddress) endpoint).getAddressFamily().newSocket();
45      } else {
46        socket = new Socket();
47      }
48      socket.connect(endpoint);
49  
50      handleSocket(socket);
51    }
52  
53    @SuppressWarnings("hiding")
54    protected abstract void handleSocket(Socket socket) throws IOException;
55  }