/** * Copy information from SPI into Mongo {@link Document}. * * @param source * @param target * @param isNested */ public static void toDocument(IDeviceStreamData source, Document target, boolean isNested) { MongoDeviceEvent.toDocument(source, target, isNested); target.append(PROP_STREAM_ID, source.getStreamId()); target.append(PROP_SEQUENCE_NUMBER, source.getSequenceNumber()); target.append(PROP_DATA, source.getData()); }
svtResponse.getOutputStream().write(chunk.getData()); } catch (IOException e) { throw new SiteWhereException("Unable to write device stream data chunk.", e);
if (!current.getStreamId().equals(streamId)) { continue; current.getSequenceNumber()));
@Override public int compare(IDeviceStreamData o1, IDeviceStreamData o2) { return o1.getSequenceNumber().compareTo(o2.getSequenceNumber()); } });
sdata.setId(event.getId());
for (IDeviceStreamData chunk : data.getResults()) { try { svtResponse.getOutputStream().write(chunk.getData()); } catch (IOException e) { LOGGER.error("Error writing chunk to servlet output stream.", e);
public byte[] encodeDeviceStreamData(IDeviceStreamData streamData) throws SiteWhereException { try { ProtobufMarshaler.DeviceStreamData.Builder builder = ProtobufMarshaler.DeviceStreamData.newBuilder(); builder.setStreamId(streamData.getStreamId()); builder.setSequenceNumber(streamData.getSequenceNumber()); builder.setData(ByteString.copyFrom(streamData.getData())); builder.setEventData(createDeviceEventData(streamData)); ProtobufMarshaler.DeviceStreamData pb = builder.build(); ByteArrayOutputStream out = new ByteArrayOutputStream(); pb.writeTo(out); return out.toByteArray(); } catch (IOException e) { throw new SiteWhereException("Unable to marshal device alert.", e); } }
@Override public void handleSendDeviceStreamDataRequest(String hardwareId, ISendDeviceStreamDataRequest request) throws SiteWhereException { IDeviceAssignment assignment = getCurrentAssignment(hardwareId); IDeviceStreamData data = SiteWhere.getServer().getDeviceEventManagement(getTenant()) .getDeviceStreamData(assignment.getToken(), request.getStreamId(), request.getSequenceNumber()); SendDeviceStreamDataCommand command = new SendDeviceStreamDataCommand(); command.setStreamId(request.getStreamId()); command.setSequenceNumber(request.getSequenceNumber()); command.setHardwareId(hardwareId); if (data != null) { command.setData(data.getData()); } else { command.setData(new byte[0]); } SiteWhere.getServer().getDeviceCommunication(getTenant()).deliverSystemCommand(hardwareId, command); }