CodingExample1.java


public class MyOutDeltaOberver implements SyncBoOutDeltaObserver {

    public SyncBoDescriptor[] observeSyncBoTypes() {

        SyncBoDescriptorIterator itr = SmartSyncRuntime.getInstance().getSyncBoDescriptorFacade().getAllSyncBoDescriptors();

        Vector syncBos = new Vector();
        while (itr.hasNext()) {
            syncBos.addElement(itr.next());
        }

        SyncBoDescriptor[] syncBoArray = new SyncBoDescriptor[syncBos.size()];
        for (int i = 0; i < syncBos.size(); i++) {
            syncBoArray[i] = (SyncBoDescriptor) syncBos.elementAt(i);
        }

        return syncBoArray;
    }

    public void sendingSyncBoOutDelta(SyncBoOutDelta syncBoOutDelta) {
        System.out.println(syncBoOutDelta.toString());

        // send all the out data using synchronous mode
        syncBoOutDelta.setSendType(SyncBoOutDeltaSendType.SEND_DIRECT);
    }

}

public class MyMessageHandler implements MessageReplyObserver {

    public MessageReplyType[] observeMessageReplyTypes() {
        MessageReplyType[] reply = new MessageReplyType[2];
        reply[0] = MessageReplyType.SYNC_BEGIN;
        reply[1] = MessageReplyType.SYNC_END;
        return reply;
    }

    public void messageReplyReceived(MessageReply messageReply) {
        if (messageReply.getType() == MessageReplyType.SYNC_BEGIN) {
            // do pre-synchronization task here
            MeIterator itr = SmartSyncRuntime.getInstance().getSyncBoDeltaRequestFacade(VisibilityType.SEPARATED).getAllSyncBoDeltaRequests();
            while (itr.hasNext()) {
                SyncBoDeltaRequest request = (SyncBoDeltaRequest) itr.next();
                if (request.getSyncBoDescriptor().getSyncProcessing() != SyncProcessingType.UPLOAD) {
                    request.setProcessing(SyncBoDeltaRequestType.DIRECT_REQUEST);
                }
            }
        } else if (messageReply.getType() == MessageReplyType.SYNC_END) {
            // do post-synchronization task here
        }
    }
}