public AMFMessagingChannel(Transport transport, Configuration configuration, String id, URI uri) { super(new AMF3MessagingCodec(configuration), transport, id, uri); } }
@Override public void encode(Message[] messages, OutputStream output) throws IOException { SimpleGraniteContext.createThreadInstance(config.getGraniteConfig(), config.getServicesConfig(), new HashMap<String, Object>(0), getClientType().toString()); try { AMF3Serializer serializer = new AMF3Serializer(output); serializer.writeObject(messages); serializer.close(); } finally { GraniteContext.release(); } }
@Override public void encode(Message[] messages, OutputStream output) throws IOException { SimpleGraniteContext.createThreadInstance(config.getGraniteConfig(), config.getServicesConfig(), new HashMap<String, Object>(0), getClientType().toString()); try { AMF3Serializer serializer = new AMF3Serializer(output); serializer.writeObject(messages); serializer.close(); } finally { GraniteContext.release(); } }
@Override public void encode(Message[] messages, OutputStream output) throws IOException { SimpleGraniteContext.createThreadInstance(config.getGraniteConfig(), config.getServicesConfig(), new HashMap<String, Object>(0), getClientType().toString()); try { AMF3Serializer serializer = new AMF3Serializer(output); serializer.writeObject(messages); serializer.close(); } finally { GraniteContext.release(); } }
@SuppressWarnings("unchecked") @Override protected <M> MessagingCodec<M> newMessagingCodec(Class<M> messageClass) { if (messageClass == flex.messaging.messages.Message[].class) return (MessagingCodec<M>)new AMF3MessagingCodec(defaultConfiguration); else if (messageClass == AMF0Message.class) return (MessagingCodec<M>)new AMF0MessagingCodec(defaultConfiguration); throw new IllegalArgumentException("Unknown message class " + messageClass); }
@Override public Message[] decode(InputStream input) throws IOException { SimpleGraniteContext.createThreadInstance(config.getGraniteConfig(), config.getServicesConfig(), new HashMap<String, Object>(0), getClientType().toString()); try { AMF3Deserializer deserializer = new AMF3Deserializer(input); Object[] objects = (Object[])deserializer.readObject(); deserializer.close(); if (objects != null) { Message[] messages = new Message[objects.length]; System.arraycopy(objects, 0, messages, 0, objects.length); for (Message message : messages) { if (message != null && Boolean.TRUE.equals(message.getHeader(Channel.BYTEARRAY_BODY_HEADER))) { byte[] body = (byte[])message.getBody(); deserializer = new AMF3Deserializer(new ByteArrayInputStream(body)); message.setBody(deserializer.readObject()); deserializer.close(); } } return messages; } return new Message[0]; } finally { GraniteContext.release(); } } }
@SuppressWarnings("unchecked") @Override protected <M> MessagingCodec<M> newMessagingCodec(Class<M> messageClass) { if (messageClass == flex.messaging.messages.Message[].class) return (MessagingCodec<M>)new AMF3MessagingCodec(defaultConfiguration); else if (messageClass == AMF0Message.class) return (MessagingCodec<M>)new AMF0MessagingCodec(defaultConfiguration); throw new IllegalArgumentException("Unknown message class " + messageClass); }
@Override public Message[] decode(InputStream input) throws IOException { SimpleGraniteContext.createThreadInstance(config.getGraniteConfig(), config.getServicesConfig(), new HashMap<String, Object>(0), getClientType().toString()); try { AMF3Deserializer deserializer = new AMF3Deserializer(input); Object[] objects = (Object[])deserializer.readObject(); deserializer.close(); if (objects != null) { Message[] messages = new Message[objects.length]; System.arraycopy(objects, 0, messages, 0, objects.length); for (Message message : messages) { if (message != null && Boolean.TRUE.equals(message.getHeader(Channel.BYTEARRAY_BODY_HEADER))) { byte[] body = (byte[])message.getBody(); deserializer = new AMF3Deserializer(new ByteArrayInputStream(body)); message.setBody(deserializer.readObject()); deserializer.close(); } } return messages; } return new Message[0]; } finally { GraniteContext.release(); } } }
@Override public Message[] decode(InputStream input) throws IOException { SimpleGraniteContext.createThreadInstance(config.getGraniteConfig(), config.getServicesConfig(), new HashMap<String, Object>(0), getClientType().toString()); try { AMF3Deserializer deserializer = new AMF3Deserializer(input); Object[] objects = (Object[])deserializer.readObject(); deserializer.close(); if (objects != null) { Message[] messages = new Message[objects.length]; System.arraycopy(objects, 0, messages, 0, objects.length); for (Message message : messages) { if (message != null && Boolean.TRUE.equals(message.getHeader(Channel.BYTEARRAY_BODY_HEADER))) { byte[] body = (byte[])message.getBody(); deserializer = new AMF3Deserializer(new ByteArrayInputStream(body)); message.setBody(deserializer.readObject()); deserializer.close(); } } return messages; } return new Message[0]; } finally { GraniteContext.release(); } } }