All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.caucho.protocols.flash.SocketPolicyRequest Maven / Gradle / Ivy

package com.caucho.protocols.flash;

import java.io.*;

import com.caucho.network.listen.ProtocolConnection;
import com.caucho.network.listen.SocketLink;
import com.caucho.server.cluster.ServletService;
import com.caucho.server.dispatch.InvocationServer;
import com.caucho.server.http.HttpRequest;
import com.caucho.vfs.*;
import com.caucho.util.*;

public class SocketPolicyRequest extends HttpRequest
{
  private final static L10N L = new L10N(SocketPolicyRequest.class);
  
  private final Path _policy;
  private final SocketLink _connection;

  public SocketPolicyRequest(ServletService server,
                             SocketLink connection,
                             Path policy)
  {
    super(server, connection);
    
    _policy = policy;
    _connection = connection;
  }

  /**
   * Initialize the connection.  At this point, the current thread is the
   * connection thread.
   */
  public void init()
  {
    super.init();
  }
  
  /**
   * Handles a new connection.  The controlling TcpServer may call
   * handleConnection again after the connection completes, so 
   * the implementation must initialize any variables for each connection.
   */
  public boolean handleRequest() 
    throws IOException
  {
    ReadStream is = _connection.getReadStream();

    int ch = is.read();

    if (ch == '<') {
      OutputStream out = _connection.getWriteStream();
      _policy.writeToStream(out);
      out.write(0); // null byte required
      out.flush();

      return false;
    }
    else {
      is.unread();

      return super.handleRequest();
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy