Package org.protowar

Source Code of org.protowar.ProtoServerHandler

package org.protowar;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import serializers.ObjectSerializer;
import serializers.ProtobufSerializer;
import serializers.protobuf.MediaContentHolder.MediaContent;
import serializers.protobuf.MediaContentHolder.MediaServer;

import com.google.protobuf.Message;
import com.google.protobuf.RpcCallback;
import com.google.protobuf.RpcController;
import com.google.protobuf.Descriptors.MethodDescriptor;

class ProtoServerHandler extends MediaServer
{
  private final ObjectSerializer<MediaContent> _serializer = new ProtobufSerializer();

  @Override
  public void updateMedia (RpcController controller, MediaContent request, RpcCallback<MediaContent> done)
  {
    try
    {
      //System.out.println(request.getMedia().getUri());
      done.run(_serializer.create());
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }

  void handle(final OutputStream os, final InputStream is) throws IOException
  {
    RpcCallback<Message> done = new RpcCallback<Message>()
    {
      DataOutputStream dos = new DataOutputStream(os);

      public void run (Message content)
      {
        try
        {
          byte[] array = _serializer.serialize((MediaContent) content);
          dos.writeInt(array.length);
          dos.write(array);
          dos.flush();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      }
    };
    DataInputStream dis = new DataInputStream(is);
    int index = dis.readInt();
    MethodDescriptor method = getDescriptor().getMethods().get(index);
    byte[] array = new byte[dis.readInt()];
    dis.readFully(array);
    Message request = getRequestPrototype(method).newBuilderForType().mergeFrom(array).build();
    callMethod(method, null, request, done);
  }
}
TOP

Related Classes of org.protowar.ProtoServerHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.