public void open (SyncProperties props){ // Tell the log we are starting Log.startSync(); try { // create output file String fname = props.pathName + props.localName; FileOutputStream out = new FileOutputStream (fname); Log.AddEntry ("MyConduit: saving information to '" + fname + "'", Log.TEXT, false); // open custom database byte flags = (byte)(SyncManager.OPEN_READ | SyncManager.OPEN_WRITE | SyncManager.OPEN_EXCLUSIVE); int db = SyncManager.openDB (props.remoteNames[0], (short)0, flags); // find out how many memo records there are int count = SyncManager.getDBRecordCount (db); // create a new Record CMyRecord rec = new CMyRecord (); // Loop over all records for (int i = 0; i < count; i++) { // read next record rec.setIndex (i); SyncManager.readRecordByIndex (db, rec); // build output string. byte[] addr = rec.getBytes ("inetaddr"); String msg = "[" + i + "] **********\r\nName: " + rec.getString ("name") + "\r\nURL: " + rec.getString ("url") + "\r\nIP: " + ((int)addr[0] & 0xFF) + "." + ((int)addr[1] & 0xFF) + "." + ((int)addr[2] & 0xFF) + "." + ((int)addr[3] & 0xFF) + "\r\nPort: " + rec.getShort("port") + "\r\nLogin: " + rec.getString ("login") + "\r\n"; // print it out to file out.write(msg.getBytes()); } // close database SyncManager.closeDB (db); // close file out.flush(); out.close(); // Signal log we are successful Log.AddEntry("OK MyConduit", Log.TEXT, false); Log.endSync(); } catch (Throwable t) { // If there was an error, dump the stack trace // and tell the log the conduit failed t.printStackTrace(); Log.abortSync(); } } |