Upcall.ccn_upcall_res PublishState(IntPtr selfp, Upcall.ccn_upcall_kind kind, IntPtr info) { print("Publish State..."); return(Upcall.ccn_upcall_res.CCN_UPCALL_RESULT_OK); }
Upcall.ccn_upcall_res WriteCallback(IntPtr selfp, Upcall.ccn_upcall_kind kind, IntPtr info) { print("WriteCallback... " + kind); Upcall.ccn_upcall_res ret = Upcall.ccn_upcall_res.CCN_UPCALL_RESULT_OK; Egal.ccn_upcall_info Info = new Egal.ccn_upcall_info(); Info = (Egal.ccn_upcall_info)Marshal.PtrToStructure(info, typeof(Egal.ccn_upcall_info)); IntPtr h = Info.h; Egal.ccn_closure Selfp = new Egal.ccn_closure(); Selfp = (Egal.ccn_closure)Marshal.PtrToStructure(selfp, typeof(Egal.ccn_closure)); NormalStruct Data = new NormalStruct(); Data = (NormalStruct)Marshal.PtrToStructure(Selfp.data, typeof(NormalStruct)); switch (kind) { case Upcall.ccn_upcall_kind.CCN_UPCALL_FINAL: // Marshal.FreeHGlobal(selfp); // this again, will make Unity crash break; case Upcall.ccn_upcall_kind.CCN_UPCALL_INTEREST: PutContent(h, Data); // publish content ret = Upcall.ccn_upcall_res.CCN_UPCALL_RESULT_INTEREST_CONSUMED; break; case Upcall.ccn_upcall_kind.CCN_UPCALL_CONTENT: // repo first returns a content... // this is info of the repo... break; default: ret = Upcall.ccn_upcall_res.CCN_UPCALL_RESULT_ERR; break; } // print ("ref count: " + Selfp.refcount); // print ("WriteCallback returnning..." + ret); return(ret); }