Get Started
 
/* initialize a memory allocator */ m_act = new NonVolatileMemAllocator( Utils.getNonVolatileMemoryAllocatorService("pmalloc"), 1024 * 1024 * 1024L, "./pobj_hashmaps.dat", true); /* prepare generic types in order as an array for durable map you can specify any durable type here e.g. durable object, durable buffer/chunk, durable list/map/set */ DurableType gtypes[] = {DurableType.STRING, DurableType.INTEGER}; /* create a new durable map through durable map factory, the durable map store your objects on external memory-class storage with no need to do serialization at all */ DurableHashMap<String, Integer> map = DurableHashMapFactory.create( m_act, null, gtypes, mInitialCapacity, false); /* fetch the handler of the durable map, it is just a long type value. it is used for restore this durable map back later, you can put this handler anywhere you like e.g. durable key-value store, durable buffer */ Long handler = map.getHandler(); /* use this durable map as usual */ Integer val = map.put("hello", 1); AssertJUnit.assertNull(val); val = map.put("hello", 3); AssertJUnit.assertEquals(1, val.intValue()); val = map.put("world", 2); AssertJUnit.assertNull(val); val = map.remove("world"); AssertJUnit.assertEquals(2, val.intValue()); /* restore the same durable map from the stored handler with no need to do de-serializatoin */ DurableHashMap<String, Integer> restoredMap = DurableHashMapFactory.restore( m_act, null, gtypes, handler, false); val = restoredMap.get("hello"); AssertJUnit.assertEquals(3, val.intValue()); val = restoredMap.get("world"); AssertJUnit.assertNull(val); val = restoredMap.get("test"); AssertJUnit.assertNull(val);
 
/* get sort service instance */ GeneralComputingService gcsvr = Utils.getGeneralComputingService("sort"); /* instantiate a value info object */ ValueInfo vinfo = new ValueInfo(); /* instantiate an object stack list */ List<long[][]> objstack = new ArrayList<long[][]>(); /* fill it up with durable object info in order */ objstack.add(this.ostack); /* configure the field id info stack to specify which field value need to be sorted */ long[][] fidinfostack = { {2L, 1L} }; /* assign the handler of a durable list to vinfo.handler */ vinfo.handler = this.head; /* set a translate table from handler's memory allocator */ vinfo.transtable = m_act.getTranslateTable(); /* specify the durable type of value */ vinfo.dtype = DurableType.LONG; /* generate an array of frame from object info stack and field info stack */ vinfo.frames = Utils.genNativeParamForm(objstack, fidinfostack); /* wrap a set of value info as an array */ ValueInfo[] vinfos = {vinfo}; /* perform the sorting operation, the durable list and its value are not marshaled or un-marshaled across native boundary */ long[] ret = gcsvr.perform("1dlong_bubble", vinfos); /* return the handler of new head of sorted durable list */ this.head = ret[0];