Esempio n. 1
0
 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);
 }
Esempio n. 2
0
    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);
    }